From e82b30bf8d67ae4016b4d6bcbe196e262cdc08e8 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 16 Nov 2019 11:52:39 -0800 Subject: [PATCH 001/311] Update dependencies. --- API.md | 1332 +++++++++++++++++++++++++++-------------------------- yarn.lock | 115 ++--- 2 files changed, 729 insertions(+), 718 deletions(-) diff --git a/API.md b/API.md index 9bc9a5dfb8b88b..e39309d6264a9f 100644 --- a/API.md +++ b/API.md @@ -207,27 +207,27 @@ Group data into arbitrary hierarchies. * [*nest*.object](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_object) - generate the nest, returning an associative array. * [*nest*.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_entries) - generate the nest, returning an array of key-values tuples. -## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v1.3.0) +## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v1.4.0) Color manipulation and color space conversion. -* [d3.color](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color) - parse the given CSS color specifier. -* [*color*.copy](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_copy) - return a copy of this color. -* [*color*.rgb](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_rgb) - compute the RGB equivalent of this color. -* [*color*.brighter](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_brighter) - create a brighter copy of this color. -* [*color*.darker](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_darker) - create a darker copy of this color. -* [*color*.displayable](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. -* [*color*.formatHex](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. -* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_formatHsl) - returns the RGB string representation of this color. -* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_formatRgb) - returns the HSL string representation of this color. -* [*color*.toString](https://github.com/d3/d3-color/blob/v1.3.0/README.md#color_toString) - returns the RGB string representation of this color. -* [d3.rgb](https://github.com/d3/d3-color/blob/v1.3.0/README.md#rgb) - create a new RGB color. -* [d3.hsl](https://github.com/d3/d3-color/blob/v1.3.0/README.md#hsl) - create a new HSL color. -* [d3.lab](https://github.com/d3/d3-color/blob/v1.3.0/README.md#lab) - create a new Lab color. -* [d3.hcl](https://github.com/d3/d3-color/blob/v1.3.0/README.md#hcl) - create a new HCL color. -* [d3.lch](https://github.com/d3/d3-color/blob/v1.3.0/README.md#lch) - create a new HCL color. -* [d3.gray](https://github.com/d3/d3-color/blob/v1.3.0/README.md#gray) - create a new Lab gray. -* [d3.cubehelix](https://github.com/d3/d3-color/blob/v1.3.0/README.md#cubehelix) - create a new Cubehelix color. +* [d3.color](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color) - parse the given CSS color specifier. +* [*color*.copy](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_copy) - return a copy of this color. +* [*color*.rgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.brighter](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_brighter) - create a brighter copy of this color. +* [*color*.darker](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_darker) - create a darker copy of this color. +* [*color*.displayable](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. +* [*color*.formatHex](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. +* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatHsl) - returns the RGB string representation of this color. +* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatRgb) - returns the HSL string representation of this color. +* [*color*.toString](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_toString) - returns the RGB string representation of this color. +* [d3.rgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#rgb) - create a new RGB color. +* [d3.hsl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#hsl) - create a new HSL color. +* [d3.lab](https://github.com/d3/d3-color/blob/v1.4.0/README.md#lab) - create a new Lab color. +* [d3.hcl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#hcl) - create a new HCL color. +* [d3.lch](https://github.com/d3/d3-color/blob/v1.4.0/README.md#lch) - create a new HCL color. +* [d3.gray](https://github.com/d3/d3-color/blob/v1.4.0/README.md#gray) - create a new Lab gray. +* [d3.cubehelix](https://github.com/d3/d3-color/blob/v1.4.0/README.md#cubehelix) - create a new Cubehelix color. ## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v1.5.0) @@ -343,99 +343,105 @@ Compute contour polygons using marching squares. * [density.bandwidth](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_bandwidth) - * [density.weight](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_weight) - -## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v1.0.5) +## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v1.0.6) Separate concerns using named callbacks. -* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v1.0.5/README.md#dispatch) - create a custom event dispatcher. -* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v1.0.5/README.md#dispatch_on) - register or unregister an event listener. -* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v1.0.5/README.md#dispatch_copy) - create a copy of a dispatcher. -* [*dispatch*.*call*](https://github.com/d3/d3-dispatch/blob/v1.0.5/README.md#dispatch_call) - dispatch an event to registered listeners. -* [*dispatch*.*apply*](https://github.com/d3/d3-dispatch/blob/v1.0.5/README.md#dispatch_apply) - dispatch an event to registered listeners. +* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch) - create a custom event dispatcher. +* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_on) - register or unregister an event listener. +* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_copy) - create a copy of a dispatcher. +* [*dispatch*.*call*](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_call) - dispatch an event to registered listeners. +* [*dispatch*.*apply*](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_apply) - dispatch an event to registered listeners. -## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v1.2.4) +## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v1.2.5) Drag and drop SVG, HTML or Canvas using mouse or touch input. -* [d3.drag](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag) - create a drag behavior. -* [*drag*](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#_drag) - apply the drag behavior to a selection. -* [*drag*.container](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_container) - set the coordinate system. -* [*drag*.filter](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_filter) - ignore some initiating input events. -* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_touchable) - set the touch support detector. -* [*drag*.subject](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_subject) - set the thing being dragged. -* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_clickDistance) - set the click distance threshold. -* [*drag*.on](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#drag_on) - listen for drag events. -* [*event*.on](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#event_on) - listen for drag events on the current gesture. -* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#dragDisable) - prevent native drag-and-drop and text selection. -* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v1.2.4/README.md#dragEnable) - enable native drag-and-drop and text selection. +* [d3.drag](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag) - create a drag behavior. +* [*drag*](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#_drag) - apply the drag behavior to a selection. +* [*drag*.container](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_container) - set the coordinate system. +* [*drag*.filter](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_filter) - ignore some initiating input events. +* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_touchable) - set the touch support detector. +* [*drag*.subject](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_subject) - set the thing being dragged. +* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_clickDistance) - set the click distance threshold. +* [*drag*.on](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_on) - listen for drag events. +* [*event*.on](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#event_on) - listen for drag events on the current gesture. +* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#dragDisable) - prevent native drag-and-drop and text selection. +* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#dragEnable) - enable native drag-and-drop and text selection. -## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v1.1.1) +## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v1.2.0) Parse and format delimiter-separated values, most commonly CSV and TSV. -* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. -* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsv_parse) - parse the given string, returning an array of objects. -* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsv_parseRows) - parse the given string, returning an array of rows. -* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsv_format) - format the given array of objects. -* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsv_formatBody) - format the given array of objects. -* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#dsv_formatRows) - format the given array of rows. -* [d3.autoType](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#autoType) - automatically infer value types for the given object. -* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#csvParse) - parse the given CSV string, returning an array of objects. -* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. -* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#csvFormat) - format the given array of objects as CSV. -* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#csvFormatBody) - format the given array of objects as CSV. -* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#csvFormatRows) - format the given array of rows as CSV. -* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#tsvParse) - parse the given TSV string, returning an array of objects. -* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. -* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#tsvFormat) - format the given array of objects as TSV. -* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#tsvFormatBody) - format the given array of objects as TSV. -* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v1.1.1/README.md#tsvFormatRows) - format the given array of rows as TSV. - -## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v1.0.5) +* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. +* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_parse) - parse the given string, returning an array of objects. +* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. +* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_format) - format the given array of objects. +* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatBody) - format the given array of objects. +* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatRows) - format the given array of rows. +* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatRow) - format the given row. +* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatValue) - format the given value. +* [d3.autoType](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#autoType) - automatically infer value types for the given object. +* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvParse) - parse the given CSV string, returning an array of objects. +* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. +* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormat) - format the given array of objects as CSV. +* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatBody) - format the given array of objects as CSV. +* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatRows) - format the given array of rows as CSV. +* [d3.csvFormatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatRow) - format the given row as CSV. +* [d3.csvFormatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatValue) - format the given value as CSV. +* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvParse) - parse the given TSV string, returning an array of objects. +* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. +* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormat) - format the given array of objects as TSV. +* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatBody) - format the given array of objects as TSV. +* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatRows) - format the given array of rows as TSV. +* [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatRow) - format the given row as TSV. +* [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatValue) - format the given value as TSV. + +## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v1.0.6) Easing functions for smooth animation. -* [*ease*](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#_ease) - ease the given normalized time. -* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeLinear) - linear easing; the identity function. -* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easePolyIn) - polynomial easing; raises time to the given power. -* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easePolyOut) - reverse polynomial easing. -* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easePolyInOut) - symmetric polynomial easing. -* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#poly_exponent) - specify the polynomial exponent. -* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeQuad) - an alias for easeQuadInOut. -* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeQuadIn) - quadratic easing; squares time. -* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeQuadOut) - reverse quadratic easing. -* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeQuadInOut) - symmetric quadratic easing. -* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCubic) - an alias for easeCubicInOut. -* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCubicIn) - cubic easing; cubes time. -* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCubicOut) - reverse cubic easing. -* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCubicInOut) - symmetric cubic easing. -* [d3.easeSin](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeSin) - an alias for easeSinInOut. -* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeSinIn) - sinusoidal easing. -* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeSinOut) - reverse sinusoidal easing. -* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeSinInOut) - symmetric sinusoidal easing. -* [d3.easeExp](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeExp) - an alias for easeExpInOut. -* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeExpIn) - exponential easing. -* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeExpOut) - reverse exponential easing. -* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeExpInOut) - symmetric exponential easing. -* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCircle) - an alias for easeCircleInOut. -* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCircleIn) - circular easing. -* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCircleOut) - reverse circular easing. -* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeCircleInOut) - symmetric circular easing. -* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeElastic) - an alias for easeElasticOut. -* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeElasticIn) - elastic easing, like a rubber band. -* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeElasticOut) - reverse elastic easing. -* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeElasticInOut) - symmetric elastic easing. -* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#elastic_amplitude) - specify the elastic amplitude. -* [*elastic*.period](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#elastic_period) - specify the elastic period. -* [d3.easeBack](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBack) - an alias for easeBackInOut. -* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. -* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBackOut) - reverse anticipatory easing. -* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBackInOut) - symmetric anticipatory easing. -* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#back_overshoot) - specify the amount of overshoot. -* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBounce) - an alias for easeBounceOut. -* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBounceIn) - bounce easing, like a rubber ball. -* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBounceOut) - reverse bounce easing. -* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v1.0.5/README.md#easeBounceInOut) - symmetric bounce easing. +* [*ease*](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#_ease) - ease the given normalized time. +* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeLinear) - linear easing; the identity function. +* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyIn) - polynomial easing; raises time to the given power. +* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyOut) - reverse polynomial easing. +* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyInOut) - symmetric polynomial easing. +* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#poly_exponent) - specify the polynomial exponent. +* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuad) - an alias for easeQuadInOut. +* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadIn) - quadratic easing; squares time. +* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadOut) - reverse quadratic easing. +* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadInOut) - symmetric quadratic easing. +* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubic) - an alias for easeCubicInOut. +* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicIn) - cubic easing; cubes time. +* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicOut) - reverse cubic easing. +* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicInOut) - symmetric cubic easing. +* [d3.easeSin](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSin) - an alias for easeSinInOut. +* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinIn) - sinusoidal easing. +* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinOut) - reverse sinusoidal easing. +* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinInOut) - symmetric sinusoidal easing. +* [d3.easeExp](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExp) - an alias for easeExpInOut. +* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpIn) - exponential easing. +* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpOut) - reverse exponential easing. +* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpInOut) - symmetric exponential easing. +* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircle) - an alias for easeCircleInOut. +* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleIn) - circular easing. +* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleOut) - reverse circular easing. +* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleInOut) - symmetric circular easing. +* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElastic) - an alias for easeElasticOut. +* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticIn) - elastic easing, like a rubber band. +* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticOut) - reverse elastic easing. +* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticInOut) - symmetric elastic easing. +* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#elastic_amplitude) - specify the elastic amplitude. +* [*elastic*.period](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#elastic_period) - specify the elastic period. +* [d3.easeBack](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBack) - an alias for easeBackInOut. +* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. +* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackOut) - reverse anticipatory easing. +* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackInOut) - symmetric anticipatory easing. +* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#back_overshoot) - specify the amount of overshoot. +* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounce) - an alias for easeBounceOut. +* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceIn) - bounce easing, like a rubber ball. +* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceOut) - reverse bounce easing. +* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceInOut) - symmetric bounce easing. ## [Fetches (d3-fetch)](https://github.com/d3/d3-fetch/tree/v1.1.2) @@ -499,280 +505,280 @@ Force-directed graph layout using velocity Verlet integration. * [*radial*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_x) - set the target center *x*-coordinate. * [*radial*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_y) - set the target center *y*-coordinate. -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.1) +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.2) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v1.4.1/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.1/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.1/README.md#formatSpecifier) - parse a number format specifier. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.1/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.1/README.md#formatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.1/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.1/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.1/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.1/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.1/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.format](https://github.com/d3/d3-format/blob/v1.4.2/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatSpecifier) - parse a number format specifier. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.2/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionRound) - compute significant digits for rounded notation. -## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.11.6) +## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.11.9) Geographic projections, shapes and math. -### [Paths](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#paths) - -* [d3.geoPath](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoPath) - create a new geographic path generator. -* [*path*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_path) - project and render the specified feature. -* [*path*.area](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_area) - compute the projected planar area of a given feature. -* [*path*.bounds](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_bounds) - compute the projected planar bounding box of a given feature. -* [*path*.centroid](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_centroid) - compute the projected planar centroid of a given feature. -* [*path*.measure](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_measure) - compute the projected planar length of a given feature. -* [*path*.projection](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_projection) - set the geographic projection. -* [*path*.context](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_context) - set the render context. -* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#path_pointRadius) - set the radius to display point features. - -### [Projections](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projections) - -* [*projection*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_projection) - project the specified point from the sphere to the plane. -* [*projection*.invert](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_invert) - unproject the specified point from the plane to the sphere. -* [*projection*.stream](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_stream) - wrap the specified stream to project geometry. -* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_clipAngle) - set the radius of the clip circle. -* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. -* [*projection*.angle](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_angle) - set the post-projection rotation. -* [*projection*.scale](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_scale) - set the scale factor. -* [*projection*.translate](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_translate) - set the translation offset. -* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. -* [*projection*.center](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_center) - set the center point. -* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_rotate) - set the three-axis spherical rotation angles. -* [*projection*.precision](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection_precision) - set the precision threshold for adaptive sampling. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection.preclip) - set the spherical clipping stream transform. -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#projection.postclip) - set the planar clipping stream transform. -* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. -* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoClipCircle) - clips spherical geometries to a small circle. -* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAlbers) - the Albers equal-area conic projection. -* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAlbersUsa) - a composite Albers projection for the United States. -* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. -* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicConformal) - the conic conformal projection. -* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. -* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicEquidistant) - the conic equidistant projection. -* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#conic_parallels) - set the two standard parallels. -* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoEqualEarth) - the Equal Earth projection. -* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. -* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoGnomonic) - the gnomonic projection. -* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoMercator) - the spherical Mercator projection. -* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoOrthographic) - the azimuthal orthographic projection. -* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoStereographic) - the azimuthal stereographic projection. -* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. -* [*project*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_project) - project the specified point from the sphere to the plane. -* [*project*.invert](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#project_invert) - unproject the specified point from the plane to the sphere. -* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoProjection) - create a custom projection. -* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoProjectionMutator) - create a custom configurable projection. -* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. -* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicConformalRaw) - the raw conic conformal projection. -* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. -* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. -* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. -* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoGnomonicRaw) - the raw gnomonic projection. -* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoMercatorRaw) - the raw Mercator projection. -* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. -* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. -* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. - -### [Spherical Math](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#spherical-math) - -* [d3.geoArea](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoArea) - compute the spherical area of a given feature. -* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. -* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoCentroid) - compute the spherical centroid of a given feature. -* [d3.geoContains](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoContains) - test whether a point is inside a given feature. -* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoDistance) - compute the great-arc distance between two points. -* [d3.geoLength](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. -* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoInterpolate) - interpolate between two points along a great arc. -* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoRotation) - create a rotation function for the specified angles. -* [*rotation*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_rotation) - rotate the given point around the sphere. -* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#rotation_invert) - unrotate the given point around the sphere. - -### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#spherical-shapes) - -* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoCircle) - create a circle generator. -* [*circle*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_circle) - generate a piecewise circle as a Polygon. -* [*circle*.center](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#circle_center) - specify the circle center in latitude and longitude. -* [*circle*.radius](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#circle_radius) - specify the angular radius in degrees. -* [*circle*.precision](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#circle_precision) - specify the precision of the piecewise circle. -* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoGraticule) - create a graticule generator. -* [*graticule*](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#_graticule) - generate a MultiLineString of meridians and parallels. -* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. -* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. -* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_extent) - get or set the major & minor extents. -* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_extentMajor) - get or set the major extent. -* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_extentMinor) - get or set the minor extent. -* [*graticule*.step](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_step) - get or set the major & minor step intervals. -* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_stepMajor) - get or set the major step intervals. -* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_stepMinor) - get or set the minor step intervals. -* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#graticule_precision) - get or set the latitudinal precision. -* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoGraticule10) - generate the default 10° global graticule. - -### [Streams](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#streams) - -* [d3.geoStream](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoStream) - convert a GeoJSON object to a geometry stream. -* [*stream*.point](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_point) - indicates a point with the specified coordinates. -* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_lineStart) - indicates the start of a line or ring. -* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_lineEnd) - indicates the end of a line or ring. -* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_polygonStart) - indicates the start of a polygon. -* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_polygonEnd) - indicates the end of a polygon. -* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#stream_sphere) - indicates the sphere. - -### [Transforms](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#transforms) - -* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoIdentity) - scale, translate or clip planar geometry. -* [*identity*.reflectX](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#identity_reflectX) - reflect the *x*-dimension. -* [*identity*.reflectY](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#identity_reflectY) - reflect the *y*-dimension. -* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v1.11.6/README.md#geoTransform) - define a custom geometry transform. - -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v1.1.8) +### [Paths](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#paths) + +* [d3.geoPath](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoPath) - create a new geographic path generator. +* [*path*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_path) - project and render the specified feature. +* [*path*.area](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_area) - compute the projected planar area of a given feature. +* [*path*.bounds](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_bounds) - compute the projected planar bounding box of a given feature. +* [*path*.centroid](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_centroid) - compute the projected planar centroid of a given feature. +* [*path*.measure](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_measure) - compute the projected planar length of a given feature. +* [*path*.projection](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_projection) - set the geographic projection. +* [*path*.context](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_context) - set the render context. +* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_pointRadius) - set the radius to display point features. + +### [Projections](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projections) + +* [*projection*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_projection) - project the specified point from the sphere to the plane. +* [*projection*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_invert) - unproject the specified point from the plane to the sphere. +* [*projection*.stream](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_stream) - wrap the specified stream to project geometry. +* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_clipAngle) - set the radius of the clip circle. +* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. +* [*projection*.angle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_angle) - set the post-projection rotation. +* [*projection*.scale](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_scale) - set the scale factor. +* [*projection*.translate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_translate) - set the translation offset. +* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. +* [*projection*.center](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_center) - set the center point. +* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_rotate) - set the three-axis spherical rotation angles. +* [*projection*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_precision) - set the precision threshold for adaptive sampling. +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection.preclip) - set the spherical clipping stream transform. +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection.postclip) - set the planar clipping stream transform. +* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. +* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipCircle) - clips spherical geometries to a small circle. +* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. +* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAlbers) - the Albers equal-area conic projection. +* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAlbersUsa) - a composite Albers projection for the United States. +* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. +* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicConformal) - the conic conformal projection. +* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. +* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEquidistant) - the conic equidistant projection. +* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#conic_parallels) - set the two standard parallels. +* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. +* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoMercator) - the spherical Mercator projection. +* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoOrthographic) - the azimuthal orthographic projection. +* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. +* [*project*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_project) - project the specified point from the sphere to the plane. +* [*project*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#project_invert) - unproject the specified point from the plane to the sphere. +* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoProjection) - create a custom projection. +* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoProjectionMutator) - create a custom configurable projection. +* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. +* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicConformalRaw) - the raw conic conformal projection. +* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. +* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. +* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. +* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGnomonicRaw) - the raw gnomonic projection. +* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoMercatorRaw) - the raw Mercator projection. +* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. +* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. +* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. + +### [Spherical Math](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#spherical-math) + +* [d3.geoArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoArea) - compute the spherical area of a given feature. +* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. +* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoCentroid) - compute the spherical centroid of a given feature. +* [d3.geoContains](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoContains) - test whether a point is inside a given feature. +* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoDistance) - compute the great-arc distance between two points. +* [d3.geoLength](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. +* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoInterpolate) - interpolate between two points along a great arc. +* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoRotation) - create a rotation function for the specified angles. +* [*rotation*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_rotation) - rotate the given point around the sphere. +* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#rotation_invert) - unrotate the given point around the sphere. + +### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#spherical-shapes) + +* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoCircle) - create a circle generator. +* [*circle*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_circle) - generate a piecewise circle as a Polygon. +* [*circle*.center](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_center) - specify the circle center in latitude and longitude. +* [*circle*.radius](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_radius) - specify the angular radius in degrees. +* [*circle*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_precision) - specify the precision of the piecewise circle. +* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGraticule) - create a graticule generator. +* [*graticule*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_graticule) - generate a MultiLineString of meridians and parallels. +* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. +* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. +* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extent) - get or set the major & minor extents. +* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extentMajor) - get or set the major extent. +* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extentMinor) - get or set the minor extent. +* [*graticule*.step](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_step) - get or set the major & minor step intervals. +* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_stepMajor) - get or set the major step intervals. +* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_stepMinor) - get or set the minor step intervals. +* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_precision) - get or set the latitudinal precision. +* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGraticule10) - generate the default 10° global graticule. + +### [Streams](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#streams) + +* [d3.geoStream](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStream) - convert a GeoJSON object to a geometry stream. +* [*stream*.point](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_point) - indicates a point with the specified coordinates. +* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_lineStart) - indicates the start of a line or ring. +* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_lineEnd) - indicates the end of a line or ring. +* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_polygonStart) - indicates the start of a polygon. +* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_polygonEnd) - indicates the end of a polygon. +* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_sphere) - indicates the sphere. + +### [Transforms](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#transforms) + +* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoIdentity) - scale, translate or clip planar geometry. +* [*identity*.reflectX](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#identity_reflectX) - reflect the *x*-dimension. +* [*identity*.reflectY](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#identity_reflectY) - reflect the *y*-dimension. +* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransform) - define a custom geometry transform. + +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v1.1.9) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_leaves) - generate an array of leaves. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_sort) - sort all descendant siblings. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_count) - count the number of leaves. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#stratify_parentId) - set the parent node id accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v1.1.8/README.md#packEnclose) - enclose the specified array of circles. - -## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v1.3.2) +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_leaves) - generate an array of leaves. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_sort) - sort all descendant siblings. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_count) - count the number of leaves. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify_parentId) - set the parent node id accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packEnclose) - enclose the specified array of circles. + +## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v1.3.3) Interpolate numbers, colors, strings, arrays, objects, whatever! -* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolate) - interpolate arbitrary values. -* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateArray) - interpolate arrays of arbitrary values. -* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateDate) - interpolate dates. -* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateNumber) - interpolate numbers. -* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateObject) - interpolate arbitrary objects. -* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateRound) - interpolate integers. -* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateString) - interpolate strings with embedded numbers. -* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. -* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. -* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateZoom) - zoom and pan between two views. -* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateRgb) - interpolate RGB colors. -* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. -* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. -* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateHsl) - interpolate HSL colors. -* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateHslLong) - interpolate HSL colors, the long way. -* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateLab) - interpolate Lab colors. -* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateHcl) - interpolate HCL colors. -* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateHclLong) - interpolate HCL colors, the long way. -* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateCubehelix) - interpolate Cubehelix colors. -* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. -* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolate_gamma) - apply gamma correction during interpolation. -* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateHue) - interpolate a hue angle. -* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. -* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateBasis) - generate a B-spline through a set of values. -* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. -* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. -* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v1.3.2/README.md#quantize) - generate uniformly-spaced samples from an interpolator. - -## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v1.0.8) +* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolate) - interpolate arbitrary values. +* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateArray) - interpolate arrays of arbitrary values. +* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateDate) - interpolate dates. +* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateNumber) - interpolate numbers. +* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateObject) - interpolate arbitrary objects. +* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRound) - interpolate integers. +* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateString) - interpolate strings with embedded numbers. +* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. +* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. +* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateZoom) - zoom and pan between two views. +* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgb) - interpolate RGB colors. +* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. +* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. +* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHsl) - interpolate HSL colors. +* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHslLong) - interpolate HSL colors, the long way. +* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateLab) - interpolate Lab colors. +* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHcl) - interpolate HCL colors. +* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHclLong) - interpolate HCL colors, the long way. +* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateCubehelix) - interpolate Cubehelix colors. +* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. +* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolate_gamma) - apply gamma correction during interpolation. +* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHue) - interpolate a hue angle. +* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. +* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateBasis) - generate a B-spline through a set of values. +* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. +* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. +* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#quantize) - generate uniformly-spaced samples from an interpolator. + +## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v1.0.9) Serialize Canvas path commands to SVG. -* [d3.path](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path) - create a new path serializer. -* [*path*.moveTo](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_moveTo) - move to the given point. -* [*path*.closePath](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_closePath) - close the current subpath. -* [*path*.lineTo](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_lineTo) - draw a straight line segment. -* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. -* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. -* [*path*.arcTo](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_arcTo) - draw a circular arc segment. -* [*path*.arc](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_arc) - draw a circular arc segment. -* [*path*.rect](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_rect) - draw a rectangle. -* [*path*.toString](https://github.com/d3/d3-path/blob/v1.0.8/README.md#path_toString) - serialize to an SVG path data string. +* [d3.path](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path) - create a new path serializer. +* [*path*.moveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_moveTo) - move to the given point. +* [*path*.closePath](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_closePath) - close the current subpath. +* [*path*.lineTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_lineTo) - draw a straight line segment. +* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. +* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. +* [*path*.arcTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_arcTo) - draw a circular arc segment. +* [*path*.arc](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_arc) - draw a circular arc segment. +* [*path*.rect](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_rect) - draw a rectangle. +* [*path*.toString](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_toString) - serialize to an SVG path data string. -## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v1.0.5) +## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v1.0.6) Geometric operations for two-dimensional polygons. -* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v1.0.5/README.md#polygonArea) - compute the area of the given polygon. -* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v1.0.5/README.md#polygonCentroid) - compute the centroid of the given polygon. -* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v1.0.5/README.md#polygonHull) - compute the convex hull of the given points. -* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v1.0.5/README.md#polygonContains) - test whether a point is inside a polygon. -* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v1.0.5/README.md#polygonLength) - compute the length of the given polygon’s perimeter. +* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonArea) - compute the area of the given polygon. +* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonCentroid) - compute the centroid of the given polygon. +* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonHull) - compute the convex hull of the given points. +* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonContains) - test whether a point is inside a polygon. +* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonLength) - compute the length of the given polygon’s perimeter. -## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v1.0.6) +## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v1.0.7) Two-dimensional recursive spatial subdivision. -* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree) - create a new, empty quadtree. -* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_x) - set the *x* accessor. -* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_y) - set the *y* accessor. -* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_add) - add a datum to a quadtree. -* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_addAll) - add an array of data to a quadtree. -* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_remove) - remove a datum from a quadtree. -* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_removeAll) - remove an array of data from a quadtree. -* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_copy) - create a copy of a quadtree. -* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_root) - get the quadtree’s root node. -* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_data) - retrieve all data from the quadtree. -* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_size) - count the number of data in the quadtree. -* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_find) - quickly find the closest datum in a quadtree. -* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_visit) - selectively visit nodes in a quadtree. -* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. -* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_cover) - extend the quadtree to cover a point. -* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v1.0.6/README.md#quadtree_extent) - extend the quadtree to cover an extent. +* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree) - create a new, empty quadtree. +* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_x) - set the *x* accessor. +* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_y) - set the *y* accessor. +* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_add) - add a datum to a quadtree. +* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_addAll) - add an array of data to a quadtree. +* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_remove) - remove a datum from a quadtree. +* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_removeAll) - remove an array of data from a quadtree. +* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_copy) - create a copy of a quadtree. +* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_root) - get the quadtree’s root node. +* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_data) - retrieve all data from the quadtree. +* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_size) - count the number of data in the quadtree. +* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_find) - quickly find the closest datum in a quadtree. +* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_visit) - selectively visit nodes in a quadtree. +* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. +* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_cover) - extend the quadtree to cover a point. +* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_extent) - extend the quadtree to cover an extent. ## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v1.1.2) @@ -937,368 +943,368 @@ Map a discrete domain to a discrete range. * [*point*.step](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_step) - get the distance between the starts of adjacent points. * [*point*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_copy) - create a copy of this scale. -## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v1.4.0) +## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v1.4.1) Transform the DOM by selecting elements and joining to data. -### [Selecting Elements](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selecting-elements) - -* [d3.selection](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection) - select the root document element. -* [d3.select](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#select) - select an element from the document. -* [d3.selectAll](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selectAll) - select multiple elements from the document. -* [*selection*.select](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_select) - select a descendant element for each selected element. -* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_selectAll) - select multiple descendants for each selected element. -* [*selection*.filter](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_filter) - filter elements based on data. -* [*selection*.merge](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_merge) - merge this selection with another. -* [d3.matcher](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#matcher) - test whether an element matches a selector. -* [d3.selector](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selector) - select an element. -* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selectorAll) - select elements. -* [d3.window](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#window) - get a node’s owner window. -* [d3.style](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#style) - get a node’s current style value. - -### [Modifying Elements](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#modifying-elements) - -* [*selection*.attr](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_attr) - get or set an attribute. -* [*selection*.classed](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_classed) - get, add or remove CSS classes. -* [*selection*.style](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_style) - get or set a style property. -* [*selection*.property](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_property) - get or set a (raw) property. -* [*selection*.text](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_text) - get or set the text content. -* [*selection*.html](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_html) - get or set the inner HTML. -* [*selection*.append](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_append) - create, append and select new elements. -* [*selection*.insert](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_insert) - create, insert and select new elements. -* [*selection*.remove](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_remove) - remove elements from the document. -* [*selection*.clone](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_clone) - insert clones of selected elements. -* [*selection*.sort](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_sort) - sort elements in the document based on data. -* [*selection*.order](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_order) - reorders elements in the document to match the selection. -* [*selection*.raise](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_raise) - reorders each element as the last child of its parent. -* [*selection*.lower](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_lower) - reorders each element as the first child of its parent. -* [d3.create](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#create) - create and select a detached element. -* [d3.creator](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#creator) - create an element by name. - -### [Joining Data](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#joining-data) - -* [*selection*.data](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_data) - bind elements to data. -* [*selection*.join](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_join) - enter, update or exit elements based on data. -* [*selection*.enter](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_enter) - get the enter selection (data missing elements). -* [*selection*.exit](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_exit) - get the exit selection (elements missing data). -* [*selection*.datum](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_datum) - get or set element data (without joining). - -### [Handling Events](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#handling-events) - -* [*selection*.on](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_on) - add or remove event listeners. -* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_dispatch) - dispatch a custom event. -* [d3.event](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#event) - the current user event, during interaction. -* [d3.customEvent](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#customEvent) - temporarily define a custom event. -* [d3.mouse](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#mouse) - get the mouse position relative to a given container. -* [d3.touch](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#touch) - get a touch position relative to a given container. -* [d3.touches](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#touches) - get the touch positions relative to a given container. -* [d3.clientPoint](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#clientPoint) - get a position relative to a given container. - -### [Control Flow](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#control-flow) - -* [*selection*.each](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_each) - call a function for each element. -* [*selection*.call](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_call) - call a function with this selection. -* [*selection*.empty](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_empty) - returns true if this selection is empty. -* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_nodes) - returns an array of all selected elements. -* [*selection*.node](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_node) - returns the first (non-null) element. -* [*selection*.size](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#selection_size) - returns the count of elements. - -### [Local Variables](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local-variables) - -* [d3.local](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local) - declares a new local variable. -* [*local*.set](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local_set) - set a local variable’s value. -* [*local*.get](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local_get) - get a local variable’s value. -* [*local*.remove](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local_remove) - delete a local variable. -* [*local*.toString](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#local_toString) - get the property identifier of a local variable. - -### [Namespaces](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#namespaces) - -* [d3.namespace](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. -* [d3.namespaces](https://github.com/d3/d3-selection/blob/v1.4.0/README.md#namespaces) - the built-in XML namespaces. - -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v1.3.5) +### [Selecting Elements](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selecting-elements) + +* [d3.selection](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection) - select the root document element. +* [d3.select](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#select) - select an element from the document. +* [d3.selectAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selectAll) - select multiple elements from the document. +* [*selection*.select](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_select) - select a descendant element for each selected element. +* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_selectAll) - select multiple descendants for each selected element. +* [*selection*.filter](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_filter) - filter elements based on data. +* [*selection*.merge](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_merge) - merge this selection with another. +* [d3.matcher](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#matcher) - test whether an element matches a selector. +* [d3.selector](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selector) - select an element. +* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selectorAll) - select elements. +* [d3.window](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#window) - get a node’s owner window. +* [d3.style](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#style) - get a node’s current style value. + +### [Modifying Elements](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#modifying-elements) + +* [*selection*.attr](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_attr) - get or set an attribute. +* [*selection*.classed](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_classed) - get, add or remove CSS classes. +* [*selection*.style](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_style) - get or set a style property. +* [*selection*.property](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_property) - get or set a (raw) property. +* [*selection*.text](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_text) - get or set the text content. +* [*selection*.html](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_html) - get or set the inner HTML. +* [*selection*.append](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_append) - create, append and select new elements. +* [*selection*.insert](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_insert) - create, insert and select new elements. +* [*selection*.remove](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_remove) - remove elements from the document. +* [*selection*.clone](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_clone) - insert clones of selected elements. +* [*selection*.sort](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_sort) - sort elements in the document based on data. +* [*selection*.order](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_order) - reorders elements in the document to match the selection. +* [*selection*.raise](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_raise) - reorders each element as the last child of its parent. +* [*selection*.lower](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_lower) - reorders each element as the first child of its parent. +* [d3.create](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#create) - create and select a detached element. +* [d3.creator](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#creator) - create an element by name. + +### [Joining Data](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#joining-data) + +* [*selection*.data](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_data) - bind elements to data. +* [*selection*.join](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_join) - enter, update or exit elements based on data. +* [*selection*.enter](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_enter) - get the enter selection (data missing elements). +* [*selection*.exit](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_exit) - get the exit selection (elements missing data). +* [*selection*.datum](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_datum) - get or set element data (without joining). + +### [Handling Events](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#handling-events) + +* [*selection*.on](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_on) - add or remove event listeners. +* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_dispatch) - dispatch a custom event. +* [d3.event](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#event) - the current user event, during interaction. +* [d3.customEvent](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#customEvent) - temporarily define a custom event. +* [d3.mouse](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#mouse) - get the mouse position relative to a given container. +* [d3.touch](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#touch) - get a touch position relative to a given container. +* [d3.touches](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#touches) - get the touch positions relative to a given container. +* [d3.clientPoint](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#clientPoint) - get a position relative to a given container. + +### [Control Flow](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#control-flow) + +* [*selection*.each](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_each) - call a function for each element. +* [*selection*.call](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_call) - call a function with this selection. +* [*selection*.empty](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_empty) - returns true if this selection is empty. +* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_nodes) - returns an array of all selected elements. +* [*selection*.node](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_node) - returns the first (non-null) element. +* [*selection*.size](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_size) - returns the count of elements. + +### [Local Variables](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local-variables) + +* [d3.local](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local) - declares a new local variable. +* [*local*.set](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_set) - set a local variable’s value. +* [*local*.get](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_get) - get a local variable’s value. +* [*local*.remove](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_remove) - delete a local variable. +* [*local*.toString](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_toString) - get the property identifier of a local variable. + +### [Namespaces](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespaces) + +* [d3.namespace](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. +* [d3.namespaces](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespaces) - the built-in XML namespaces. + +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v1.3.6) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.radialArea](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea) - create a new radial area generator. -* [*radialArea*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_radialArea) - generate an area for the given dataset. -* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_angle) - set the start and end angle accessors. -* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_startAngle) - set the start angle accessor. -* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_endAngle) - set the end angle accessor. -* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_radius) - set the inner and outer radius accessors. -* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_innerRadius) - set the inner radius accessor. -* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_outerRadius) - set the outer radius accessor. -* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_defined) - set the defined accessor. -* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_curve) - set the curve interpolator. -* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialArea_context) - set the rendering context. -* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineStartAngle) - derive a line for the start edge of an area. -* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineEndAngle) - derive a line for the end edge of an area. -* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. -* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.radialArea](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea) - create a new radial area generator. +* [*radialArea*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_radialArea) - generate an area for the given dataset. +* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_angle) - set the start and end angle accessors. +* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_startAngle) - set the start angle accessor. +* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_endAngle) - set the end angle accessor. +* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_radius) - set the inner and outer radius accessors. +* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_innerRadius) - set the inner radius accessor. +* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_outerRadius) - set the outer radius accessor. +* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_defined) - set the defined accessor. +* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_curve) - set the curve interpolator. +* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_context) - set the rendering context. +* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineStartAngle) - derive a line for the start edge of an area. +* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineEndAngle) - derive a line for the end edge of an area. +* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. +* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#bundle_beta) - set the bundle tension *beta*. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#cardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#bundle_beta) - set the bundle tension *beta*. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#cardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#linkRadial) - create a new radial link generator. -* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialLink_angle) - set the point *angle* accessor. -* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#radialLink_radius) - set the point *radius* accessor. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkRadial) - create a new radial link generator. +* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialLink_angle) - set the point *angle* accessor. +* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialLink_radius) - set the point *radius* accessor. -### [Symbols](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbols) +### [Symbols](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#pointRadial) - -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_context) - set the rendering context. +* [d3.symbols](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbols) - the array of built-in symbol types. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolCircle) - a circle. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolCross) - a Greek cross with arms of equal length. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolDiamond) - a rhombus. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolSquare) - a square. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolStar) - a pentagonal star (pentagram). +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolTriangle) - an up-pointing triangle. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolWye) - a Y shape. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pointRadial) - +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.5/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. - -## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.1.3) +* [d3.stack](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. + +## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.2.2) Parse and format times, inspired by strptime and strftime. -* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#timeFormat) - alias for *locale*.format on the default locale. -* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#timeParse) - alias for *locale*.parse on the default locale. -* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. -* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#utcParse) - alias for *locale*.utcParse on the default locale. -* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#isoFormat) - an ISO 8601 UTC formatter. -* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#isoParse) - an ISO 8601 UTC parser. -* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#timeFormatLocale) - define a custom locale. -* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#timeFormatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#locale_format) - create a time formatter. -* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#locale_parse) - create a time parser. -* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#locale_utcFormat) - create a UTC formatter. -* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v2.1.3/README.md#locale_utcParse) - create a UTC parser. - -## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v1.0.11) +* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormat) - alias for *locale*.format on the default locale. +* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeParse) - alias for *locale*.parse on the default locale. +* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. +* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#utcParse) - alias for *locale*.utcParse on the default locale. +* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#isoFormat) - an ISO 8601 UTC formatter. +* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#isoParse) - an ISO 8601 UTC parser. +* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormatLocale) - define a custom locale. +* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_format) - create a time formatter. +* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_parse) - create a time parser. +* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_utcFormat) - create a UTC formatter. +* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_utcParse) - create a UTC parser. + +## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v1.1.0) A calculator for humanity’s peculiar conventions of time. -* [d3.timeInterval](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeInterval) - implement a new custom time interval. -* [*interval*](https://github.com/d3/d3-time/blob/v1.0.11/README.md#_interval) - alias for *interval*.floor. -* [*interval*.floor](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_floor) - round down to the nearest boundary. -* [*interval*.round](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_round) - round to the nearest boundary. -* [*interval*.ceil](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_ceil) - round up to the nearest boundary. -* [*interval*.offset](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_offset) - offset a date by some number of intervals. -* [*interval*.range](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_range) - generate a range of dates at interval boundaries. -* [*interval*.filter](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_filter) - create a filtered subset of this interval. -* [*interval*.every](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_every) - create a filtered subset of this interval. -* [*interval*.count](https://github.com/d3/d3-time/blob/v1.0.11/README.md#interval_count) - count interval boundaries between two dates. -* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMillisecond) - the millisecond interval. -* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMillisecond) - aliases for millisecond.range. -* [d3.timeSecond](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSecond) - the second interval. -* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSecond) - aliases for second.range. -* [d3.timeMinute](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMinute) - the minute interval. -* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMinute) - aliases for minute.range. -* [d3.timeHour](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeHour) - the hour interval. -* [d3.timeHours](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeHour) - aliases for hour.range. -* [d3.timeDay](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeDay) - the day interval. -* [d3.timeDays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeDay) - aliases for day.range. -* [d3.timeWeek](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWeek) - aliases for sunday. -* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWeek) - aliases for week.range. -* [d3.timeSunday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSunday) - the week interval, starting on Sunday. -* [d3.timeSundays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSunday) - aliases for sunday.range. -* [d3.timeMonday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonday) - the week interval, starting on Monday. -* [d3.timeMondays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonday) - aliases for monday.range. -* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeTuesday) - the week interval, starting on Tuesday. -* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeTuesday) - aliases for tuesday.range. -* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWednesday) - the week interval, starting on Wednesday. -* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeWednesday) - aliases for wednesday.range. -* [d3.timeThursday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeThursday) - the week interval, starting on Thursday. -* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeThursday) - aliases for thursday.range. -* [d3.timeFriday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeFriday) - the week interval, starting on Friday. -* [d3.timeFridays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeFriday) - aliases for friday.range. -* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSaturday) - the week interval, starting on Saturday. -* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeSaturday) - aliases for saturday.range. -* [d3.timeMonth](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonth) - the month interval. -* [d3.timeMonths](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeMonth) - aliases for month.range. -* [d3.timeYear](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeYear) - the year interval. -* [d3.timeYears](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v1.0.11/README.md#timeYear) - aliases for year.range. - -## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v1.0.9) +* [d3.timeInterval](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeInterval) - implement a new custom time interval. +* [*interval*](https://github.com/d3/d3-time/blob/v1.1.0/README.md#_interval) - alias for *interval*.floor. +* [*interval*.floor](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_floor) - round down to the nearest boundary. +* [*interval*.round](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_round) - round to the nearest boundary. +* [*interval*.ceil](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_ceil) - round up to the nearest boundary. +* [*interval*.offset](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_offset) - offset a date by some number of intervals. +* [*interval*.range](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_range) - generate a range of dates at interval boundaries. +* [*interval*.filter](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_filter) - create a filtered subset of this interval. +* [*interval*.every](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_every) - create a filtered subset of this interval. +* [*interval*.count](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_count) - count interval boundaries between two dates. +* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond) - the millisecond interval. +* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond) - aliases for millisecond.range. +* [d3.timeSecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond) - the second interval. +* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond) - aliases for second.range. +* [d3.timeMinute](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute) - the minute interval. +* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute) - aliases for minute.range. +* [d3.timeHour](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour) - the hour interval. +* [d3.timeHours](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour) - aliases for hour.range. +* [d3.timeDay](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay) - the day interval. +* [d3.timeDays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay) - aliases for day.range. +* [d3.timeWeek](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek) - aliases for sunday. +* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek) - aliases for week.range. +* [d3.timeSunday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday) - the week interval, starting on Sunday. +* [d3.timeSundays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday) - aliases for sunday.range. +* [d3.timeMonday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday) - the week interval, starting on Monday. +* [d3.timeMondays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday) - aliases for monday.range. +* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday) - the week interval, starting on Tuesday. +* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday) - aliases for tuesday.range. +* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday) - the week interval, starting on Wednesday. +* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday) - aliases for wednesday.range. +* [d3.timeThursday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday) - the week interval, starting on Thursday. +* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday) - aliases for thursday.range. +* [d3.timeFriday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday) - the week interval, starting on Friday. +* [d3.timeFridays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday) - aliases for friday.range. +* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday) - the week interval, starting on Saturday. +* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday) - aliases for saturday.range. +* [d3.timeMonth](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth) - the month interval. +* [d3.timeMonths](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth) - aliases for month.range. +* [d3.timeYear](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear) - the year interval. +* [d3.timeYears](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear) - aliases for year.range. + +## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v1.0.10) An efficient queue for managing thousands of concurrent animations. -* [d3.now](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#now) - get the current high-resolution time. -* [d3.timer](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#timer) - schedule a new timer. -* [*timer*.restart](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#timer_restart) - reset the timer’s start time and callback. -* [*timer*.stop](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#timer_stop) - stop the timer. -* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#timerFlush) - immediately execute any eligible timers. -* [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#timeout) - schedule a timer that stops on its first callback. -* [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.9/README.md#interval) - schedule a timer that is called with a configurable period. +* [d3.now](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#now) - get the current high-resolution time. +* [d3.timer](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer) - schedule a new timer. +* [*timer*.restart](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer_restart) - reset the timer’s start time and callback. +* [*timer*.stop](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer_stop) - stop the timer. +* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timerFlush) - immediately execute any eligible timers. +* [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timeout) - schedule a timer that stops on its first callback. +* [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.2.0) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.2.1) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.transition](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_selection) - returns a selection for this transition. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_on) - await the end of a transition. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.2.0/README.md#interrupt) - interrupt the active transition for a given node. +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_merge) - merge this transition with another. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_transition) - schedule a new transition following this one. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_call) - call a function with this transition. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_size) - returns the count of elements. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_each) - call a function for each element. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_on) - add or remove transition event listeners. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_on) - await the end of a transition. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_ease) - specify the easing function. +* [d3.active](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#active) - select the active transition for a given node. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#interrupt) - interrupt the active transition for a given node. ## [Voronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) diff --git a/yarn.lock b/yarn.lock index 010174cc4c66d4..bfece7c61c3a11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -89,7 +89,12 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -commander@2, commander@^2.20.0: +commander@2: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -139,9 +144,9 @@ d3-collection@1: integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== d3-color@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.3.0.tgz#675818359074215b020dc1d41d518136dcb18fa9" - integrity sha512-NHODMBlj59xPAwl2BDiO2Mog6V+PrGRtBfWKqKRrs9MCqlSkIEb0Z/SfY7jW29ReHTDC/j+vwXhnZcXI3+3fbg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf" + integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg== d3-contour@1: version "1.3.2" @@ -151,31 +156,31 @@ d3-contour@1: d3-array "^1.1.1" d3-dispatch@1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.5.tgz#e25c10a186517cd6c82dd19ea018f07e01e39015" - integrity sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g== + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== d3-drag@1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.4.tgz#ba9331d68158ad14cf0b4b28a8afa9e78c7d99ad" - integrity sha512-ICPurDETFAelF1CTHdIyiUM4PsyZLaM+7oIBhmyP+cuVjze5vDZ8V//LdOFjg0jGnFIZD/Sfmk0r95PSiu78rw== + version "1.2.5" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" + integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== dependencies: d3-dispatch "1" d3-selection "1" d3-dsv@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.1.1.tgz#aaa830ecb76c4b5015572c647cc6441e3c7bb701" - integrity sha512-1EH1oRGSkeDUlDRbhsFytAXU6cAmXFzc52YUe6MRlPClmWb85MP1J5x+YJRzya4ynZWnbELdSAvATFW/MbxaXw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" + integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== dependencies: commander "2" iconv-lite "0.4" rw "1" d3-ease@1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.5.tgz#8ce59276d81241b1b72042d6af2d40e76d936ffb" - integrity sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" + integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== d3-fetch@1: version "1.1.2" @@ -195,43 +200,43 @@ d3-force@1: d3-timer "1" d3-format@1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.1.tgz#c45f74b17c5a290c072a4ba7039dd19662cd5ce6" - integrity sha512-TUswGe6hfguUX1CtKxyG2nymO+1lyThbkS1ifLX0Sr+dOQtAD5gkrffpHnx+yHNKUZ0Bmg5T4AjUQwugPDrm0g== + version "1.4.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.2.tgz#2a8c0ebf500f315981c2110eaaf70b82f472cb2b" + integrity sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww== d3-geo@1: - version "1.11.6" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.11.6.tgz#134f2ef035ff75a448075fafdea92702a2e0e0cf" - integrity sha512-z0J8InXR9e9wcgNtmVnPTj0TU8nhYT6lD/ak9may2PdKqXIeHUr8UbFLoCtrPYNsjv6YaLvSDQVl578k6nm7GA== + version "1.11.9" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.11.9.tgz#77eaed14ba62fc2c0aef55cd2943849c866f7ae6" + integrity sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A== dependencies: d3-array "1" d3-hierarchy@1: - version "1.1.8" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz#7a6317bd3ed24e324641b6f1e76e978836b008cc" - integrity sha512-L+GHMSZNwTpiq4rt9GEsNcpLa4M96lXMR8M/nMG9p5hBE0jy6C+3hWtyZMenPQdwla249iJy7Nx0uKt3n+u9+w== + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== d3-interpolate@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68" - integrity sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w== + version "1.3.3" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.3.tgz#cef4ba06dfccebcc45e4ae9d4d836a931a945076" + integrity sha512-wTsi4AqnC2raZ3Q9eqFxiZGUf5r6YiEdi23vXjjKSWXFYLCQNUtBVMk6uk2tg4cOY6YrjRdmSmI/Mf0ze1zPzQ== dependencies: d3-color "1" d3-path@1: - version "1.0.8" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.8.tgz#4a0606a794d104513ec4a8af43525f374b278719" - integrity sha512-J6EfUNwcMQ+aM5YPOB8ZbgAZu6wc82f/0WFxrxwV6Ll8wBwLaHLKCqQ5Imub02JriCVVdPjgI+6P3a4EWJCxAg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== d3-polygon@1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.5.tgz#9a645a0a64ff6cbf9efda96ee0b4a6909184c363" - integrity sha512-RHhh1ZUJZfhgoqzWWuRhzQJvO7LavchhitSTHGu9oj6uuLFzYZVeBzaWTQ2qSO6bz2w55RMoOCf0MsLCDB6e0w== + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" + integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== d3-quadtree@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.6.tgz#d1ab2a95a7f27bbde88582c94166f6ae35f32056" - integrity sha512-NUgeo9G+ENQCQ1LsRr2qJg3MQ4DJvxcDNCiohdJGHt5gRhBW6orIB5m5FJ9kK3HNL8g9F4ERVoBzcEwQBfXWVA== + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" + integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== d3-random@1: version "1.1.2" @@ -259,38 +264,38 @@ d3-scale@2: d3-time-format "2" d3-selection@1, d3-selection@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.0.tgz#ab9ac1e664cf967ebf1b479cc07e28ce9908c474" - integrity sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" + integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== d3-shape@1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.5.tgz#e81aea5940f59f0a79cfccac012232a8987c6033" - integrity sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg== + version "1.3.6" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.6.tgz#fa16af40e5c6cde8a2c8eaa977d4ed2cf273a02c" + integrity sha512-vv247nPmyncoCRnCT5VYvAVPrrqTGml+GT79detw5IEuBfv2cfTnOtbPBFIIkmL0eg1EYz+ltmJ6lK384ttHcg== dependencies: d3-path "1" d3-time-format@2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.3.tgz#ae06f8e0126a9d60d6364eac5b1533ae1bac826b" - integrity sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA== + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.2.tgz#187597ffc6a0f37cb36bb7a1d7167cdc887ecda0" + integrity sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw== dependencies: d3-time "1" d3-time@1: - version "1.0.11" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.11.tgz#1d831a3e25cd189eb256c17770a666368762bbce" - integrity sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== d3-timer@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.9.tgz#f7bb8c0d597d792ff7131e1c24a36dd471a471ba" - integrity sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== d3-transition@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.2.0.tgz#f538c0e21b2aa1f05f3e965f8567e81284b3b2b8" - integrity sha512-VJ7cmX/FPIPJYuaL2r1o1EMHLttvoIuZhhuAlRoOxDzogV8iQS6jYulDm3xEU3TqL80IZIhI551/ebmCMrkvhw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.2.1.tgz#a417cfec731a659e8df5dbad5c9a30b98c4a3ce4" + integrity sha512-0cnceCDDmFEAFu6VRLZ6SO5MR+15znpt/B68A5uInn7y2lcIVbCPZBiDmDw5pMtnSLZoCMvZtjgWc9l1m7/BWg== dependencies: d3-color "1" d3-dispatch "1" From bf28a7f25d884dc9df775f631e243f26d40bd26a Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 16 Nov 2019 11:53:24 -0800 Subject: [PATCH 002/311] 5.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 61d0b13383e795..4305703ff85548 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.12.0", + "version": "5.13.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 6787abe0615a5d9049d0248b80af98a7c6840e61 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 16 Nov 2019 12:59:33 -0800 Subject: [PATCH 003/311] Update d3-brush. --- API.md | 28 ++++++++++++++-------------- yarn.lock | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/API.md b/API.md index e39309d6264a9f..09a0e483a49a0b 100644 --- a/API.md +++ b/API.md @@ -116,23 +116,23 @@ Human-readable reference marks for scales. * [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. * [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickPadding) - set the padding between ticks and labels. -## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v1.1.2) +## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v1.1.4) Select a one- or two-dimensional region using the mouse or touch. -* [d3.brush](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush) - create a new two-dimensional brush. -* [d3.brushX](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brushX) - create a brush along the *x*-dimension. -* [d3.brushY](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brushY) - create a brush along the *y*-dimension. -* [*brush*](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#_brush) - apply the brush to a selection. -* [*brush*.move](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_move) - move the brush selection. -* [*brush*.clear](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_clear) - clear the brush selection. -* [*brush*.extent](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_extent) - define the brushable region. -* [*brush*.filter](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_filter) - control which input events initiate brushing. -* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_handleSize) - set the size of the brush handles. -* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_touchable) - set the touch support detector. -* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_keyModifiers) - enable or disable key interaction. -* [*brush*.on](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brush_on) - listen for brush events. -* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v1.1.2/README.md#brushSelection) - get the brush selection for a given node. +* [d3.brush](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush) - create a new two-dimensional brush. +* [d3.brushX](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushX) - create a brush along the *x*-dimension. +* [d3.brushY](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushY) - create a brush along the *y*-dimension. +* [*brush*](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#_brush) - apply the brush to a selection. +* [*brush*.move](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_move) - move the brush selection. +* [*brush*.clear](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_clear) - clear the brush selection. +* [*brush*.extent](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_extent) - define the brushable region. +* [*brush*.filter](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_filter) - control which input events initiate brushing. +* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_handleSize) - set the size of the brush handles. +* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_touchable) - set the touch support detector. +* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_keyModifiers) - enable or disable key interaction. +* [*brush*.on](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_on) - listen for brush events. +* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushSelection) - get the brush selection for a given node. ## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v1.0.6) diff --git a/yarn.lock b/yarn.lock index bfece7c61c3a11..30eaec4aa46a15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -120,9 +120,9 @@ d3-axis@1: integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== d3-brush@1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.3.tgz#a04900a71fa5390f7f7afe1504b02a382709f380" - integrity sha512-v8bbYyCFKjyCzFk/tdWqXwDykY8YWqhXYjcYxfILIit085VZOpj4XJKOMccTsvWxgzSLMJQg5SiqHjslsipEDg== + version "1.1.4" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.4.tgz#a457887f558eb094b07d3db5c633facac6bd4cc4" + integrity sha512-DRcFXGcVZiJF644i78m/HM8P0U19hWYRFcAnacOVGvpOpzkqGm3H0EAoAH6jwyY/lqfH49d+5vz2TgznP/zlMA== dependencies: d3-dispatch "1" d3-drag "1" From a66080994f32990d67aca2e6c148ddad429c55c6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 16 Nov 2019 12:59:39 -0800 Subject: [PATCH 004/311] 5.13.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4305703ff85548..4267e936b17625 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.13.0", + "version": "5.13.1", "description": "Data-Driven Documents", "keywords": [ "dom", From 7f613da17bb5a97781ccdda612fab4d6e7e4aff7 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 17 Nov 2019 08:16:17 -0800 Subject: [PATCH 005/311] Update dependencies. --- API.md | 351 +++++++++++++++++++++++++++--------------------------- yarn.lock | 12 +- 2 files changed, 182 insertions(+), 181 deletions(-) diff --git a/API.md b/API.md index 09a0e483a49a0b..60093f8450263c 100644 --- a/API.md +++ b/API.md @@ -1022,181 +1022,181 @@ Transform the DOM by selecting elements and joining to data. * [d3.namespace](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. * [d3.namespaces](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespaces) - the built-in XML namespaces. -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v1.3.6) +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v1.3.7) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.radialArea](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea) - create a new radial area generator. -* [*radialArea*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_radialArea) - generate an area for the given dataset. -* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_angle) - set the start and end angle accessors. -* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_startAngle) - set the start angle accessor. -* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_endAngle) - set the end angle accessor. -* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_radius) - set the inner and outer radius accessors. -* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_innerRadius) - set the inner radius accessor. -* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_outerRadius) - set the outer radius accessor. -* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_defined) - set the defined accessor. -* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_curve) - set the curve interpolator. -* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialArea_context) - set the rendering context. -* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineStartAngle) - derive a line for the start edge of an area. -* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineEndAngle) - derive a line for the end edge of an area. -* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. -* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.radialArea](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea) - create a new radial area generator. +* [*radialArea*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_radialArea) - generate an area for the given dataset. +* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_angle) - set the start and end angle accessors. +* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_startAngle) - set the start angle accessor. +* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_endAngle) - set the end angle accessor. +* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_radius) - set the inner and outer radius accessors. +* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_innerRadius) - set the inner radius accessor. +* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_outerRadius) - set the outer radius accessor. +* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_defined) - set the defined accessor. +* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_curve) - set the curve interpolator. +* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_context) - set the rendering context. +* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineStartAngle) - derive a line for the start edge of an area. +* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineEndAngle) - derive a line for the end edge of an area. +* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. +* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#bundle_beta) - set the bundle tension *beta*. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#cardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#bundle_beta) - set the bundle tension *beta*. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#cardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#linkRadial) - create a new radial link generator. -* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialLink_angle) - set the point *angle* accessor. -* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#radialLink_radius) - set the point *radius* accessor. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkRadial) - create a new radial link generator. +* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialLink_angle) - set the point *angle* accessor. +* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialLink_radius) - set the point *radius* accessor. -### [Symbols](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbols) +### [Symbols](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#pointRadial) - -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_context) - set the rendering context. +* [d3.symbols](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbols) - the array of built-in symbol types. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolCircle) - a circle. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolCross) - a Greek cross with arms of equal length. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolDiamond) - a rhombus. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolSquare) - a square. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolStar) - a pentagonal star (pentagram). +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolTriangle) - an up-pointing triangle. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolWye) - a Y shape. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pointRadial) - +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.6/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. +* [d3.stack](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. ## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.2.2) @@ -1272,39 +1272,40 @@ An efficient queue for managing thousands of concurrent animations. * [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timeout) - schedule a timer that stops on its first callback. * [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.2.1) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.0) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_selection) - returns a selection for this transition. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_on) - await the end of a transition. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.2.1/README.md#interrupt) - interrupt the active transition for a given node. +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_merge) - merge this transition with another. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_transition) - schedule a new transition following this one. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_call) - call a function with this transition. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_size) - returns the count of elements. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_each) - call a function for each element. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_on) - add or remove transition event listeners. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_on) - await the end of a transition. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_textTween) - tween the text using a custom interpolator. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_ease) - specify the easing function. +* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#active) - select the active transition for a given node. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#interrupt) - interrupt the active transition for a given node. ## [Voronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) diff --git a/yarn.lock b/yarn.lock index 30eaec4aa46a15..11295f0a79befd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -269,9 +269,9 @@ d3-selection@1, d3-selection@^1.1.0: integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== d3-shape@1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.6.tgz#fa16af40e5c6cde8a2c8eaa977d4ed2cf273a02c" - integrity sha512-vv247nPmyncoCRnCT5VYvAVPrrqTGml+GT79detw5IEuBfv2cfTnOtbPBFIIkmL0eg1EYz+ltmJ6lK384ttHcg== + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== dependencies: d3-path "1" @@ -293,9 +293,9 @@ d3-timer@1: integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== d3-transition@1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.2.1.tgz#a417cfec731a659e8df5dbad5c9a30b98c4a3ce4" - integrity sha512-0cnceCDDmFEAFu6VRLZ6SO5MR+15znpt/B68A5uInn7y2lcIVbCPZBiDmDw5pMtnSLZoCMvZtjgWc9l1m7/BWg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.0.tgz#b41e7ff898f988990c8a75d6f4fa283ba77f033b" + integrity sha512-pMwnuuxXct70H8l/nXKmh5lXSesn9kJ0APf4LqrztmWA8Ri4u4fHHZAlIgkvfotCa9FXYlQNvnZfAwF9tuvEKw== dependencies: d3-color "1" d3-dispatch "1" From 05efe41af078a28b30503934c7fadb2a56267751 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 17 Nov 2019 08:16:23 -0800 Subject: [PATCH 006/311] 5.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4267e936b17625..7b952bf3500e0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.13.1", + "version": "5.14.0", "description": "Data-Driven Documents", "keywords": [ "dom", From eb7c2c20d288e888d02631c75919be79b887aa0c Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 17 Nov 2019 14:50:47 -0800 Subject: [PATCH 007/311] Update d3-transition. --- API.md | 62 +++++++++++++++++++++++++++---------------------------- yarn.lock | 6 +++--- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/API.md b/API.md index 60093f8450263c..15d5df3a3616c7 100644 --- a/API.md +++ b/API.md @@ -1272,40 +1272,40 @@ An efficient queue for managing thousands of concurrent animations. * [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timeout) - schedule a timer that stops on its first callback. * [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.0) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.1) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_selection) - returns a selection for this transition. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_on) - await the end of a transition. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_textTween) - tween the text using a custom interpolator. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.0/README.md#interrupt) - interrupt the active transition for a given node. +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_merge) - merge this transition with another. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_transition) - schedule a new transition following this one. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_call) - call a function with this transition. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_size) - returns the count of elements. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_each) - call a function for each element. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_on) - add or remove transition event listeners. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_on) - await the end of a transition. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_textTween) - tween the text using a custom interpolator. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_ease) - specify the easing function. +* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#active) - select the active transition for a given node. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#interrupt) - interrupt the active transition for a given node. ## [Voronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) diff --git a/yarn.lock b/yarn.lock index 11295f0a79befd..4d4ec178324640 100644 --- a/yarn.lock +++ b/yarn.lock @@ -293,9 +293,9 @@ d3-timer@1: integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== d3-transition@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.0.tgz#b41e7ff898f988990c8a75d6f4fa283ba77f033b" - integrity sha512-pMwnuuxXct70H8l/nXKmh5lXSesn9kJ0APf4LqrztmWA8Ri4u4fHHZAlIgkvfotCa9FXYlQNvnZfAwF9tuvEKw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.1.tgz#3bce9a6a85f12fac107db05e798b49731800378d" + integrity sha512-bZYkOFBZaX+2ixSK3jnKJvGBoDWGlSOc80i0HBKg7iVCFmUDvMQgYFrofNfjAxN72rP20sfUSfQ/qtpP3v3ajw== dependencies: d3-color "1" d3-dispatch "1" From 37e9b0e48543ce4c2058f5a33f29b86f33993628 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 17 Nov 2019 14:50:51 -0800 Subject: [PATCH 008/311] 5.14.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b952bf3500e0b..0085e227ee363b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.14.0", + "version": "5.14.1", "description": "Data-Driven Documents", "keywords": [ "dom", From 86135e813abadb2393909373fe45a3a4b14cd43a Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 18 Nov 2019 16:28:27 -0800 Subject: [PATCH 009/311] Update d3-transition. --- API.md | 62 +++++++++++++++++++++++++++---------------------------- yarn.lock | 6 +++--- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/API.md b/API.md index 15d5df3a3616c7..e0875e376602e3 100644 --- a/API.md +++ b/API.md @@ -1272,40 +1272,40 @@ An efficient queue for managing thousands of concurrent animations. * [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timeout) - schedule a timer that stops on its first callback. * [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.1) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.2) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_selection) - returns a selection for this transition. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_on) - await the end of a transition. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_textTween) - tween the text using a custom interpolator. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.1/README.md#interrupt) - interrupt the active transition for a given node. +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_merge) - merge this transition with another. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_transition) - schedule a new transition following this one. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_call) - call a function with this transition. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_size) - returns the count of elements. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_each) - call a function for each element. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_on) - add or remove transition event listeners. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_on) - await the end of a transition. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_textTween) - tween the text using a custom interpolator. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_ease) - specify the easing function. +* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#active) - select the active transition for a given node. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#interrupt) - interrupt the active transition for a given node. ## [Voronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) diff --git a/yarn.lock b/yarn.lock index 4d4ec178324640..54f10b409dd1d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -293,9 +293,9 @@ d3-timer@1: integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== d3-transition@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.1.tgz#3bce9a6a85f12fac107db05e798b49731800378d" - integrity sha512-bZYkOFBZaX+2ixSK3jnKJvGBoDWGlSOc80i0HBKg7iVCFmUDvMQgYFrofNfjAxN72rP20sfUSfQ/qtpP3v3ajw== + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== dependencies: d3-color "1" d3-dispatch "1" From 5064e99419d253a5a785c659785d9bf037653dcc Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 20 Nov 2019 07:32:18 -0800 Subject: [PATCH 010/311] Update d3-brush. --- API.md | 28 ++++++++++++++-------------- yarn.lock | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/API.md b/API.md index e0875e376602e3..5a619b511ce0e8 100644 --- a/API.md +++ b/API.md @@ -116,23 +116,23 @@ Human-readable reference marks for scales. * [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. * [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickPadding) - set the padding between ticks and labels. -## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v1.1.4) +## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v1.1.5) Select a one- or two-dimensional region using the mouse or touch. -* [d3.brush](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush) - create a new two-dimensional brush. -* [d3.brushX](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushX) - create a brush along the *x*-dimension. -* [d3.brushY](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushY) - create a brush along the *y*-dimension. -* [*brush*](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#_brush) - apply the brush to a selection. -* [*brush*.move](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_move) - move the brush selection. -* [*brush*.clear](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_clear) - clear the brush selection. -* [*brush*.extent](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_extent) - define the brushable region. -* [*brush*.filter](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_filter) - control which input events initiate brushing. -* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_handleSize) - set the size of the brush handles. -* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_touchable) - set the touch support detector. -* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_keyModifiers) - enable or disable key interaction. -* [*brush*.on](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brush_on) - listen for brush events. -* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v1.1.4/README.md#brushSelection) - get the brush selection for a given node. +* [d3.brush](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush) - create a new two-dimensional brush. +* [d3.brushX](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushX) - create a brush along the *x*-dimension. +* [d3.brushY](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushY) - create a brush along the *y*-dimension. +* [*brush*](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#_brush) - apply the brush to a selection. +* [*brush*.move](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_move) - move the brush selection. +* [*brush*.clear](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_clear) - clear the brush selection. +* [*brush*.extent](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_extent) - define the brushable region. +* [*brush*.filter](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_filter) - control which input events initiate brushing. +* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_handleSize) - set the size of the brush handles. +* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_touchable) - set the touch support detector. +* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_keyModifiers) - enable or disable key interaction. +* [*brush*.on](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_on) - listen for brush events. +* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushSelection) - get the brush selection for a given node. ## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v1.0.6) diff --git a/yarn.lock b/yarn.lock index 54f10b409dd1d9..a939eb18b5e090 100644 --- a/yarn.lock +++ b/yarn.lock @@ -120,9 +120,9 @@ d3-axis@1: integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== d3-brush@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.4.tgz#a457887f558eb094b07d3db5c633facac6bd4cc4" - integrity sha512-DRcFXGcVZiJF644i78m/HM8P0U19hWYRFcAnacOVGvpOpzkqGm3H0EAoAH6jwyY/lqfH49d+5vz2TgznP/zlMA== + version "1.1.5" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" + integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== dependencies: d3-dispatch "1" d3-drag "1" From ef9dc7ce9efa3eb107b558f4644faa5d9adcc038 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 20 Nov 2019 07:32:23 -0800 Subject: [PATCH 011/311] 5.14.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0085e227ee363b..cc60342def3fd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.14.1", + "version": "5.14.2", "description": "Data-Driven Documents", "keywords": [ "dom", From 1126611a8972244ba2e876f57a71c82c3098331b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 20 Nov 2019 07:34:14 -0800 Subject: [PATCH 012/311] Squelch Rollup warnings. --- rollup.config.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 5fa18a4bd531e1..3a6a4ecacd45f1 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -5,6 +5,11 @@ import * as meta from "./package.json"; const copyright = `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`; +function onwarn(message, warn) { + if (message.code === "CIRCULAR_DEPENDENCY") return; + warn(message); +} + export default [ { input: "index.js", @@ -12,7 +17,8 @@ export default [ output: { file: "dist/d3.node.js", format: "cjs" - } + }, + onwarn }, { input: "index.js", @@ -27,7 +33,8 @@ export default [ format: "umd", indent: false, name: "d3" - } + }, + onwarn }, { input: "index.js", @@ -42,6 +49,7 @@ export default [ format: "umd", indent: false, name: "d3" - } + }, + onwarn } ]; From 4223190ca72929d1c561f3b6181ce5ac6f00aa53 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 29 Dec 2019 08:50:41 -0800 Subject: [PATCH 013/311] Update dependencies. --- API.md | 105 +++++++++++++++++++++++++++--------------------------- yarn.lock | 18 +++++----- 2 files changed, 62 insertions(+), 61 deletions(-) diff --git a/API.md b/API.md index 5a619b511ce0e8..a95e443210a4da 100644 --- a/API.md +++ b/API.md @@ -505,20 +505,20 @@ Force-directed graph layout using velocity Verlet integration. * [*radial*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_x) - set the target center *x*-coordinate. * [*radial*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_y) - set the target center *y*-coordinate. -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.2) +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.3) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v1.4.2/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatSpecifier) - parse a number format specifier. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.2/README.md#formatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.2/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.2/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.format](https://github.com/d3/d3-format/blob/v1.4.3/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatSpecifier) - parse a number format specifier. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.3/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionRound) - compute significant digits for rounded notation. ## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.11.9) @@ -702,37 +702,38 @@ Layout algorithms for visualizing hierarchical data. * [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packSiblings) - pack the specified array of circles. * [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packEnclose) - enclose the specified array of circles. -## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v1.3.3) +## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v1.4.0) Interpolate numbers, colors, strings, arrays, objects, whatever! -* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolate) - interpolate arbitrary values. -* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateArray) - interpolate arrays of arbitrary values. -* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateDate) - interpolate dates. -* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateNumber) - interpolate numbers. -* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateObject) - interpolate arbitrary objects. -* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRound) - interpolate integers. -* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateString) - interpolate strings with embedded numbers. -* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. -* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. -* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateZoom) - zoom and pan between two views. -* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgb) - interpolate RGB colors. -* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. -* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. -* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHsl) - interpolate HSL colors. -* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHslLong) - interpolate HSL colors, the long way. -* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateLab) - interpolate Lab colors. -* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHcl) - interpolate HCL colors. -* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHclLong) - interpolate HCL colors, the long way. -* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateCubehelix) - interpolate Cubehelix colors. -* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. -* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolate_gamma) - apply gamma correction during interpolation. -* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateHue) - interpolate a hue angle. -* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. -* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateBasis) - generate a B-spline through a set of values. -* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. -* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. -* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v1.3.3/README.md#quantize) - generate uniformly-spaced samples from an interpolator. +* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolate) - interpolate arbitrary values. +* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateArray) - interpolate arrays of arbitrary values. +* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateDate) - interpolate dates. +* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateNumber) - interpolate numbers. +* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateNumberArray) - interpolate arrays of numbers. +* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateObject) - interpolate arbitrary objects. +* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRound) - interpolate integers. +* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateString) - interpolate strings with embedded numbers. +* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. +* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. +* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateZoom) - zoom and pan between two views. +* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgb) - interpolate RGB colors. +* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. +* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. +* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHsl) - interpolate HSL colors. +* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHslLong) - interpolate HSL colors, the long way. +* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateLab) - interpolate Lab colors. +* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHcl) - interpolate HCL colors. +* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHclLong) - interpolate HCL colors, the long way. +* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateCubehelix) - interpolate Cubehelix colors. +* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. +* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolate_gamma) - apply gamma correction during interpolation. +* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHue) - interpolate a hue angle. +* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. +* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateBasis) - generate a B-spline through a set of values. +* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. +* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. +* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#quantize) - generate uniformly-spaced samples from an interpolator. ## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v1.0.9) @@ -1198,22 +1199,22 @@ Stack shapes, placing one adjacent to another, as in a stacked bar chart. * [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetSilhouette) - center the streamgraph around zero. * [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. -## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.2.2) +## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.2.3) Parse and format times, inspired by strptime and strftime. -* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormat) - alias for *locale*.format on the default locale. -* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeParse) - alias for *locale*.parse on the default locale. -* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. -* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#utcParse) - alias for *locale*.utcParse on the default locale. -* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#isoFormat) - an ISO 8601 UTC formatter. -* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#isoParse) - an ISO 8601 UTC parser. -* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormatLocale) - define a custom locale. -* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#timeFormatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_format) - create a time formatter. -* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_parse) - create a time parser. -* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_utcFormat) - create a UTC formatter. -* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.2/README.md#locale_utcParse) - create a UTC parser. +* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormat) - alias for *locale*.format on the default locale. +* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeParse) - alias for *locale*.parse on the default locale. +* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. +* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#utcParse) - alias for *locale*.utcParse on the default locale. +* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#isoFormat) - an ISO 8601 UTC formatter. +* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#isoParse) - an ISO 8601 UTC parser. +* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormatLocale) - define a custom locale. +* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_format) - create a time formatter. +* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_parse) - create a time parser. +* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_utcFormat) - create a UTC formatter. +* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_utcParse) - create a UTC parser. ## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v1.1.0) diff --git a/yarn.lock b/yarn.lock index a939eb18b5e090..6efb93915c03b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -200,9 +200,9 @@ d3-force@1: d3-timer "1" d3-format@1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.2.tgz#2a8c0ebf500f315981c2110eaaf70b82f472cb2b" - integrity sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww== + version "1.4.3" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" + integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== d3-geo@1: version "1.11.9" @@ -217,9 +217,9 @@ d3-hierarchy@1: integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== d3-interpolate@1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.3.tgz#cef4ba06dfccebcc45e4ae9d4d836a931a945076" - integrity sha512-wTsi4AqnC2raZ3Q9eqFxiZGUf5r6YiEdi23vXjjKSWXFYLCQNUtBVMk6uk2tg4cOY6YrjRdmSmI/Mf0ze1zPzQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== dependencies: d3-color "1" @@ -276,9 +276,9 @@ d3-shape@1: d3-path "1" d3-time-format@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.2.tgz#187597ffc6a0f37cb36bb7a1d7167cdc887ecda0" - integrity sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw== + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== dependencies: d3-time "1" From 7c711baf51a1485ed8f99f8a6a96dd388409ecf3 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 29 Dec 2019 08:50:50 -0800 Subject: [PATCH 014/311] 5.15.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc60342def3fd2..64a4d370a2628c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.14.2", + "version": "5.15.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 1a8655bdf0a90bae43c9b6946d9da2a1a4ef80d0 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 25 Mar 2020 22:34:35 -0700 Subject: [PATCH 015/311] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0bdaab2d18d21d..7c40c3c9b18bde 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ * [API Reference](https://github.com/d3/d3/blob/master/API.md) * [Release Notes](https://github.com/d3/d3/releases) -* [Gallery](https://github.com/d3/d3/wiki/Gallery) -* [Examples](https://observablehq.com/@d3) +* [Examples](https://observablehq.com/@d3/gallery) +* [Tutorial](https://observablehq.com/@d3/learn-d3) * [Wiki](https://github.com/d3/d3/wiki) ## Installing From 3c0359ab75a5464fc1d5aac5a1a33ceb006345e2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 25 Mar 2020 22:37:05 -0700 Subject: [PATCH 016/311] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c40c3c9b18bde..4fa9c4a1c60ac5 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ ## Resources +* [Introduction](https://observablehq.com/@d3/learn-d3) * [API Reference](https://github.com/d3/d3/blob/master/API.md) -* [Release Notes](https://github.com/d3/d3/releases) +* [Releases](https://github.com/d3/d3/releases) * [Examples](https://observablehq.com/@d3/gallery) -* [Tutorial](https://observablehq.com/@d3/learn-d3) * [Wiki](https://github.com/d3/d3/wiki) ## Installing From 0021f99ea1f369c4f5024e5e26c916e7e0a75a08 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 1 Apr 2020 12:24:31 -0700 Subject: [PATCH 017/311] Update d3-format. --- API.md | 22 +++++++++++----------- yarn.lock | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/API.md b/API.md index a95e443210a4da..53e07c3d11dc45 100644 --- a/API.md +++ b/API.md @@ -505,20 +505,20 @@ Force-directed graph layout using velocity Verlet integration. * [*radial*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_x) - set the target center *x*-coordinate. * [*radial*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_y) - set the target center *y*-coordinate. -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.3) +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.4) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v1.4.3/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatSpecifier) - parse a number format specifier. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.3/README.md#formatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.3/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.3/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.format](https://github.com/d3/d3-format/blob/v1.4.4/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatSpecifier) - parse a number format specifier. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.4/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionRound) - compute significant digits for rounded notation. ## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.11.9) diff --git a/yarn.lock b/yarn.lock index 6efb93915c03b5..afce31b81ce180 100644 --- a/yarn.lock +++ b/yarn.lock @@ -200,9 +200,9 @@ d3-force@1: d3-timer "1" d3-format@1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" - integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== + version "1.4.4" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" + integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== d3-geo@1: version "1.11.9" From 705b98cf4804b50a1540881f286124da5407dfd4 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 1 Apr 2020 12:24:40 -0700 Subject: [PATCH 018/311] 5.15.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64a4d370a2628c..4cb689e71ba96a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.15.0", + "version": "5.15.1", "description": "Data-Driven Documents", "keywords": [ "dom", From 6be4eaf7dc8bdd9befcdde6c4745594ae79dcb99 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 20 Apr 2020 10:58:51 -0700 Subject: [PATCH 019/311] Update dependencies. --- API.md | 266 +++++++++++++++++++++++++++--------------------------- yarn.lock | 12 +-- 2 files changed, 139 insertions(+), 139 deletions(-) diff --git a/API.md b/API.md index 53e07c3d11dc45..7a2e6edd834651 100644 --- a/API.md +++ b/API.md @@ -207,27 +207,27 @@ Group data into arbitrary hierarchies. * [*nest*.object](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_object) - generate the nest, returning an associative array. * [*nest*.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_entries) - generate the nest, returning an array of key-values tuples. -## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v1.4.0) +## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v1.4.1) Color manipulation and color space conversion. -* [d3.color](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color) - parse the given CSS color specifier. -* [*color*.copy](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_copy) - return a copy of this color. -* [*color*.rgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_rgb) - compute the RGB equivalent of this color. -* [*color*.brighter](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_brighter) - create a brighter copy of this color. -* [*color*.darker](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_darker) - create a darker copy of this color. -* [*color*.displayable](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. -* [*color*.formatHex](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. -* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatHsl) - returns the RGB string representation of this color. -* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_formatRgb) - returns the HSL string representation of this color. -* [*color*.toString](https://github.com/d3/d3-color/blob/v1.4.0/README.md#color_toString) - returns the RGB string representation of this color. -* [d3.rgb](https://github.com/d3/d3-color/blob/v1.4.0/README.md#rgb) - create a new RGB color. -* [d3.hsl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#hsl) - create a new HSL color. -* [d3.lab](https://github.com/d3/d3-color/blob/v1.4.0/README.md#lab) - create a new Lab color. -* [d3.hcl](https://github.com/d3/d3-color/blob/v1.4.0/README.md#hcl) - create a new HCL color. -* [d3.lch](https://github.com/d3/d3-color/blob/v1.4.0/README.md#lch) - create a new HCL color. -* [d3.gray](https://github.com/d3/d3-color/blob/v1.4.0/README.md#gray) - create a new Lab gray. -* [d3.cubehelix](https://github.com/d3/d3-color/blob/v1.4.0/README.md#cubehelix) - create a new Cubehelix color. +* [d3.color](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color) - parse the given CSS color specifier. +* [*color*.copy](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_copy) - return a copy of this color. +* [*color*.rgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.brighter](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_brighter) - create a brighter copy of this color. +* [*color*.darker](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_darker) - create a darker copy of this color. +* [*color*.displayable](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_displayable) - returns true if the color is displayable on standard hardware. +* [*color*.formatHex](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. +* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatHsl) - returns the RGB string representation of this color. +* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatRgb) - returns the HSL string representation of this color. +* [*color*.toString](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_toString) - returns the RGB string representation of this color. +* [d3.rgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#rgb) - create a new RGB color. +* [d3.hsl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#hsl) - create a new HSL color. +* [d3.lab](https://github.com/d3/d3-color/blob/v1.4.1/README.md#lab) - create a new Lab color. +* [d3.hcl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#hcl) - create a new HCL color. +* [d3.lch](https://github.com/d3/d3-color/blob/v1.4.1/README.md#lch) - create a new HCL color. +* [d3.gray](https://github.com/d3/d3-color/blob/v1.4.1/README.md#gray) - create a new Lab gray. +* [d3.cubehelix](https://github.com/d3/d3-color/blob/v1.4.1/README.md#cubehelix) - create a new Cubehelix color. ## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v1.5.0) @@ -520,124 +520,124 @@ Format numbers for human consumption. * [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. * [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionRound) - compute significant digits for rounded notation. -## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.11.9) +## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.12.0) Geographic projections, shapes and math. -### [Paths](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#paths) - -* [d3.geoPath](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoPath) - create a new geographic path generator. -* [*path*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_path) - project and render the specified feature. -* [*path*.area](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_area) - compute the projected planar area of a given feature. -* [*path*.bounds](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_bounds) - compute the projected planar bounding box of a given feature. -* [*path*.centroid](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_centroid) - compute the projected planar centroid of a given feature. -* [*path*.measure](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_measure) - compute the projected planar length of a given feature. -* [*path*.projection](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_projection) - set the geographic projection. -* [*path*.context](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_context) - set the render context. -* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#path_pointRadius) - set the radius to display point features. - -### [Projections](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projections) - -* [*projection*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_projection) - project the specified point from the sphere to the plane. -* [*projection*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_invert) - unproject the specified point from the plane to the sphere. -* [*projection*.stream](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_stream) - wrap the specified stream to project geometry. -* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_clipAngle) - set the radius of the clip circle. -* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. -* [*projection*.angle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_angle) - set the post-projection rotation. -* [*projection*.scale](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_scale) - set the scale factor. -* [*projection*.translate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_translate) - set the translation offset. -* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. -* [*projection*.center](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_center) - set the center point. -* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_rotate) - set the three-axis spherical rotation angles. -* [*projection*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection_precision) - set the precision threshold for adaptive sampling. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection.preclip) - set the spherical clipping stream transform. -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#projection.postclip) - set the planar clipping stream transform. -* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. -* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipCircle) - clips spherical geometries to a small circle. -* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAlbers) - the Albers equal-area conic projection. -* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAlbersUsa) - a composite Albers projection for the United States. -* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. -* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicConformal) - the conic conformal projection. -* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. -* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEquidistant) - the conic equidistant projection. -* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#conic_parallels) - set the two standard parallels. -* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEqualEarth) - the Equal Earth projection. -* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. -* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGnomonic) - the gnomonic projection. -* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoMercator) - the spherical Mercator projection. -* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoOrthographic) - the azimuthal orthographic projection. -* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStereographic) - the azimuthal stereographic projection. -* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. -* [*project*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_project) - project the specified point from the sphere to the plane. -* [*project*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#project_invert) - unproject the specified point from the plane to the sphere. -* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoProjection) - create a custom projection. -* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoProjectionMutator) - create a custom configurable projection. -* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. -* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicConformalRaw) - the raw conic conformal projection. -* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. -* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. -* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. -* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGnomonicRaw) - the raw gnomonic projection. -* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoMercatorRaw) - the raw Mercator projection. -* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. -* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. -* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. - -### [Spherical Math](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#spherical-math) - -* [d3.geoArea](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoArea) - compute the spherical area of a given feature. -* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. -* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoCentroid) - compute the spherical centroid of a given feature. -* [d3.geoContains](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoContains) - test whether a point is inside a given feature. -* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoDistance) - compute the great-arc distance between two points. -* [d3.geoLength](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. -* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoInterpolate) - interpolate between two points along a great arc. -* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoRotation) - create a rotation function for the specified angles. -* [*rotation*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_rotation) - rotate the given point around the sphere. -* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#rotation_invert) - unrotate the given point around the sphere. - -### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#spherical-shapes) - -* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoCircle) - create a circle generator. -* [*circle*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_circle) - generate a piecewise circle as a Polygon. -* [*circle*.center](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_center) - specify the circle center in latitude and longitude. -* [*circle*.radius](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_radius) - specify the angular radius in degrees. -* [*circle*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#circle_precision) - specify the precision of the piecewise circle. -* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGraticule) - create a graticule generator. -* [*graticule*](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#_graticule) - generate a MultiLineString of meridians and parallels. -* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. -* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. -* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extent) - get or set the major & minor extents. -* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extentMajor) - get or set the major extent. -* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_extentMinor) - get or set the minor extent. -* [*graticule*.step](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_step) - get or set the major & minor step intervals. -* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_stepMajor) - get or set the major step intervals. -* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_stepMinor) - get or set the minor step intervals. -* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#graticule_precision) - get or set the latitudinal precision. -* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoGraticule10) - generate the default 10° global graticule. - -### [Streams](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#streams) - -* [d3.geoStream](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoStream) - convert a GeoJSON object to a geometry stream. -* [*stream*.point](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_point) - indicates a point with the specified coordinates. -* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_lineStart) - indicates the start of a line or ring. -* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_lineEnd) - indicates the end of a line or ring. -* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_polygonStart) - indicates the start of a polygon. -* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_polygonEnd) - indicates the end of a polygon. -* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#stream_sphere) - indicates the sphere. - -### [Transforms](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#transforms) - -* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoIdentity) - scale, translate or clip planar geometry. -* [*identity*.reflectX](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#identity_reflectX) - reflect the *x*-dimension. -* [*identity*.reflectY](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#identity_reflectY) - reflect the *y*-dimension. -* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v1.11.9/README.md#geoTransform) - define a custom geometry transform. +### [Paths](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#paths) + +* [d3.geoPath](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoPath) - create a new geographic path generator. +* [*path*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_path) - project and render the specified feature. +* [*path*.area](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_area) - compute the projected planar area of a given feature. +* [*path*.bounds](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_bounds) - compute the projected planar bounding box of a given feature. +* [*path*.centroid](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_centroid) - compute the projected planar centroid of a given feature. +* [*path*.measure](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_measure) - compute the projected planar length of a given feature. +* [*path*.projection](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_projection) - set the geographic projection. +* [*path*.context](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_context) - set the render context. +* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_pointRadius) - set the radius to display point features. + +### [Projections](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projections) + +* [*projection*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_projection) - project the specified point from the sphere to the plane. +* [*projection*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. +* [*projection*.stream](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_stream) - wrap the specified stream to project geometry. +* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_clipAngle) - set the radius of the clip circle. +* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. +* [*projection*.angle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_angle) - set the post-projection rotation. +* [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_reflectX) - reflect the *x*-dimension. +* [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_reflectY) - reflect the *y*-dimension. +* [*projection*.scale](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_scale) - set the scale factor. +* [*projection*.translate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_translate) - set the translation offset. +* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. +* [*projection*.center](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_center) - set the center point. +* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. +* [*projection*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection.preclip) - set the spherical clipping stream transform. +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection.postclip) - set the planar clipping stream transform. +* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. +* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. +* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. +* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAlbers) - the Albers equal-area conic projection. +* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. +* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. +* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicConformal) - the conic conformal projection. +* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. +* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEquidistant) - the conic equidistant projection. +* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#conic_parallels) - set the two standard parallels. +* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. +* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoMercator) - the spherical Mercator projection. +* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoOrthographic) - the azimuthal orthographic projection. +* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. +* [*project*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_project) - project the specified point from the sphere to the plane. +* [*project*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#project_invert) - unproject the specified point from the plane to the sphere. +* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoProjection) - create a custom projection. +* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoProjectionMutator) - create a custom configurable projection. +* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. +* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. +* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. +* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. +* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. +* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. +* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoMercatorRaw) - the raw Mercator projection. +* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. +* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. +* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. + +### [Spherical Math](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#spherical-math) + +* [d3.geoArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoArea) - compute the spherical area of a given feature. +* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. +* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoCentroid) - compute the spherical centroid of a given feature. +* [d3.geoContains](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoContains) - test whether a point is inside a given feature. +* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoDistance) - compute the great-arc distance between two points. +* [d3.geoLength](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. +* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoInterpolate) - interpolate between two points along a great arc. +* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoRotation) - create a rotation function for the specified angles. +* [*rotation*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_rotation) - rotate the given point around the sphere. +* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#rotation_invert) - unrotate the given point around the sphere. + +### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#spherical-shapes) + +* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoCircle) - create a circle generator. +* [*circle*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_circle) - generate a piecewise circle as a Polygon. +* [*circle*.center](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_center) - specify the circle center in latitude and longitude. +* [*circle*.radius](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_radius) - specify the angular radius in degrees. +* [*circle*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_precision) - specify the precision of the piecewise circle. +* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGraticule) - create a graticule generator. +* [*graticule*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_graticule) - generate a MultiLineString of meridians and parallels. +* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. +* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. +* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extent) - get or set the major & minor extents. +* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extentMajor) - get or set the major extent. +* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extentMinor) - get or set the minor extent. +* [*graticule*.step](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_step) - get or set the major & minor step intervals. +* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_stepMajor) - get or set the major step intervals. +* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_stepMinor) - get or set the minor step intervals. +* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_precision) - get or set the latitudinal precision. +* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGraticule10) - generate the default 10° global graticule. + +### [Streams](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#streams) + +* [d3.geoStream](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStream) - convert a GeoJSON object to a geometry stream. +* [*stream*.point](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_point) - indicates a point with the specified coordinates. +* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_lineStart) - indicates the start of a line or ring. +* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_lineEnd) - indicates the end of a line or ring. +* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_polygonStart) - indicates the start of a polygon. +* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_polygonEnd) - indicates the end of a polygon. +* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_sphere) - indicates the sphere. + +### [Transforms](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#transforms) + +* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoIdentity) - scale, translate or clip planar geometry. +* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransform) - define a custom geometry transform. ## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v1.1.9) diff --git a/yarn.lock b/yarn.lock index afce31b81ce180..8cf7855ecca794 100644 --- a/yarn.lock +++ b/yarn.lock @@ -144,9 +144,9 @@ d3-collection@1: integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== d3-color@1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf" - integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== d3-contour@1: version "1.3.2" @@ -205,9 +205,9 @@ d3-format@1: integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== d3-geo@1: - version "1.11.9" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.11.9.tgz#77eaed14ba62fc2c0aef55cd2943849c866f7ae6" - integrity sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A== + version "1.12.0" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" + integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== dependencies: d3-array "1" From 7244e45e68af39c519f76667a03039d5b24dd453 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 20 Apr 2020 10:58:56 -0700 Subject: [PATCH 020/311] 5.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4cb689e71ba96a..b899355e59204f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.15.1", + "version": "5.16.0", "description": "Data-Driven Documents", "keywords": [ "dom", From b3fb0d3abaea569216edbf0f3668a370b1542f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Thu, 23 Jul 2020 14:47:03 +0200 Subject: [PATCH 021/311] two --- index.js | 3 +- package.json | 61 +++++++++++----------- yarn.lock | 144 +++++++++++++++++++++++++++++---------------------- 3 files changed, 113 insertions(+), 95 deletions(-) diff --git a/index.js b/index.js index c227635dac3d12..9dcf0bbdd49222 100644 --- a/index.js +++ b/index.js @@ -3,9 +3,9 @@ export * from "d3-array"; export * from "d3-axis"; export * from "d3-brush"; export * from "d3-chord"; -export * from "d3-collection"; export * from "d3-color"; export * from "d3-contour"; +export * from "d3-delaunay"; export * from "d3-dispatch"; export * from "d3-drag"; export * from "d3-dsv"; @@ -28,5 +28,4 @@ export * from "d3-time"; export * from "d3-time-format"; export * from "d3-timer"; export * from "d3-transition"; -export * from "d3-voronoi"; export * from "d3-zoom"; diff --git a/package.json b/package.json index b899355e59204f..14b88c9e397e9c 100644 --- a/package.json +++ b/package.json @@ -43,36 +43,35 @@ "tape": "4" }, "dependencies": { - "d3-array": "1", - "d3-axis": "1", - "d3-brush": "1", - "d3-chord": "1", - "d3-collection": "1", - "d3-color": "1", - "d3-contour": "1", - "d3-dispatch": "1", - "d3-drag": "1", - "d3-dsv": "1", - "d3-ease": "1", - "d3-fetch": "1", - "d3-force": "1", - "d3-format": "1", - "d3-geo": "1", - "d3-hierarchy": "1", - "d3-interpolate": "1", - "d3-path": "1", - "d3-polygon": "1", - "d3-quadtree": "1", - "d3-random": "1", - "d3-scale": "2", - "d3-scale-chromatic": "1", - "d3-selection": "1", - "d3-shape": "1", - "d3-time": "1", - "d3-time-format": "2", - "d3-timer": "1", - "d3-transition": "1", - "d3-voronoi": "1", - "d3-zoom": "1" + "d3-array": "2", + "d3-axis": "2", + "d3-brush": "2", + "d3-chord": "2", + "d3-color": "2", + "d3-contour": "2", + "d3-delaunay": "5", + "d3-dispatch": "2", + "d3-drag": "2", + "d3-dsv": "2", + "d3-ease": "2", + "d3-fetch": "2", + "d3-force": "2", + "d3-format": "2", + "d3-geo": "2", + "d3-hierarchy": "2", + "d3-interpolate": "2", + "d3-path": "2", + "d3-polygon": "2", + "d3-quadtree": "2", + "d3-random": "2", + "d3-scale": "3", + "d3-scale-chromatic": "2", + "d3-selection": "2", + "d3-shape": "2", + "d3-time": "2", + "d3-time-format": "3", + "d3-timer": "2", + "d3-transition": "2", + "d3-zoom": "2" } } diff --git a/yarn.lock b/yarn.lock index 8cf7855ecca794..3d6ac6afba1472 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,17 +109,22 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: +d3-array@1, d3-array@^1.1.1: version "1.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== -d3-axis@1: +"d3-array@1.2.0 - 2", d3-array@2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" + integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== + +d3-axis@2: version "1.0.12" resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== -d3-brush@1: +d3-brush@2: version "1.1.5" resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== @@ -130,37 +135,38 @@ d3-brush@1: d3-selection "1" d3-transition "1" -d3-chord@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" - integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== +d3-chord@2: + version "2.0.0-rc.9" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0-rc.9.tgz#9a3dbd5549bccf83d083f9d0f5fcf71057409e50" + integrity sha512-TLdUu6WlF01Y0xv4ElFjQSJJAGyyirMw/O6mhS46p9Oo6MhJMAIy1pEZ0ugjoT4jcxdb6miHdr7zHukccznkiQ== dependencies: - d3-array "1" d3-path "1" -d3-collection@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -d3-color@1: +d3-color@1, "d3-color@1 - 2", d3-color@2: version "1.4.1" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== -d3-contour@1: +d3-contour@2: version "1.3.2" resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== dependencies: d3-array "^1.1.1" -d3-dispatch@1: +d3-delaunay@5: + version "5.3.0" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-5.3.0.tgz#b47f05c38f854a4e7b3cea80e0bb12e57398772d" + integrity sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w== + dependencies: + delaunator "4" + +d3-dispatch@1, "d3-dispatch@1 - 2", d3-dispatch@2: version "1.0.6" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== -d3-drag@1: +d3-drag@1, d3-drag@2: version "1.2.5" resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== @@ -168,7 +174,7 @@ d3-drag@1: d3-dispatch "1" d3-selection "1" -d3-dsv@1: +d3-dsv@1, d3-dsv@2: version "1.2.0" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== @@ -177,73 +183,72 @@ d3-dsv@1: iconv-lite "0.4" rw "1" -d3-ease@1: +d3-ease@1, "d3-ease@1 - 2", d3-ease@2: version "1.0.6" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== -d3-fetch@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" - integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== +d3-fetch@2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.2.0.tgz#15ce2ecfc41b092b1db50abd2c552c2316cf7fc7" + integrity sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA== dependencies: d3-dsv "1" -d3-force@1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" - integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== +d3-force@2: + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.0.1.tgz#31750eee8c43535301d571195bf9683beda534e2" + integrity sha512-zh73/N6+MElRojiUG7vmn+3vltaKon7iD5vB/7r9nUaBeftXMzRo5IWEG63DLBCto4/8vr9i3m9lwr1OTJNiCg== dependencies: - d3-collection "1" d3-dispatch "1" d3-quadtree "1" d3-timer "1" -d3-format@1: +d3-format@1, d3-format@2: version "1.4.4" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== -d3-geo@1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" - integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== +d3-geo@2: + version "1.12.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" + integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== dependencies: d3-array "1" -d3-hierarchy@1: - version "1.1.9" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== +d3-hierarchy@2: + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0-rc.3.tgz#a24ff8f13d1def7e7a8ead1d01806a9da78e9f3e" + integrity sha512-HFAWE5A619jEP3uY1pYT+YO8AzQs9C6Em0WgNm4Y6YTFGtKLpODlVpli9KDaTkuCIlkkt2SNQRmsot8/+Ef46w== -d3-interpolate@1: +d3-interpolate@1, "d3-interpolate@1 - 2", d3-interpolate@2, d3-interpolate@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== dependencies: d3-color "1" -d3-path@1: +d3-path@1, d3-path@2: version "1.0.9" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== -d3-polygon@1: +d3-polygon@2: version "1.0.6" resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== -d3-quadtree@1: +d3-quadtree@1, d3-quadtree@2: version "1.0.7" resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== -d3-random@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" - integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== +d3-random@2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.1.0.tgz#312f348d789a80f8d05eb1e75fa40d30acb25029" + integrity sha512-NY3GKeKxlRAXzUNun8Pv36Mciggnf8v+4kCDEoKaAbw4qmpfJ5LvMazdiYNDEiuM4hQSVHnxNeuYdVRJlFw9dg== -d3-scale-chromatic@1: +d3-scale-chromatic@2: version "1.5.0" resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== @@ -251,15 +256,14 @@ d3-scale-chromatic@1: d3-color "1" d3-interpolate "1" -d3-scale@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" - integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== +d3-scale@3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69" + integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA== dependencies: - d3-array "^1.2.0" - d3-collection "1" + d3-array "1.2.0 - 2" d3-format "1" - d3-interpolate "1" + d3-interpolate "^1.2.0" d3-time "1" d3-time-format "2" @@ -268,26 +272,31 @@ d3-selection@1, d3-selection@^1.1.0: resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== -d3-shape@1: +d3-selection@2: + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0-rc.3.tgz#2275242adba02eae0fdfd12671bb5ab7c7d9713d" + integrity sha512-aRSv8+y9u/orAn+fcwErxdSSUnm/7KVzGUPvnOFGaAow01itJmwTbC6Z5dlv4VT3oQsv7xXDr/p4qHrYqbVZ2g== + +d3-shape@2: version "1.3.7" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== dependencies: d3-path "1" -d3-time-format@2: +d3-time-format@2, d3-time-format@3: version "2.2.3" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== dependencies: d3-time "1" -d3-time@1: +d3-time@1, d3-time@2: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== -d3-timer@1: +d3-timer@1, "d3-timer@1 - 2", d3-timer@2: version "1.0.10" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== @@ -304,12 +313,18 @@ d3-transition@1: d3-selection "^1.1.0" d3-timer "1" -d3-voronoi@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" - integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== +d3-transition@2: + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.2.tgz#de33a90d2f753641d85f3333a11ac5802d3190c6" + integrity sha512-/LFCu2OdPgdDjTG9qTFHzCEaqFWXNRzuuyMWctAp0VO4thlApAsO/YGDDoKxK3Vf9DubYpB52fwLWiohgKiCbA== + dependencies: + d3-color "1 - 2" + d3-dispatch "1 - 2" + d3-ease "1 - 2" + d3-interpolate "1 - 2" + d3-timer "1 - 2" -d3-zoom@1: +d3-zoom@2: version "1.8.3" resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== @@ -337,6 +352,11 @@ defined@~1.0.0: resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +delaunator@4: + version "4.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" + integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== + es-abstract@^1.5.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" From 1ba48dc33949b93018112b033d85be1c40d1fc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 27 Jul 2020 18:41:24 +0200 Subject: [PATCH 022/311] towards d3v6: use "next" modules all over first build available at https://files-1ozi0nq54.vercel.app/d3.js --- package.json | 58 ++++----- test/d3-test.js | 11 -- yarn.lock | 314 ++++++++++++++++++++++-------------------------- 3 files changed, 175 insertions(+), 208 deletions(-) diff --git a/package.json b/package.json index 14b88c9e397e9c..f09f9c4c5f0a5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "5.16.0", + "version": "6.0.0-alpha.0000", "description": "Data-Driven Documents", "keywords": [ "dom", @@ -44,34 +44,34 @@ }, "dependencies": { "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", + "d3-axis": ">=2.0.0-rc.1", + "d3-brush": ">=2.0.0-rc.1", + "d3-chord": ">=2.0.0-rc.1", + "d3-color": ">=2.0.0-rc.1", + "d3-contour": ">=2.0.0-rc.1", "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" + "d3-dispatch": ">=2.0.0-rc.1", + "d3-drag": ">=2.0.0-rc.1", + "d3-dsv": ">=2.0.0-rc.1", + "d3-ease": ">=2.0.0-rc.1", + "d3-fetch": ">=2.0.0-rc.1", + "d3-force": ">=2.1.0-rc.1", + "d3-format": ">=2.0.0-rc.1", + "d3-geo": ">=2.0.0-rc.1", + "d3-hierarchy": ">=2.0.0-rc.3", + "d3-interpolate": ">=2.0.0-rc.1", + "d3-path": ">=2.0.0-rc.1", + "d3-polygon": ">=2.0.0-rc.1", + "d3-quadtree": ">=2.0.0-rc.1", + "d3-random": ">=2.0.0-rc.1", + "d3-scale": ">=3.3.0-rc.2", + "d3-scale-chromatic": ">=2.0.0-rc.1", + "d3-selection": ">=2.0.0-rc.3", + "d3-shape": ">=2.0.0-rc.1", + "d3-time": ">=2.0.0-rc.1", + "d3-time-format": ">=3.0.0-rc.1", + "d3-timer": ">=2.0.0-rc.1", + "d3-transition": ">=2.0.0-rc.1", + "d3-zoom": ">=2.0.0-rc.1" } } diff --git a/test/d3-test.js b/test/d3-test.js index a28f4dc0191628..e0f8f4916fdefe 100644 --- a/test/d3-test.js +++ b/test/d3-test.js @@ -8,17 +8,6 @@ tape("version matches package.json", function(test) { test.end(); }); -tape("d3.event is a getter for d3Selection.event", function(test) { - test.equal(d3.event, null); - try { - d3Selection.event = 42; - test.equal(d3.event, 42); - } finally { - d3Selection.event = null; - } - test.end(); -}); - for (var dependency in require("../package.json").dependencies) { testExports(dependency); } diff --git a/yarn.lock b/yarn.lock index 3d6ac6afba1472..922bf8d0c1fa3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,50 +109,45 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -d3-array@1, d3-array@^1.1.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - -"d3-array@1.2.0 - 2", d3-array@2: +"d3-array@1 - 2", "d3-array@1.2.0 - 2", d3-array@2: version "2.4.0" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== -d3-axis@2: - version "1.0.12" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" - integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== +d3-axis@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.0.0-rc.1.tgz#80651538f904c315ec31ff121fcbd5674b86167f" + integrity sha512-WP6bB7LlR0xleB1EWWyp3NFklknUCUhJ9HjYTyFMRHNgpP2AOWdLPsy+/peyZYrT6I1Uy1KpLGx+LMSAuK76Ig== -d3-brush@2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" - integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== +d3-brush@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.0.0-rc.1.tgz#47caafb86059b7cb97eeee7f46b8a5e2c8df9247" + integrity sha512-JUL6V+fa4j9eY1kg7Uj7zOfbXEPNCxd6OeI88FLHanc7cGgnEpfvdWojbs9iizvxtR8BEAYJimYrzlQ+vjfDnw== dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" + d3-dispatch ">=2.0.0-rc.1" + d3-drag ">=2.0.0-rc.1" + d3-interpolate ">=2.0.0-rc.1" + d3-selection ">=2.0.0-rc.3" + d3-transition ">=2.0.0-rc.1" -d3-chord@2: - version "2.0.0-rc.9" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0-rc.9.tgz#9a3dbd5549bccf83d083f9d0f5fcf71057409e50" - integrity sha512-TLdUu6WlF01Y0xv4ElFjQSJJAGyyirMw/O6mhS46p9Oo6MhJMAIy1pEZ0ugjoT4jcxdb6miHdr7zHukccznkiQ== +d3-chord@>=2.0.0-rc.1: + version "2.0.0-rc.10" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0-rc.10.tgz#0108251c3f0423480685ff4ee7efdeb18363ed14" + integrity sha512-peWSXMF7fd6h5GER1JKhUsotgNjVvhPADZDo1sl5MJ17t4vfmtAdSu0FSHCy3Ex+kvENlIc0tSosiuAGf3FPhQ== dependencies: - d3-path "1" + d3-path ">=2.0.0-rc.1" -d3-color@1, "d3-color@1 - 2", d3-color@2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" - integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== +d3-color@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0-rc.1.tgz#306e5424d97d7c392fbb5f4e2f71a19692b625d1" + integrity sha512-qG47cofgHAELBblsjxvnloC3EQ0wu33aqZ5DdV8wljDKJEcY1eTX6WrIstIG6y93hJvaVFCzQmglNXt6B6bqBA== -d3-contour@2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" - integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== +d3-contour@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-2.0.0-rc.1.tgz#009f3d1193bdd40bbb15e48d836df0d26861b980" + integrity sha512-tBIVnQixRwd6jCEbxbg91tHO2Qhcej0LRXzDUUguRDtouGop+OI6YBueMwdBWt2dEr7EfIzlKKEe9iNEUwtoHw== dependencies: - d3-array "^1.1.1" + d3-array "2" d3-delaunay@5: version "5.3.0" @@ -161,179 +156,162 @@ d3-delaunay@5: dependencies: delaunator "4" -d3-dispatch@1, "d3-dispatch@1 - 2", d3-dispatch@2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== +d3-dispatch@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0-rc.1.tgz#cb7a29779b4dd4241ccef5b8a19f46a5e727f47b" + integrity sha512-JRzTbYPZ1GDu+eGZPOVyyhveu49PEL3msPVXBFEUDk0xCqhX7Eu2tCVcl+1gculBCkj6LEW2f725QmxWVsOPaA== -d3-drag@1, d3-drag@2: - version "1.2.5" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" - integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== +d3-drag@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-2.0.0-rc.1.tgz#640ab84abe5448d80a9a18972e95cfc64536d8dd" + integrity sha512-1xDDuOveEDs5hPbZxwoJFXWLiF0l7xjYXw00WBVzUR0xq6DEcWe9m8EM/ebmZAKnIn2lI/8rdthFpLHD/brxBg== dependencies: - d3-dispatch "1" - d3-selection "1" + d3-dispatch ">=2.0.0-rc.1" + d3-selection ">=2.0.0-rc.3" -d3-dsv@1, d3-dsv@2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== +d3-dsv@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0-rc.1.tgz#cccb6b07c3c07d0726eae001c4cbd6afef850c8c" + integrity sha512-l4g69U1cWHQh85fybc2/JOpfQ2jRvL/oU8b9XrdWb0y5B7kZVY5HKMP0Y5I2Wzd9/0UDxBdFwHK5HcPIPM9zHA== dependencies: commander "2" iconv-lite "0.4" rw "1" -d3-ease@1, "d3-ease@1 - 2", d3-ease@2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" - integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== +d3-ease@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-2.0.0-rc.1.tgz#35259de8806b89a84a7ccc8939882075f251389f" + integrity sha512-BzV2TjCGL59wwt2bgQ/8i+iwu7+FWGybI97DfaO/CnosUYRTHpYB5P+/KfMzx7UJAVeZ4RdyZv0daoKQc3TCZQ== -d3-fetch@2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.2.0.tgz#15ce2ecfc41b092b1db50abd2c552c2316cf7fc7" - integrity sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA== +d3-fetch@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-2.0.0-rc.1.tgz#880690a78eb64dea5ea3a506b9da329fc28fefa3" + integrity sha512-VxTPDmXoQMFzhPYs+Csw/ews6xH+h/lBQDaJ3xgxhYFvl2Z2gbAj7VNHNVVkLQ0fAetLHbwVS0tOqFJFJJrRCA== dependencies: - d3-dsv "1" + d3-dsv ">=2.0.0-rc.1" -d3-force@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.0.1.tgz#31750eee8c43535301d571195bf9683beda534e2" - integrity sha512-zh73/N6+MElRojiUG7vmn+3vltaKon7iD5vB/7r9nUaBeftXMzRo5IWEG63DLBCto4/8vr9i3m9lwr1OTJNiCg== +d3-force@>=2.1.0-rc.1: + version "2.1.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.0-rc.1.tgz#fc2c312283473c1aae4074b49ac2a575455993e5" + integrity sha512-wzvNGdMkTzT4Ev7jS8bWfCaUVtVJjy6xhjUWC/fduNzCvMoV3sB6VL6lDLp9w7gDSlpdysFMy63AcKvmPlTbzA== dependencies: - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" + d3-dispatch ">=2.0.0-rc.1" + d3-quadtree ">=2.0.0-rc.1" + d3-timer ">=2.0.0-rc.1" -d3-format@1, d3-format@2: - version "1.4.4" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" - integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== +d3-format@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0-rc.1.tgz#2deadd018e280c73a210342e2e8ee90ed2e0c973" + integrity sha512-ouuOXO2IoMtBl5NDXc7fqIal4A0iuLOkpThjEATNU/Xk4ohd2ly+HwL80Y6BjzbvKCHgz2ytVeWUycZ1jOjeAA== -d3-geo@2: - version "1.12.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" - integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== +d3-geo@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0-rc.1.tgz#59c0739babb0cffd677474e31a6f59b569d6b1a3" + integrity sha512-HcLMtHjudGeOUQJCxi5nW9vjGrSMb9hlKqcYXna3lunxQRpic3BVnxUs4cKvJ8+xp9x5LGkMgu7iDhEbxh/LPg== dependencies: - d3-array "1" + d3-array "1 - 2" -d3-hierarchy@2: +d3-hierarchy@>=2.0.0-rc.3: version "2.0.0-rc.3" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0-rc.3.tgz#a24ff8f13d1def7e7a8ead1d01806a9da78e9f3e" integrity sha512-HFAWE5A619jEP3uY1pYT+YO8AzQs9C6Em0WgNm4Y6YTFGtKLpODlVpli9KDaTkuCIlkkt2SNQRmsot8/+Ef46w== -d3-interpolate@1, "d3-interpolate@1 - 2", d3-interpolate@2, d3-interpolate@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" - integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== +d3-interpolate@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.0-rc.1.tgz#894989e6051c8fef5632be1a67d6734b4974b3e8" + integrity sha512-QJ7SdIqRvHada4WDkeCosJbn56ssRCs0QyPQhOZnlgpD3aNw14zssGrwF14E4ZCgrZgDf8J6mXXLAcyFnFhX7A== dependencies: - d3-color "1" + d3-color ">=2.0.0-rc.1" -d3-path@1, d3-path@2: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== +d3-path@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0-rc.1.tgz#367192c0a1a83de31703b64726d772dba56d1cd5" + integrity sha512-sT5X1hMlP3s59ZZyY/qlAvIkZCpNcynrHaVc9cqMARs5w++4IjI1RwcPUt5zpkfflGvFN/tOPq+smk0Eljsyjw== -d3-polygon@2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" - integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== +d3-polygon@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-2.0.0-rc.1.tgz#2807d6e4c17714b528d7832c7854330ad50b0e68" + integrity sha512-5KLWKOU5NTPBMqDeYsXm9LUYkYDv7WMPgIhlW/hi5oSK6k0CDIimW6cBme12ruv1MNk60nZngdAbCRlGg/61FA== -d3-quadtree@1, d3-quadtree@2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== +d3-quadtree@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0-rc.1.tgz#afc76b7ca3f63c3e0cb88fc246b30276beab0623" + integrity sha512-rt2PaorxXzxZYHw1nSM82nJjIj91VU3/r40LPNBGqIhRXlTuAlgspOH8/w85OOCqxSsV0c1qKwbzYIu/8bwD7A== -d3-random@2: +d3-random@>=2.0.0-rc.1: version "2.1.0" resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.1.0.tgz#312f348d789a80f8d05eb1e75fa40d30acb25029" integrity sha512-NY3GKeKxlRAXzUNun8Pv36Mciggnf8v+4kCDEoKaAbw4qmpfJ5LvMazdiYNDEiuM4hQSVHnxNeuYdVRJlFw9dg== -d3-scale-chromatic@2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" - integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== +d3-scale-chromatic@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0-rc.1.tgz#0d45342529e1712893f6a5d9bfde13147da62136" + integrity sha512-7BaAIv0qXek5DnRriJvn3l7dSuWPqTz+xl5thtqtJ1c/maPUoBLG3FOnJEIQKvpmvouhxLCUCt5jRWu+I13QoQ== dependencies: - d3-color "1" - d3-interpolate "1" + d3-color ">=2.0.0-rc.1" + d3-interpolate ">=2.0.0-rc.1" -d3-scale@3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69" - integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA== +d3-scale@>=3.3.0-rc.2: + version "3.3.0-rc.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0-rc.2.tgz#45416196b3e9cf6aee49f3a913abcd2516da78ac" + integrity sha512-Mnmy0N2CbXxPN9UIS4YsEiLykyGyNAnccjYmmWZVf0GTb5+vgkNSWDo/up+8mqCY5R0vv4vHjnEFSvn4pLLqUA== dependencies: d3-array "1.2.0 - 2" - d3-format "1" - d3-interpolate "^1.2.0" - d3-time "1" - d3-time-format "2" + d3-format ">=2.0.0-rc.1" + d3-interpolate ">=2.0.0-rc.1" + d3-time ">=2.0.0-rc.1" + d3-time-format ">=3.0.0-rc.1" -d3-selection@1, d3-selection@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" - integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== - -d3-selection@2: +d3-selection@>=2.0.0-rc.3: version "2.0.0-rc.3" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0-rc.3.tgz#2275242adba02eae0fdfd12671bb5ab7c7d9713d" integrity sha512-aRSv8+y9u/orAn+fcwErxdSSUnm/7KVzGUPvnOFGaAow01itJmwTbC6Z5dlv4VT3oQsv7xXDr/p4qHrYqbVZ2g== -d3-shape@2: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -d3-time-format@2, d3-time-format@3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" - integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== - dependencies: - d3-time "1" - -d3-time@1, d3-time@2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - -d3-timer@1, "d3-timer@1 - 2", d3-timer@2: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - -d3-transition@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" - integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -d3-transition@2: - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.2.tgz#de33a90d2f753641d85f3333a11ac5802d3190c6" - integrity sha512-/LFCu2OdPgdDjTG9qTFHzCEaqFWXNRzuuyMWctAp0VO4thlApAsO/YGDDoKxK3Vf9DubYpB52fwLWiohgKiCbA== - dependencies: - d3-color "1 - 2" - d3-dispatch "1 - 2" - d3-ease "1 - 2" - d3-interpolate "1 - 2" - d3-timer "1 - 2" - -d3-zoom@2: - version "1.8.3" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" - integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" +d3-shape@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0-rc.1.tgz#2593a3ba4d69bbc79dedfbc2beb81bf74f4bb1a0" + integrity sha512-hGtppAmT84ax+KEnjyX11JKu05VchcRLo0Q7VddfNHC6BGTNiFtC4oMRHWcPyBN0bPDgeHqaojxL0lqWXD+q8w== + dependencies: + d3-path ">=2.0.0-rc.1" + +d3-time-format@>=3.0.0-rc.1: + version "3.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0-rc.1.tgz#1cdc64cbbef4a8864ac9d384afcc4d8e5c693bca" + integrity sha512-KFiMbuoR1A150vgVKrzDwHvyTackcGDr2NgleKf7YaTvLt9mEyRSYfxwRAoujUip5Jxai1vGUNK7jlw5CM2uFQ== + dependencies: + d3-time ">=2.0.0-rc.1" + +d3-time@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0-rc.1.tgz#167fdc57e4d060fc3ede7e674932c6d612fb4be5" + integrity sha512-V5s10ubtsbm68x+ljgyA0M9p+Em5cAJKkQ3jJhF7x9cEW30CDle9o3ZVLSByrdj3VfZIwbanrLe0hJyQ957UhQ== + +d3-timer@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0-rc.1.tgz#8afc777810198f28d9b2ac1ef8765b767ce4bc22" + integrity sha512-Kfi4LnjFC1t1MnnjCrHh3TyQIJr9/mMjmjeTFYwG364CtTKtv8snI/juT5zoiCCsMwrxdzwrM7Kmpj24p/AClw== + +d3-transition@>=2.0.0-rc.1, d3-transition@>=2.0.0-rc.3: + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.3.tgz#7d796b7f31ed6b814096235dd3dcf12121669f5a" + integrity sha512-g3otrqo4z1WEbT3QSRu7lrzwvrrY1t2Ao5YkDA6Cr5qo4vfDpJBZt/uc/Hov6pBOIYCXyaFDVeiIR+jkc8lU3g== + dependencies: + d3-color ">=2.0.0-rc.1" + d3-dispatch ">=2.0.0-rc.1" + d3-ease ">=2.0.0-rc.1" + d3-interpolate ">=2.0.0-rc.1" + d3-timer ">=2.0.0-rc.1" + +d3-zoom@>=2.0.0-rc.1: + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-2.0.0-rc.1.tgz#78cd31917ca530548dfed2f9ff8a1121347e87d6" + integrity sha512-kw/9E9XLqNzpuRzwroJ25jV5+7UtGSoLxbMeDMfOUXHQGcJeADvtCk56vk0pUtZ/I7fx7+nFZ5hKWChs6DU0xA== + dependencies: + d3-dispatch ">=2.0.0-rc.1" + d3-drag ">=2.0.0-rc.1" + d3-interpolate ">=2.0.0-rc.1" + d3-selection ">=2.0.0-rc.3" + d3-transition ">=2.0.0-rc.3" deep-equal@~1.0.1: version "1.0.1" From 47a043dbd83190b242fa98737c04234ea151ed23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 28 Jul 2020 15:56:33 +0200 Subject: [PATCH 023/311] =?UTF-8?q?next=20time=20this=20should=20avoid=20p?= =?UTF-8?q?ushing=20v6=20to=20d3js.org/d3.v5.js=20and=20breaking=20the=20i?= =?UTF-8?q?nternets=20=F0=9F=A5=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f09f9c4c5f0a5c..5c79667e941cf3 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "pretest": "rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c", "test": "tape 'test/**/*-test.js'", "prepublishOnly": "yarn test", - "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \"${npm_package_version}\" && git tag -am \"${npm_package_version}\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js" + "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \"${npm_package_version}\" && git tag -am \"${npm_package_version}\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js" }, "devDependencies": { "json2module": "0.0", From cca28a0f2104c51e47a91338d17bbe14842c485a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 28 Jul 2020 15:57:05 +0200 Subject: [PATCH 024/311] d3@6.0.0-rc.1 --- package.json | 4 ++-- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5c79667e941cf3..ccb2a30c5b4ab5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.0.0-alpha.0000", + "version": "6.0.0-rc.1", "description": "Data-Driven Documents", "keywords": [ "dom", @@ -55,7 +55,7 @@ "d3-dsv": ">=2.0.0-rc.1", "d3-ease": ">=2.0.0-rc.1", "d3-fetch": ">=2.0.0-rc.1", - "d3-force": ">=2.1.0-rc.1", + "d3-force": ">=2.1.0-rc.2", "d3-format": ">=2.0.0-rc.1", "d3-geo": ">=2.0.0-rc.1", "d3-hierarchy": ">=2.0.0-rc.3", diff --git a/yarn.lock b/yarn.lock index 922bf8d0c1fa3f..ad409eaedbff29 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,10 +190,10 @@ d3-fetch@>=2.0.0-rc.1: dependencies: d3-dsv ">=2.0.0-rc.1" -d3-force@>=2.1.0-rc.1: - version "2.1.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.0-rc.1.tgz#fc2c312283473c1aae4074b49ac2a575455993e5" - integrity sha512-wzvNGdMkTzT4Ev7jS8bWfCaUVtVJjy6xhjUWC/fduNzCvMoV3sB6VL6lDLp9w7gDSlpdysFMy63AcKvmPlTbzA== +d3-force@>=2.1.0-rc.2: + version "2.1.0-rc.2" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.0-rc.2.tgz#254c7892d2e9c8aa02bd8438fe105b21a4a6e6b8" + integrity sha512-nWtwGFj4B6YSd669pt8AeWqua2AyHfx8N0U8mlhgS3LSBKQNxYXyrbIA3RB11MVQEGydL40V7EXeOeped3Mxzw== dependencies: d3-dispatch ">=2.0.0-rc.1" d3-quadtree ">=2.0.0-rc.1" From 351d8eba76437da47062906e91750ad0ac20c439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Fri, 31 Jul 2020 09:32:42 +0200 Subject: [PATCH 025/311] v6.0.0-rc.2 --- package.json | 10 +++++----- yarn.lock | 34 +++++++++++++++++----------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index ccb2a30c5b4ab5..a260b2520b5b07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.0.0-rc.1", + "version": "6.0.0-rc.2", "description": "Data-Driven Documents", "keywords": [ "dom", @@ -43,7 +43,7 @@ "tape": "4" }, "dependencies": { - "d3-array": "2", + "d3-array": "^2.5", "d3-axis": ">=2.0.0-rc.1", "d3-brush": ">=2.0.0-rc.1", "d3-chord": ">=2.0.0-rc.1", @@ -57,21 +57,21 @@ "d3-fetch": ">=2.0.0-rc.1", "d3-force": ">=2.1.0-rc.2", "d3-format": ">=2.0.0-rc.1", - "d3-geo": ">=2.0.0-rc.1", + "d3-geo": ">=2.0.0-rc.2", "d3-hierarchy": ">=2.0.0-rc.3", "d3-interpolate": ">=2.0.0-rc.1", "d3-path": ">=2.0.0-rc.1", "d3-polygon": ">=2.0.0-rc.1", "d3-quadtree": ">=2.0.0-rc.1", "d3-random": ">=2.0.0-rc.1", - "d3-scale": ">=3.3.0-rc.2", + "d3-scale": ">=3.3.0-rc.3", "d3-scale-chromatic": ">=2.0.0-rc.1", "d3-selection": ">=2.0.0-rc.3", "d3-shape": ">=2.0.0-rc.1", "d3-time": ">=2.0.0-rc.1", "d3-time-format": ">=3.0.0-rc.1", "d3-timer": ">=2.0.0-rc.1", - "d3-transition": ">=2.0.0-rc.1", + "d3-transition": ">=2.0.0-rc.5", "d3-zoom": ">=2.0.0-rc.1" } } diff --git a/yarn.lock b/yarn.lock index ad409eaedbff29..e68737c7833a66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,10 +109,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -"d3-array@1 - 2", "d3-array@1.2.0 - 2", d3-array@2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" - integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== +"d3-array@1.2.0 - 2", d3-array@2, d3-array@^2.5: + version "2.5.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.5.0.tgz#d3f3043aabb75a17e2e78e3723aff4004ede3c5b" + integrity sha512-U+CrYn19GmiKeI9qU1RLV1p5ZodBKXw64k9Z3Id6d11LLuZ4JdyCnMT6W/2b84bvqEMFU15zg/JC3/oRYTanVg== d3-axis@>=2.0.0-rc.1: version "2.0.0-rc.1" @@ -204,12 +204,12 @@ d3-format@>=2.0.0-rc.1: resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0-rc.1.tgz#2deadd018e280c73a210342e2e8ee90ed2e0c973" integrity sha512-ouuOXO2IoMtBl5NDXc7fqIal4A0iuLOkpThjEATNU/Xk4ohd2ly+HwL80Y6BjzbvKCHgz2ytVeWUycZ1jOjeAA== -d3-geo@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0-rc.1.tgz#59c0739babb0cffd677474e31a6f59b569d6b1a3" - integrity sha512-HcLMtHjudGeOUQJCxi5nW9vjGrSMb9hlKqcYXna3lunxQRpic3BVnxUs4cKvJ8+xp9x5LGkMgu7iDhEbxh/LPg== +d3-geo@>=2.0.0-rc.2: + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0-rc.2.tgz#b45034823f9515f355b6a0d360d1ecd3733148e8" + integrity sha512-7ncPClsdLMAzpbXJ0Dpl59kZhcy0dWk92kFX2hmdaEly8pIhCmLQeYq9J4o0PWwuD/BY2fK7EH7O718p7lpASw== dependencies: - d3-array "1 - 2" + d3-array "^2.5" d3-hierarchy@>=2.0.0-rc.3: version "2.0.0-rc.3" @@ -251,10 +251,10 @@ d3-scale-chromatic@>=2.0.0-rc.1: d3-color ">=2.0.0-rc.1" d3-interpolate ">=2.0.0-rc.1" -d3-scale@>=3.3.0-rc.2: - version "3.3.0-rc.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0-rc.2.tgz#45416196b3e9cf6aee49f3a913abcd2516da78ac" - integrity sha512-Mnmy0N2CbXxPN9UIS4YsEiLykyGyNAnccjYmmWZVf0GTb5+vgkNSWDo/up+8mqCY5R0vv4vHjnEFSvn4pLLqUA== +d3-scale@>=3.3.0-rc.3: + version "3.3.0-rc.3" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0-rc.3.tgz#07d6b3a0d8f9e495d1c1745d644183f0f90c1f3a" + integrity sha512-ihYt/iS48/dhSHBcVzbMY0Jr7wWe1hKbGwSWHBK9vl7KhrnqzINY2mgOa+bH53IcsTx2rQrvDggSJJ0f852xFA== dependencies: d3-array "1.2.0 - 2" d3-format ">=2.0.0-rc.1" @@ -291,10 +291,10 @@ d3-timer@>=2.0.0-rc.1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0-rc.1.tgz#8afc777810198f28d9b2ac1ef8765b767ce4bc22" integrity sha512-Kfi4LnjFC1t1MnnjCrHh3TyQIJr9/mMjmjeTFYwG364CtTKtv8snI/juT5zoiCCsMwrxdzwrM7Kmpj24p/AClw== -d3-transition@>=2.0.0-rc.1, d3-transition@>=2.0.0-rc.3: - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.3.tgz#7d796b7f31ed6b814096235dd3dcf12121669f5a" - integrity sha512-g3otrqo4z1WEbT3QSRu7lrzwvrrY1t2Ao5YkDA6Cr5qo4vfDpJBZt/uc/Hov6pBOIYCXyaFDVeiIR+jkc8lU3g== +d3-transition@>=2.0.0-rc.1, d3-transition@>=2.0.0-rc.3, d3-transition@>=2.0.0-rc.5: + version "2.0.0-rc.5" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.5.tgz#f9916eb70920a028e49568e985965c69255ed26c" + integrity sha512-3h7wruc+4ntSluszGlBebh5nrWypGLcU8Q3Mms6xpERQHFw4sFe3DcQK8NZjypoQ1/rgJD7iUoN/erAG57qtPg== dependencies: d3-color ">=2.0.0-rc.1" d3-dispatch ">=2.0.0-rc.1" From 1ab926d5cd8e1b0ed97f333a86645af98b1d7196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 01:20:45 +0200 Subject: [PATCH 026/311] dependencies for d3@6.0.0-rc.4 --- package.json | 61 +++++----- yarn.lock | 320 +++++++++++++++++++++++++-------------------------- 2 files changed, 192 insertions(+), 189 deletions(-) diff --git a/package.json b/package.json index a260b2520b5b07..08a254a54cae83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "d3", - "version": "6.0.0-rc.2", + "version": "6.0.0-rc.4", + "publishConfig": { + "tag": "next" + }, "description": "Data-Driven Documents", "keywords": [ "dom", @@ -44,34 +47,34 @@ }, "dependencies": { "d3-array": "^2.5", - "d3-axis": ">=2.0.0-rc.1", - "d3-brush": ">=2.0.0-rc.1", - "d3-chord": ">=2.0.0-rc.1", - "d3-color": ">=2.0.0-rc.1", - "d3-contour": ">=2.0.0-rc.1", + "d3-axis": "2", + "d3-brush": "2", + "d3-chord": "2", + "d3-color": "2", + "d3-contour": "2", "d3-delaunay": "5", - "d3-dispatch": ">=2.0.0-rc.1", - "d3-drag": ">=2.0.0-rc.1", - "d3-dsv": ">=2.0.0-rc.1", - "d3-ease": ">=2.0.0-rc.1", - "d3-fetch": ">=2.0.0-rc.1", - "d3-force": ">=2.1.0-rc.2", - "d3-format": ">=2.0.0-rc.1", - "d3-geo": ">=2.0.0-rc.2", - "d3-hierarchy": ">=2.0.0-rc.3", - "d3-interpolate": ">=2.0.0-rc.1", - "d3-path": ">=2.0.0-rc.1", - "d3-polygon": ">=2.0.0-rc.1", - "d3-quadtree": ">=2.0.0-rc.1", - "d3-random": ">=2.0.0-rc.1", - "d3-scale": ">=3.3.0-rc.3", - "d3-scale-chromatic": ">=2.0.0-rc.1", - "d3-selection": ">=2.0.0-rc.3", - "d3-shape": ">=2.0.0-rc.1", - "d3-time": ">=2.0.0-rc.1", - "d3-time-format": ">=3.0.0-rc.1", - "d3-timer": ">=2.0.0-rc.1", - "d3-transition": ">=2.0.0-rc.5", - "d3-zoom": ">=2.0.0-rc.1" + "d3-dispatch": "2", + "d3-drag": "2", + "d3-dsv": "2", + "d3-ease": "2", + "d3-fetch": "2", + "d3-force": "2", + "d3-format": "2", + "d3-geo": "2", + "d3-hierarchy": "2", + "d3-interpolate": "2", + "d3-path": "2", + "d3-polygon": "2", + "d3-quadtree": "2", + "d3-random": "2", + "d3-scale": "3", + "d3-scale-chromatic": "2", + "d3-selection": "2", + "d3-shape": "2", + "d3-time": "2", + "d3-time-format": "3", + "d3-timer": "2", + "d3-transition": "2", + "d3-zoom": "2" } } diff --git a/yarn.lock b/yarn.lock index e68737c7833a66..19bfd404c17e10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -114,38 +114,38 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.5.0.tgz#d3f3043aabb75a17e2e78e3723aff4004ede3c5b" integrity sha512-U+CrYn19GmiKeI9qU1RLV1p5ZodBKXw64k9Z3Id6d11LLuZ4JdyCnMT6W/2b84bvqEMFU15zg/JC3/oRYTanVg== -d3-axis@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.0.0-rc.1.tgz#80651538f904c315ec31ff121fcbd5674b86167f" - integrity sha512-WP6bB7LlR0xleB1EWWyp3NFklknUCUhJ9HjYTyFMRHNgpP2AOWdLPsy+/peyZYrT6I1Uy1KpLGx+LMSAuK76Ig== - -d3-brush@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.0.0-rc.1.tgz#47caafb86059b7cb97eeee7f46b8a5e2c8df9247" - integrity sha512-JUL6V+fa4j9eY1kg7Uj7zOfbXEPNCxd6OeI88FLHanc7cGgnEpfvdWojbs9iizvxtR8BEAYJimYrzlQ+vjfDnw== - dependencies: - d3-dispatch ">=2.0.0-rc.1" - d3-drag ">=2.0.0-rc.1" - d3-interpolate ">=2.0.0-rc.1" - d3-selection ">=2.0.0-rc.3" - d3-transition ">=2.0.0-rc.1" - -d3-chord@>=2.0.0-rc.1: - version "2.0.0-rc.10" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0-rc.10.tgz#0108251c3f0423480685ff4ee7efdeb18363ed14" - integrity sha512-peWSXMF7fd6h5GER1JKhUsotgNjVvhPADZDo1sl5MJ17t4vfmtAdSu0FSHCy3Ex+kvENlIc0tSosiuAGf3FPhQ== - dependencies: - d3-path ">=2.0.0-rc.1" - -d3-color@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0-rc.1.tgz#306e5424d97d7c392fbb5f4e2f71a19692b625d1" - integrity sha512-qG47cofgHAELBblsjxvnloC3EQ0wu33aqZ5DdV8wljDKJEcY1eTX6WrIstIG6y93hJvaVFCzQmglNXt6B6bqBA== - -d3-contour@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-2.0.0-rc.1.tgz#009f3d1193bdd40bbb15e48d836df0d26861b980" - integrity sha512-tBIVnQixRwd6jCEbxbg91tHO2Qhcej0LRXzDUUguRDtouGop+OI6YBueMwdBWt2dEr7EfIzlKKEe9iNEUwtoHw== +d3-axis@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.0.0.tgz#40aebb65626ffe6d95e9441fbf9194274b328a8b" + integrity sha512-9nzB0uePtb+u9+dWir+HTuEAKJOEUYJoEwbJPsZ1B4K3iZUgzJcSENQ05Nj7S4CIfbZZ8/jQGoUzGKFznBhiiQ== + +d3-brush@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.0.0.tgz#b20fca926f29ad4342fab4f87b76770810f44d16" + integrity sha512-6j6WlvjsCC4whOctLfda8qRcrARwVfPlWmYXhrpazHK19GOjpN6CyWw9rP6bL3iXSj/aj3weLLKaGFQwd65KXg== + dependencies: + d3-dispatch "1 - 2" + d3-drag "2" + d3-interpolate "1 - 2" + d3-selection "2" + d3-transition "2" + +d3-chord@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0.tgz#32491b5665391180560f738e5c1ccd1e3c47ebae" + integrity sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig== + dependencies: + d3-path "1 - 2" + +"d3-color@1 - 2", d3-color@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" + integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== + +d3-contour@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-2.0.0.tgz#80ee834988563e3bea9d99ddde72c0f8c089ea40" + integrity sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA== dependencies: d3-array "2" @@ -156,162 +156,162 @@ d3-delaunay@5: dependencies: delaunator "4" -d3-dispatch@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0-rc.1.tgz#cb7a29779b4dd4241ccef5b8a19f46a5e727f47b" - integrity sha512-JRzTbYPZ1GDu+eGZPOVyyhveu49PEL3msPVXBFEUDk0xCqhX7Eu2tCVcl+1gculBCkj6LEW2f725QmxWVsOPaA== +"d3-dispatch@1 - 2", d3-dispatch@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz#8a18e16f76dd3fcaef42163c97b926aa9b55e7cf" + integrity sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== -d3-drag@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-2.0.0-rc.1.tgz#640ab84abe5448d80a9a18972e95cfc64536d8dd" - integrity sha512-1xDDuOveEDs5hPbZxwoJFXWLiF0l7xjYXw00WBVzUR0xq6DEcWe9m8EM/ebmZAKnIn2lI/8rdthFpLHD/brxBg== +d3-drag@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-2.0.0.tgz#9eaf046ce9ed1c25c88661911c1d5a4d8eb7ea6d" + integrity sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w== dependencies: - d3-dispatch ">=2.0.0-rc.1" - d3-selection ">=2.0.0-rc.3" + d3-dispatch "1 - 2" + d3-selection "2" -d3-dsv@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0-rc.1.tgz#cccb6b07c3c07d0726eae001c4cbd6afef850c8c" - integrity sha512-l4g69U1cWHQh85fybc2/JOpfQ2jRvL/oU8b9XrdWb0y5B7kZVY5HKMP0Y5I2Wzd9/0UDxBdFwHK5HcPIPM9zHA== +"d3-dsv@1 - 2", d3-dsv@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0.tgz#b37b194b6df42da513a120d913ad1be22b5fe7c5" + integrity sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w== dependencies: commander "2" iconv-lite "0.4" rw "1" -d3-ease@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-2.0.0-rc.1.tgz#35259de8806b89a84a7ccc8939882075f251389f" - integrity sha512-BzV2TjCGL59wwt2bgQ/8i+iwu7+FWGybI97DfaO/CnosUYRTHpYB5P+/KfMzx7UJAVeZ4RdyZv0daoKQc3TCZQ== +"d3-ease@1 - 2", d3-ease@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-2.0.0.tgz#fd1762bfca00dae4bacea504b1d628ff290ac563" + integrity sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ== -d3-fetch@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-2.0.0-rc.1.tgz#880690a78eb64dea5ea3a506b9da329fc28fefa3" - integrity sha512-VxTPDmXoQMFzhPYs+Csw/ews6xH+h/lBQDaJ3xgxhYFvl2Z2gbAj7VNHNVVkLQ0fAetLHbwVS0tOqFJFJJrRCA== +d3-fetch@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-2.0.0.tgz#ecd7ef2128d9847a3b41b548fec80918d645c064" + integrity sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw== dependencies: - d3-dsv ">=2.0.0-rc.1" + d3-dsv "1 - 2" -d3-force@>=2.1.0-rc.2: - version "2.1.0-rc.2" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.0-rc.2.tgz#254c7892d2e9c8aa02bd8438fe105b21a4a6e6b8" - integrity sha512-nWtwGFj4B6YSd669pt8AeWqua2AyHfx8N0U8mlhgS3LSBKQNxYXyrbIA3RB11MVQEGydL40V7EXeOeped3Mxzw== +d3-force@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.1.tgz#f20ccbf1e6c9e80add1926f09b51f686a8bc0937" + integrity sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== dependencies: - d3-dispatch ">=2.0.0-rc.1" - d3-quadtree ">=2.0.0-rc.1" - d3-timer ">=2.0.0-rc.1" + d3-dispatch "1 - 2" + d3-quadtree "1 - 2" + d3-timer "1 - 2" -d3-format@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0-rc.1.tgz#2deadd018e280c73a210342e2e8ee90ed2e0c973" - integrity sha512-ouuOXO2IoMtBl5NDXc7fqIal4A0iuLOkpThjEATNU/Xk4ohd2ly+HwL80Y6BjzbvKCHgz2ytVeWUycZ1jOjeAA== +"d3-format@1 - 2", d3-format@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" + integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== -d3-geo@>=2.0.0-rc.2: - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0-rc.2.tgz#b45034823f9515f355b6a0d360d1ecd3733148e8" - integrity sha512-7ncPClsdLMAzpbXJ0Dpl59kZhcy0dWk92kFX2hmdaEly8pIhCmLQeYq9J4o0PWwuD/BY2fK7EH7O718p7lpASw== +d3-geo@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0.tgz#aadb8a2804b690b868e5f153037217ba6fee9b20" + integrity sha512-28x4nHfMpTDOXlOXv2gb3WS6L4mtaWdz5ctC6ow+lGiFOpmc+8OtnDjAupCPBjQ+bMWUvP3F89akr94o//cXLQ== dependencies: d3-array "^2.5" -d3-hierarchy@>=2.0.0-rc.3: - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0-rc.3.tgz#a24ff8f13d1def7e7a8ead1d01806a9da78e9f3e" - integrity sha512-HFAWE5A619jEP3uY1pYT+YO8AzQs9C6Em0WgNm4Y6YTFGtKLpODlVpli9KDaTkuCIlkkt2SNQRmsot8/+Ef46w== +d3-hierarchy@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz#dab88a58ca3e7a1bc6cab390e89667fcc6d20218" + integrity sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw== -d3-interpolate@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.0-rc.1.tgz#894989e6051c8fef5632be1a67d6734b4974b3e8" - integrity sha512-QJ7SdIqRvHada4WDkeCosJbn56ssRCs0QyPQhOZnlgpD3aNw14zssGrwF14E4ZCgrZgDf8J6mXXLAcyFnFhX7A== +"d3-interpolate@1 - 2", "d3-interpolate@1.2.0 - 2", d3-interpolate@2: + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163" + integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== dependencies: - d3-color ">=2.0.0-rc.1" + d3-color "1 - 2" -d3-path@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0-rc.1.tgz#367192c0a1a83de31703b64726d772dba56d1cd5" - integrity sha512-sT5X1hMlP3s59ZZyY/qlAvIkZCpNcynrHaVc9cqMARs5w++4IjI1RwcPUt5zpkfflGvFN/tOPq+smk0Eljsyjw== +"d3-path@1 - 2", d3-path@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8" + integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== -d3-polygon@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-2.0.0-rc.1.tgz#2807d6e4c17714b528d7832c7854330ad50b0e68" - integrity sha512-5KLWKOU5NTPBMqDeYsXm9LUYkYDv7WMPgIhlW/hi5oSK6k0CDIimW6cBme12ruv1MNk60nZngdAbCRlGg/61FA== +d3-polygon@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-2.0.0.tgz#13608ef042fbec625ba1598327564f03c0396d8e" + integrity sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ== -d3-quadtree@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0-rc.1.tgz#afc76b7ca3f63c3e0cb88fc246b30276beab0623" - integrity sha512-rt2PaorxXzxZYHw1nSM82nJjIj91VU3/r40LPNBGqIhRXlTuAlgspOH8/w85OOCqxSsV0c1qKwbzYIu/8bwD7A== +"d3-quadtree@1 - 2", d3-quadtree@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d" + integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== -d3-random@>=2.0.0-rc.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.1.0.tgz#312f348d789a80f8d05eb1e75fa40d30acb25029" - integrity sha512-NY3GKeKxlRAXzUNun8Pv36Mciggnf8v+4kCDEoKaAbw4qmpfJ5LvMazdiYNDEiuM4hQSVHnxNeuYdVRJlFw9dg== +d3-random@2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.0.tgz#a5ef1e047267d8ab96aab491bb1fb9481bc63524" + integrity sha512-CPLYfjoR3IebCGAUH+Y+RX/XH7z8AQVgFobSklswVvNSHUdiiSN9vn6ymTVkvTc1lDbcjf+zay5fMxC0o7Y7/g== -d3-scale-chromatic@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0-rc.1.tgz#0d45342529e1712893f6a5d9bfde13147da62136" - integrity sha512-7BaAIv0qXek5DnRriJvn3l7dSuWPqTz+xl5thtqtJ1c/maPUoBLG3FOnJEIQKvpmvouhxLCUCt5jRWu+I13QoQ== +d3-scale-chromatic@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz#c13f3af86685ff91323dc2f0ebd2dabbd72d8bab" + integrity sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA== dependencies: - d3-color ">=2.0.0-rc.1" - d3-interpolate ">=2.0.0-rc.1" + d3-color "1 - 2" + d3-interpolate "1 - 2" -d3-scale@>=3.3.0-rc.3: - version "3.3.0-rc.3" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0-rc.3.tgz#07d6b3a0d8f9e495d1c1745d644183f0f90c1f3a" - integrity sha512-ihYt/iS48/dhSHBcVzbMY0Jr7wWe1hKbGwSWHBK9vl7KhrnqzINY2mgOa+bH53IcsTx2rQrvDggSJJ0f852xFA== +d3-scale@3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.2.tgz#36d4cbc94dc38bbb5bd91ba5eddb44c6d19bad3e" + integrity sha512-3Mvi5HfqPFq0nlyeFlkskGjeqrR/790pINMHc4RXKJ2E6FraTd3juaRIRZZHyMAbi3LjAMW0EH4FB1WgoGyeXg== dependencies: d3-array "1.2.0 - 2" - d3-format ">=2.0.0-rc.1" - d3-interpolate ">=2.0.0-rc.1" - d3-time ">=2.0.0-rc.1" - d3-time-format ">=3.0.0-rc.1" - -d3-selection@>=2.0.0-rc.3: - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0-rc.3.tgz#2275242adba02eae0fdfd12671bb5ab7c7d9713d" - integrity sha512-aRSv8+y9u/orAn+fcwErxdSSUnm/7KVzGUPvnOFGaAow01itJmwTbC6Z5dlv4VT3oQsv7xXDr/p4qHrYqbVZ2g== - -d3-shape@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0-rc.1.tgz#2593a3ba4d69bbc79dedfbc2beb81bf74f4bb1a0" - integrity sha512-hGtppAmT84ax+KEnjyX11JKu05VchcRLo0Q7VddfNHC6BGTNiFtC4oMRHWcPyBN0bPDgeHqaojxL0lqWXD+q8w== - dependencies: - d3-path ">=2.0.0-rc.1" - -d3-time-format@>=3.0.0-rc.1: - version "3.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0-rc.1.tgz#1cdc64cbbef4a8864ac9d384afcc4d8e5c693bca" - integrity sha512-KFiMbuoR1A150vgVKrzDwHvyTackcGDr2NgleKf7YaTvLt9mEyRSYfxwRAoujUip5Jxai1vGUNK7jlw5CM2uFQ== - dependencies: - d3-time ">=2.0.0-rc.1" - -d3-time@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0-rc.1.tgz#167fdc57e4d060fc3ede7e674932c6d612fb4be5" - integrity sha512-V5s10ubtsbm68x+ljgyA0M9p+Em5cAJKkQ3jJhF7x9cEW30CDle9o3ZVLSByrdj3VfZIwbanrLe0hJyQ957UhQ== - -d3-timer@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0-rc.1.tgz#8afc777810198f28d9b2ac1ef8765b767ce4bc22" - integrity sha512-Kfi4LnjFC1t1MnnjCrHh3TyQIJr9/mMjmjeTFYwG364CtTKtv8snI/juT5zoiCCsMwrxdzwrM7Kmpj24p/AClw== - -d3-transition@>=2.0.0-rc.1, d3-transition@>=2.0.0-rc.3, d3-transition@>=2.0.0-rc.5: - version "2.0.0-rc.5" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0-rc.5.tgz#f9916eb70920a028e49568e985965c69255ed26c" - integrity sha512-3h7wruc+4ntSluszGlBebh5nrWypGLcU8Q3Mms6xpERQHFw4sFe3DcQK8NZjypoQ1/rgJD7iUoN/erAG57qtPg== - dependencies: - d3-color ">=2.0.0-rc.1" - d3-dispatch ">=2.0.0-rc.1" - d3-ease ">=2.0.0-rc.1" - d3-interpolate ">=2.0.0-rc.1" - d3-timer ">=2.0.0-rc.1" - -d3-zoom@>=2.0.0-rc.1: - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-2.0.0-rc.1.tgz#78cd31917ca530548dfed2f9ff8a1121347e87d6" - integrity sha512-kw/9E9XLqNzpuRzwroJ25jV5+7UtGSoLxbMeDMfOUXHQGcJeADvtCk56vk0pUtZ/I7fx7+nFZ5hKWChs6DU0xA== - dependencies: - d3-dispatch ">=2.0.0-rc.1" - d3-drag ">=2.0.0-rc.1" - d3-interpolate ">=2.0.0-rc.1" - d3-selection ">=2.0.0-rc.3" - d3-transition ">=2.0.0-rc.3" + d3-format "1 - 2" + d3-interpolate "1.2.0 - 2" + d3-time "1 - 2" + d3-time-format "2 - 3" + +d3-selection@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0.tgz#94a11638ea2141b7565f883780dabc7ef6a61066" + integrity sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== + +d3-shape@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd" + integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw== + dependencies: + d3-path "1 - 2" + +"d3-time-format@2 - 3", d3-time-format@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" + integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + dependencies: + d3-time "1 - 2" + +"d3-time@1 - 2", d3-time@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" + integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== + +"d3-timer@1 - 2", d3-timer@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0.tgz#055edb1d170cfe31ab2da8968deee940b56623e6" + integrity sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== + +d3-transition@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0.tgz#366ef70c22ef88d1e34105f507516991a291c94c" + integrity sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog== + dependencies: + d3-color "1 - 2" + d3-dispatch "1 - 2" + d3-ease "1 - 2" + d3-interpolate "1 - 2" + d3-timer "1 - 2" + +d3-zoom@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-2.0.0.tgz#f04d0afd05518becce879d04709c47ecd93fba54" + integrity sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw== + dependencies: + d3-dispatch "1 - 2" + d3-drag "2" + d3-interpolate "1 - 2" + d3-selection "2" + d3-transition "2" deep-equal@~1.0.1: version "1.0.1" From b30f664d710aebbf9e830336ba51b403a50c7919 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 23 Aug 2020 16:26:41 -0700 Subject: [PATCH 027/311] Remove Bower support. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08a254a54cae83..356d7e1d0da883 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "pretest": "rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c", "test": "tape 'test/**/*-test.js'", "prepublishOnly": "yarn test", - "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \"${npm_package_version}\" && git tag -am \"${npm_package_version}\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js" + "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js" }, "devDependencies": { "json2module": "0.0", From 69e04c536a3c10ad12f9a5959117b3d6031b4c80 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 23 Aug 2020 16:37:47 -0700 Subject: [PATCH 028/311] Update dependencies. --- package.json | 2 +- yarn.lock | 417 +++++++++++++++++++++++++++------------------------ 2 files changed, 220 insertions(+), 199 deletions(-) diff --git a/package.json b/package.json index 08a254a54cae83..a6f8155159d26a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "tape": "4" }, "dependencies": { - "d3-array": "^2.5", + "d3-array": "2", "d3-axis": "2", "d3-brush": "2", "d3-chord": "2", diff --git a/yarn.lock b/yarn.lock index 19bfd404c17e10..eaf5c52ce92e52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,41 +2,46 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +"@babel/code-frame@^7.5.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.10.4" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== -"@types/node@^12.6.2": - version "12.6.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.8.tgz#e469b4bf9d1c9832aee4907ba8a051494357c12c" - integrity sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg== +"@types/node@*": + version "14.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" + integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== acorn@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" - integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +acorn@^7.1.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== ansi-styles@^3.2.1: version "3.2.1" @@ -89,30 +94,20 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -commander@2: +commander@2, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - "d3-array@1.2.0 - 2", d3-array@2, d3-array@^2.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.5.0.tgz#d3f3043aabb75a17e2e78e3723aff4004ede3c5b" - integrity sha512-U+CrYn19GmiKeI9qU1RLV1p5ZodBKXw64k9Z3Id6d11LLuZ4JdyCnMT6W/2b84bvqEMFU15zg/JC3/oRYTanVg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.6.0.tgz#b8df0c695eab26e2b2fd4ffe2d84bd703f8d0faf" + integrity sha512-1TgzIGb6hrHKSCGccdL209Ibk41HCeyv5znFEvJfBsBGhD3qpoHt/2W2ECpyLxpG1k7aNJz0BYrmLpVs9hIGNQ== d3-axis@2: version "2.0.0" @@ -313,12 +308,19 @@ d3-zoom@2: d3-selection "2" d3-transition "2" -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -335,22 +337,34 @@ delaunator@4: resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== -es-abstract@^1.5.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== dependencies: - es-to-primitive "^1.2.0" + minimatch "^3.0.4" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -371,11 +385,6 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -388,15 +397,15 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: +function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -glob@^7.1.3, glob@~7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.1.3, glob@~7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -410,12 +419,12 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has@^1.0.1, has@^1.0.3, has@~1.0.3: +has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -437,51 +446,58 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: - has "^1.0.1" + has-symbols "^1.0.1" -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +is-regex@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has-symbols "^1.0.0" + has "^1.0.3" -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" supports-color "^6.1.0" js-tokens@^4.0.0: @@ -508,12 +524,10 @@ magic-string@^0.15.1: dependencies: vlq "^0.2.1" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" @@ -522,21 +536,44 @@ minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@~1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== -object-inspect@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-keys@^1.0.12: +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -554,35 +591,18 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -readable-stream@^2.0.1: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -resolve@^1.1.6: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - path-parse "^1.0.6" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" -resolve@~1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== +resolve@^1.1.6, resolve@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" @@ -621,15 +641,15 @@ rollup-plugin-node-resolve@3: resolve "^1.1.6" rollup-plugin-terser@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.1.tgz#e9d2545ec8d467f96ba99b9216d2285aad8d5b66" - integrity sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" + integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== dependencies: - "@babel/code-frame" "^7.0.0" - jest-worker "^24.6.0" - rollup-pluginutils "^2.8.1" - serialize-javascript "^1.7.0" - terser "^4.1.0" + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^2.1.2" + terser "^4.6.2" rollup-pluginutils@^1.5.0: version "1.5.2" @@ -639,46 +659,41 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup-pluginutils@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" - integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" rollup@1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.17.0.tgz#47ee8b04514544fc93b39bae06271244c8db7dfa" - integrity sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw== + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== dependencies: - "@types/estree" "0.0.39" - "@types/node" "^12.6.2" - acorn "^6.2.0" + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" rw@1, rw@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== source-map-support@~0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -688,21 +703,30 @@ source-map@^0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -string.prototype.trim@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= +string.prototype.trim@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" + integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== dependencies: - safe-buffer "~5.1.0" + define-properties "^1.1.3" + es-abstract "^1.17.5" supports-color@^5.3.0: version "5.5.0" @@ -719,28 +743,30 @@ supports-color@^6.1.0: has-flag "^3.0.0" tape@4: - version "4.11.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" - integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== + version "4.13.3" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" + integrity sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw== dependencies: - deep-equal "~1.0.1" + deep-equal "~1.1.1" defined "~1.0.0" + dotignore "~0.1.2" for-each "~0.3.3" function-bind "~1.1.1" - glob "~7.1.4" + glob "~7.1.6" has "~1.0.3" inherits "~2.0.4" - minimist "~1.2.0" - object-inspect "~1.6.0" - resolve "~1.11.1" + is-regex "~1.0.5" + minimist "~1.2.5" + object-inspect "~1.7.0" + resolve "~1.17.0" resumer "~0.0.0" - string.prototype.trim "~1.1.2" + string.prototype.trim "~1.2.1" through "~2.3.8" -terser@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" - integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== +terser@^4.6.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -751,11 +777,6 @@ through@~2.3.4, through@~2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" From 6c71e02d3ad58fb3b947735e7d0e58c2d0ae595a Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 23 Aug 2020 16:41:11 -0700 Subject: [PATCH 029/311] Update dependencies. --- package.json | 11 ++-- test/d3-test.js | 3 +- test/test-exports.js | 3 +- yarn.lock | 150 +++++++++++++++++++++++++------------------ 4 files changed, 96 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index a6f8155159d26a..3f0ba5abc1be02 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,13 @@ }, "devDependencies": { "json2module": "0.0", - "rimraf": "2", - "rollup": "1", + "rimraf": "3", + "rollup": "2", "rollup-plugin-ascii": "0.0", - "rollup-plugin-node-resolve": "3", - "rollup-plugin-terser": "5", - "tape": "4" + "rollup-plugin-node-resolve": "5", + "rollup-plugin-terser": "7", + "tape": "4", + "tape-await": "0.1" }, "dependencies": { "d3-array": "2", diff --git a/test/d3-test.js b/test/d3-test.js index e0f8f4916fdefe..7589e71db8f488 100644 --- a/test/d3-test.js +++ b/test/d3-test.js @@ -1,11 +1,10 @@ -var tape = require("tape"), +var tape = require("tape-await"), d3 = require("../"), d3Selection = require("d3-selection"), testExports = require("./test-exports"); tape("version matches package.json", function(test) { test.equal(d3.version, require("../package.json").version); - test.end(); }); for (var dependency in require("../package.json").dependencies) { diff --git a/test/test-exports.js b/test/test-exports.js index f6e575b38b60c0..f7d3e33e0cfc02 100644 --- a/test/test-exports.js +++ b/test/test-exports.js @@ -1,4 +1,4 @@ -var tape = require("tape"), +var tape = require("tape-await"), d3 = require("../"); module.exports = function(moduleName) { @@ -9,6 +9,5 @@ module.exports = function(moduleName) { test.equal(symbol in d3, true, moduleName + " export " + symbol); } } - test.end(); }); }; diff --git a/yarn.lock b/yarn.lock index eaf5c52ce92e52..7df1f42d9e1820 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== @@ -23,26 +23,23 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@types/estree@*": - version "0.0.45" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== - "@types/node@*": version "14.6.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + acorn@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^7.1.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -68,10 +65,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" - integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg== +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== chalk@^2.0.0: version "2.4.2" @@ -397,6 +394,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -419,6 +421,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -492,13 +499,14 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@^26.2.1: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" + integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" js-tokens@^4.0.0: version "4.0.0" @@ -591,6 +599,13 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" @@ -599,7 +614,7 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -resolve@^1.1.6, resolve@~1.17.0: +resolve@^1.11.1, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -613,10 +628,10 @@ resumer@~0.0.0: dependencies: through "~2.3.4" -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +rimraf@3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -631,25 +646,26 @@ rollup-plugin-ascii@0.0: magic-string "^0.15.1" rollup-pluginutils "^1.5.0" -rollup-plugin-node-resolve@3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89" - integrity sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg== +rollup-plugin-node-resolve@5: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== dependencies: - builtin-modules "^2.0.0" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" is-module "^1.0.0" - resolve "^1.1.6" + resolve "^1.11.1" + rollup-pluginutils "^2.8.1" -rollup-plugin-terser@5: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" - integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== +rollup-plugin-terser@7: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.0.tgz#26b38ada4f0b351cd7cd872ca04c0f8532d4864f" + integrity sha512-p/N3lLiFusCjYTLfVkoaiRTOGr5AESEaljMPH12MhOtoMkmTBhIAfuadrcWy4am1U0vU4WTxO9fi0K09O4CboQ== dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^2.1.2" - terser "^4.6.2" + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" rollup-pluginutils@^1.5.0: version "1.5.2" @@ -659,36 +675,41 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup-pluginutils@^2.8.2: +rollup-pluginutils@^2.8.1: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@2: + version "2.26.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.5.tgz#5562ec36fcba3eed65cfd630bd78e037ad0e0307" + integrity sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA== + optionalDependencies: + fsevents "~2.1.2" rw@1, rw@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" source-map-support@~0.5.12: version "0.5.19" @@ -735,12 +756,17 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== +supports-color@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" + +tape-await@0.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tape-await/-/tape-await-0.1.2.tgz#41f99110a2bc4728732d8bc058278b2fbf3c0bec" + integrity sha512-Gt1bXilp9uRTVj+DecLDs37tP1XwGXfFzWVqQEfW7foO9TNacy+aN5TdT0Kv6LI5t/9l3iOE4nX2hr2SQ4+OSg== tape@4: version "4.13.3" @@ -763,10 +789,10 @@ tape@4: string.prototype.trim "~1.2.1" through "~2.3.8" -terser@^4.6.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +terser@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.2.1.tgz#40b971b8d28b4fe98c9e8c0d073ab48e7bb96cd8" + integrity sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ== dependencies: commander "^2.20.0" source-map "~0.6.1" From 3890397040a632359df60fb2b1219ebc7c360598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:18:22 +0200 Subject: [PATCH 030/311] upgrade versions --- API.md | 2192 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 1096 insertions(+), 1096 deletions(-) diff --git a/API.md b/API.md index 7a2e6edd834651..200d30254017fc 100644 --- a/API.md +++ b/API.md @@ -6,7 +6,7 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work * [Axes](#axes-d3-axis) * [Brushes](#brushes-d3-brush) * [Chords](#chords-d3-chord) -* [Collections](#collections-d3-collection) ([Objects](#objects), [Maps](#maps), [Sets](#sets), [Nests](#nests)) +* [XXXCollections](#collections-d3-collection) ([Objects](#objects), [Maps](#maps), [Sets](#sets), [Nests](#nests)) * [Colors](#colors-d3-color) * [Color Schemes](#color-schemes-d3-scale-chromatic) * [Contours](#contours-d3-contour) @@ -31,127 +31,127 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work * [Time Intervals](#time-intervals-d3-time) * [Timers](#timers-d3-timer) * [Transitions](#transitions-d3-transition) -* [Voronoi Diagrams](#voronoi-diagrams-d3-voronoi) +* [XXXVoronoi Diagrams](#voronoi-diagrams-d3-voronoi) * [Zooming](#zooming-d3-zoom) D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v1.2.4) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.6.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v1.2.4/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.6.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v1.2.4/README.md#min) - compute the minimum value in an array. -* [d3.max](https://github.com/d3/d3-array/blob/v1.2.4/README.md#max) - compute the maximum value in an array. -* [d3.extent](https://github.com/d3/d3-array/blob/v1.2.4/README.md#extent) - compute the minimum and maximum value in an array. -* [d3.sum](https://github.com/d3/d3-array/blob/v1.2.4/README.md#sum) - compute the sum of an array of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v1.2.4/README.md#mean) - compute the arithmetic mean of an array of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v1.2.4/README.md#median) - compute the median of an array of numbers (the 0.5-quantile). -* [d3.quantile](https://github.com/d3/d3-array/blob/v1.2.4/README.md#quantile) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v1.2.4/README.md#variance) - compute the variance of an array of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v1.2.4/README.md#deviation) - compute the standard deviation of an array of numbers. +* [d3.min](https://github.com/d3/d3-array/blob/v2.6.0/README.md#min) - compute the minimum value in an array. +* [d3.max](https://github.com/d3/d3-array/blob/v2.6.0/README.md#max) - compute the maximum value in an array. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.6.0/README.md#extent) - compute the minimum and maximum value in an array. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#sum) - compute the sum of an array of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.6.0/README.md#mean) - compute the arithmetic mean of an array of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.6.0/README.md#median) - compute the median of an array of numbers (the 0.5-quantile). +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantile) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.6.0/README.md#variance) - compute the variance of an array of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.6.0/README.md#deviation) - compute the standard deviation of an array of numbers. -### [Search](https://github.com/d3/d3-array/blob/v1.2.4/README.md#search) +### [Search](https://github.com/d3/d3-array/blob/v2.6.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.scan](https://github.com/d3/d3-array/blob/v1.2.4/README.md#scan) - linear search for an element using a comparator. -* [d3.bisect](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v1.2.4/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.ascending](https://github.com/d3/d3-array/blob/v1.2.4/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v1.2.4/README.md#descending) - compute the natural order of two values. +* [d3.scan](https://github.com/d3/d3-array/blob/v2.6.0/README.md#scan) - linear search for an element using a comparator. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#descending) - compute the natural order of two values. -### [Transformations](https://github.com/d3/d3-array/blob/v1.2.4/README.md#transformations) +### [Transformations](https://github.com/d3/d3-array/blob/v2.6.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.cross](https://github.com/d3/d3-array/blob/v1.2.4/README.md#cross) - compute the Cartesian product of two arrays. -* [d3.merge](https://github.com/d3/d3-array/blob/v1.2.4/README.md#merge) - merge multiple arrays into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v1.2.4/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v1.2.4/README.md#permute) - reorder an array of elements according to an array of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v1.2.4/README.md#shuffle) - randomize the order of an array. -* [d3.ticks](https://github.com/d3/d3-array/blob/v1.2.4/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v1.2.4/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v1.2.4/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.range](https://github.com/d3/d3-array/blob/v1.2.4/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v1.2.4/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v1.2.4/README.md#zip) - transpose a variable number of arrays. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cross) - compute the Cartesian product of two arrays. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.6.0/README.md#merge) - merge multiple arrays into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.6.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.6.0/README.md#permute) - reorder an array of elements according to an array of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.6.0/README.md#shuffle) - randomize the order of an array. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.range](https://github.com/d3/d3-array/blob/v2.6.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.6.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.6.0/README.md#zip) - transpose a variable number of arrays. -### [Histograms](https://github.com/d3/d3-array/blob/v1.2.4/README.md#histograms) +### [Histograms](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histograms) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.histogram](https://github.com/d3/d3-array/blob/v1.2.4/README.md#histogram) - create a new histogram generator. -* [*histogram*](https://github.com/d3/d3-array/blob/v1.2.4/README.md#_histogram) - compute the histogram for the given array of samples. -* [*histogram*.value](https://github.com/d3/d3-array/blob/v1.2.4/README.md#histogram_value) - specify a value accessor for each sample. -* [*histogram*.domain](https://github.com/d3/d3-array/blob/v1.2.4/README.md#histogram_domain) - specify the interval of observable values. -* [*histogram*.thresholds](https://github.com/d3/d3-array/blob/v1.2.4/README.md#histogram_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v1.2.4/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v1.2.4/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v1.2.4/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.histogram](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram) - create a new histogram generator. +* [*histogram*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_histogram) - compute the histogram for the given array of samples. +* [*histogram*.value](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_value) - specify a value accessor for each sample. +* [*histogram*.domain](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_domain) - specify the interval of observable values. +* [*histogram*.thresholds](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdSturges) - Sturges’ binning formula. -## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v1.0.12) +## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) Human-readable reference marks for scales. -* [d3.axisTop](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axisTop) - create a new top-oriented axis generator. -* [d3.axisRight](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axisRight) - create a new right-oriented axis generator. -* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axisBottom) - create a new bottom-oriented axis generator. -* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axisLeft) - create a new left-oriented axis generator. -* [*axis*](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#_axis) - generate an axis for the given selection. -* [*axis*.scale](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_scale) - set the scale. -* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_ticks) - customize how ticks are generated and formatted. -* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickArguments) - customize how ticks are generated and formatted. -* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickValues) - set the tick values explicitly. -* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickFormat) - set the tick format explicitly. -* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickSize) - set the size of the ticks. -* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickSizeInner) - set the size of inner ticks. -* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. -* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v1.0.12/README.md#axis_tickPadding) - set the padding between ticks and labels. - -## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v1.1.5) +* [d3.axisTop](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisTop) - create a new top-oriented axis generator. +* [d3.axisRight](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisRight) - create a new right-oriented axis generator. +* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisBottom) - create a new bottom-oriented axis generator. +* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisLeft) - create a new left-oriented axis generator. +* [*axis*](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#_axis) - generate an axis for the given selection. +* [*axis*.scale](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_scale) - set the scale. +* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_ticks) - customize how ticks are generated and formatted. +* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickArguments) - customize how ticks are generated and formatted. +* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickValues) - set the tick values explicitly. +* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickFormat) - set the tick format explicitly. +* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSize) - set the size of the ticks. +* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSizeInner) - set the size of inner ticks. +* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. +* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickPadding) - set the padding between ticks and labels. + +## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v2.0.0) Select a one- or two-dimensional region using the mouse or touch. -* [d3.brush](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush) - create a new two-dimensional brush. -* [d3.brushX](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushX) - create a brush along the *x*-dimension. -* [d3.brushY](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushY) - create a brush along the *y*-dimension. -* [*brush*](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#_brush) - apply the brush to a selection. -* [*brush*.move](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_move) - move the brush selection. -* [*brush*.clear](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_clear) - clear the brush selection. -* [*brush*.extent](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_extent) - define the brushable region. -* [*brush*.filter](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_filter) - control which input events initiate brushing. -* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_handleSize) - set the size of the brush handles. -* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_touchable) - set the touch support detector. -* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_keyModifiers) - enable or disable key interaction. -* [*brush*.on](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brush_on) - listen for brush events. -* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v1.1.5/README.md#brushSelection) - get the brush selection for a given node. - -## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v1.0.6) - -* [d3.chord](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#chord) - create a new chord layout. -* [*chord*](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#_chord) - compute the layout for the given matrix. -* [*chord*.padAngle](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#chord_padAngle) - set the padding between adjacent groups. -* [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#chord_sortGroups) - define the group order. -* [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#chord_sortSubgroups) - define the source and target order within groups. -* [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#chord_sortChords) - define the chord order across groups. -* [d3.ribbon](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon) - create a ribbon shape generator. -* [*ribbon*](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#_ribbon) - generate a ribbon shape. -* [*ribbon*.source](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_source) - set the source accessor. -* [*ribbon*.target](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_target) - set the target accessor. -* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_radius) - set the ribbon source or target radius. -* [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_startAngle) - set the ribbon source or target start angle. -* [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_endAngle) - set the ribbon source or target end angle. -* [*ribbon*.context](https://github.com/d3/d3-chord/blob/v1.0.6/README.md#ribbon_context) - set the render context. - -## [Collections (d3-collection)](https://github.com/d3/d3-collection/tree/v1.0.7) +* [d3.brush](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush) - create a new two-dimensional brush. +* [d3.brushX](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushX) - create a brush along the *x*-dimension. +* [d3.brushY](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushY) - create a brush along the *y*-dimension. +* [*brush*](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#_brush) - apply the brush to a selection. +* [*brush*.move](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_move) - move the brush selection. +* [*brush*.clear](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_clear) - clear the brush selection. +* [*brush*.extent](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_extent) - define the brushable region. +* [*brush*.filter](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_filter) - control which input events initiate brushing. +* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_handleSize) - set the size of the brush handles. +* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_touchable) - set the touch support detector. +* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_keyModifiers) - enable or disable key interaction. +* [*brush*.on](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_on) - listen for brush events. +* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushSelection) - get the brush selection for a given node. + +## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v2.0.0) + +* [d3.chord](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord) - create a new chord layout. +* [*chord*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_chord) - compute the layout for the given matrix. +* [*chord*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_padAngle) - set the padding between adjacent groups. +* [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortGroups) - define the group order. +* [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortSubgroups) - define the source and target order within groups. +* [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortChords) - define the chord order across groups. +* [d3.ribbon](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon) - create a ribbon shape generator. +* [*ribbon*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_ribbon) - generate a ribbon shape. +* [*ribbon*.source](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_source) - set the source accessor. +* [*ribbon*.target](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_target) - set the target accessor. +* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_radius) - set the ribbon source or target radius. +* [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_startAngle) - set the ribbon source or target start angle. +* [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_endAngle) - set the ribbon source or target end angle. +* [*ribbon*.context](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_context) - set the render context. + +## [XXXCollections (d3-collection)](https://github.com/d3/d3-collection/tree/v1.0.7) Handy data structures for elements keyed by string. @@ -207,1157 +207,1157 @@ Group data into arbitrary hierarchies. * [*nest*.object](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_object) - generate the nest, returning an associative array. * [*nest*.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_entries) - generate the nest, returning an array of key-values tuples. -## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v1.4.1) +## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v2.0.0) Color manipulation and color space conversion. -* [d3.color](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color) - parse the given CSS color specifier. -* [*color*.copy](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_copy) - return a copy of this color. -* [*color*.rgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_rgb) - compute the RGB equivalent of this color. -* [*color*.brighter](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_brighter) - create a brighter copy of this color. -* [*color*.darker](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_darker) - create a darker copy of this color. -* [*color*.displayable](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_displayable) - returns true if the color is displayable on standard hardware. -* [*color*.formatHex](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. -* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatHsl) - returns the RGB string representation of this color. -* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_formatRgb) - returns the HSL string representation of this color. -* [*color*.toString](https://github.com/d3/d3-color/blob/v1.4.1/README.md#color_toString) - returns the RGB string representation of this color. -* [d3.rgb](https://github.com/d3/d3-color/blob/v1.4.1/README.md#rgb) - create a new RGB color. -* [d3.hsl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#hsl) - create a new HSL color. -* [d3.lab](https://github.com/d3/d3-color/blob/v1.4.1/README.md#lab) - create a new Lab color. -* [d3.hcl](https://github.com/d3/d3-color/blob/v1.4.1/README.md#hcl) - create a new HCL color. -* [d3.lch](https://github.com/d3/d3-color/blob/v1.4.1/README.md#lch) - create a new HCL color. -* [d3.gray](https://github.com/d3/d3-color/blob/v1.4.1/README.md#gray) - create a new Lab gray. -* [d3.cubehelix](https://github.com/d3/d3-color/blob/v1.4.1/README.md#cubehelix) - create a new Cubehelix color. - -## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v1.5.0) +* [d3.color](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color) - parse the given CSS color specifier. +* [*color*.copy](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_copy) - return a copy of this color. +* [*color*.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.brighter](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_brighter) - create a brighter copy of this color. +* [*color*.darker](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_darker) - create a darker copy of this color. +* [*color*.displayable](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. +* [*color*.formatHex](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. +* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatHsl) - returns the RGB string representation of this color. +* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatRgb) - returns the HSL string representation of this color. +* [*color*.toString](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_toString) - returns the RGB string representation of this color. +* [d3.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#rgb) - create a new RGB color. +* [d3.hsl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hsl) - create a new HSL color. +* [d3.lab](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lab) - create a new Lab color. +* [d3.hcl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hcl) - create a new HCL color. +* [d3.lch](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lch) - create a new HCL color. +* [d3.gray](https://github.com/d3/d3-color/blob/v2.0.0/README.md#gray) - create a new Lab gray. +* [d3.cubehelix](https://github.com/d3/d3-color/blob/v2.0.0/README.md#cubehelix) - create a new Cubehelix color. + +## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v2.0.0) Color ramps and palettes for quantitative, ordinal and categorical scales. ### Categorical -* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeCategory10) - -* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeAccent) - -* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeDark2) - -* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePaired) - -* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePastel1) - -* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePastel2) - -* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeSet1) - -* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeSet2) - -* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeSet3) - -* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeTableau10) - +* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeCategory10) - +* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeAccent) - +* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeDark2) - +* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePaired) - +* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel1) - +* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel2) - +* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet1) - +* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet2) - +* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet3) - +* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeTableau10) - ### Diverging -* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateBrBG) - -* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePiYG) - -* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePRGn) - -* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePuOr) - -* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRdBu) - -* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRdGy) - -* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRdYlBu) - -* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRdYlGn) - -* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateSpectral) - -* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeBrBG) - -* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePiYG) - -* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePRGn) - -* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePuOr) - -* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeRdBu) - -* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeRdGy) - -* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeRdYlBu) - -* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeRdYlGn) - -* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeSpectral) - +* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBrBG) - +* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePiYG) - +* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePRGn) - +* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuOr) - +* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdBu) - +* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdGy) - +* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlBu) - +* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlGn) - +* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSpectral) - +* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBrBG) - +* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePiYG) - +* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePRGn) - +* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuOr) - +* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdBu) - +* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdGy) - +* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlBu) - +* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlGn) - +* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSpectral) - ### Sequential (Single Hue) -* [d3.interpolateBlues](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateBlues) - -* [d3.interpolateGreens](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateGreens) - -* [d3.interpolateGreys](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateGreys) - -* [d3.interpolateOranges](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateOranges) - -* [d3.interpolatePurples](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePurples) - -* [d3.interpolateReds](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateReds) - -* [d3.schemeBlues](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeBlues) - -* [d3.schemeGreens](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeGreens) - -* [d3.schemeGreys](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeGreys) - -* [d3.schemeOranges](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeOranges) - -* [d3.schemePurples](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePurples) - -* [d3.schemeReds](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeReds) - +* [d3.interpolateBlues](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBlues) - +* [d3.interpolateGreens](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGreens) - +* [d3.interpolateGreys](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGreys) - +* [d3.interpolateOranges](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOranges) - +* [d3.interpolatePurples](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePurples) - +* [d3.interpolateReds](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateReds) - +* [d3.schemeBlues](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBlues) - +* [d3.schemeGreens](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGreens) - +* [d3.schemeGreys](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGreys) - +* [d3.schemeOranges](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOranges) - +* [d3.schemePurples](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePurples) - +* [d3.schemeReds](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeReds) - ### Sequential (Multi-Hue) -* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateBuGn) - -* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateBuPu) - -* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateCividis) - -* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateCool) - -* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateCubehelixDefault) - -* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateGnBu) - -* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateInferno) - -* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateMagma) - -* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateOrRd) - -* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePlasma) - -* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePuBu) - -* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePuBuGn) - -* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolatePuRd) - -* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRdPu) - -* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateTurbo) - -* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateViridis) - -* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateWarm) - -* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateYlGn) - -* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateYlGnBu) - -* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateYlOrBr) - -* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateYlOrRd) - -* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeBuGn) - -* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeBuPu) - -* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeGnBu) - -* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeOrRd) - -* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePuBu) - -* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePuBuGn) - -* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemePuRd) - -* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeRdPu) - -* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeYlGn) - -* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeYlGnBu) - -* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeYlOrBr) - -* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#schemeYlOrRd) - +* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuGn) - +* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuPu) - +* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCividis) - +* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCool) - +* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCubehelixDefault) - +* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGnBu) - +* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateInferno) - +* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateMagma) - +* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOrRd) - +* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePlasma) - +* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBu) - +* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBuGn) - +* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuRd) - +* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdPu) - +* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateTurbo) - +* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateViridis) - +* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateWarm) - +* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGn) - +* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGnBu) - +* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrBr) - +* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrRd) - +* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuGn) - +* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuPu) - +* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGnBu) - +* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOrRd) - +* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBu) - +* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBuGn) - +* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuRd) - +* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdPu) - +* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGn) - +* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGnBu) - +* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrBr) - +* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrRd) - ### Cyclical -* [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateRainbow) - the “less-angry” rainbow -* [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v1.5.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow +* [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow +* [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow -## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v1.3.2) +## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v2.0.0) Compute contour polygons using marching squares. -* [d3.contours](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contours) - create a new contour generator. -* [contours](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#_contours) - compute the contours for a given grid of values. -* [contours.contour](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contours_contour) - -* [contours.size](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contours_size) - -* [contours.smooth](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contours_smooth) - -* [contours.thresholds](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contours_thresholds) - -* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#contourDensity) - create a new density estimator. -* [density](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#_density) - estimate the density of a given array of samples. -* [density.x](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_x) - -* [density.y](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_y) - +* [d3.contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours) - create a new contour generator. +* [contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_contours) - compute the contours for a given grid of values. +* [contours.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - +* [contours.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - +* [contours.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - +* [contours.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - +* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contourDensity) - create a new density estimator. +* [density](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_density) - estimate the density of a given array of samples. +* [density.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - +* [density.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - * [density.size](https://github.com/d3/d3-contour#density_size) - -* [density.cellSize](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_cellSize) - -* [density.thresholds](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_thresholds) - -* [density.bandwidth](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_bandwidth) - -* [density.weight](https://github.com/d3/d3-contour/blob/v1.3.2/README.md#density_weight) - +* [density.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - +* [density.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - +* [density.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - +* [density.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - -## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v1.0.6) +## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v2.0.0) Separate concerns using named callbacks. -* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch) - create a custom event dispatcher. -* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_on) - register or unregister an event listener. -* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_copy) - create a copy of a dispatcher. -* [*dispatch*.*call*](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_call) - dispatch an event to registered listeners. -* [*dispatch*.*apply*](https://github.com/d3/d3-dispatch/blob/v1.0.6/README.md#dispatch_apply) - dispatch an event to registered listeners. +* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch) - create a custom event dispatcher. +* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_on) - register or unregister an event listener. +* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_copy) - create a copy of a dispatcher. +* [*dispatch*.*call*](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_call) - dispatch an event to registered listeners. +* [*dispatch*.*apply*](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_apply) - dispatch an event to registered listeners. -## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v1.2.5) +## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v2.0.0) Drag and drop SVG, HTML or Canvas using mouse or touch input. -* [d3.drag](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag) - create a drag behavior. -* [*drag*](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#_drag) - apply the drag behavior to a selection. -* [*drag*.container](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_container) - set the coordinate system. -* [*drag*.filter](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_filter) - ignore some initiating input events. -* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_touchable) - set the touch support detector. -* [*drag*.subject](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_subject) - set the thing being dragged. -* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_clickDistance) - set the click distance threshold. -* [*drag*.on](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#drag_on) - listen for drag events. -* [*event*.on](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#event_on) - listen for drag events on the current gesture. -* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#dragDisable) - prevent native drag-and-drop and text selection. -* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v1.2.5/README.md#dragEnable) - enable native drag-and-drop and text selection. +* [d3.drag](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag) - create a drag behavior. +* [*drag*](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#_drag) - apply the drag behavior to a selection. +* [*drag*.container](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_container) - set the coordinate system. +* [*drag*.filter](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_filter) - ignore some initiating input events. +* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_touchable) - set the touch support detector. +* [*drag*.subject](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_subject) - set the thing being dragged. +* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_clickDistance) - set the click distance threshold. +* [*drag*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_on) - listen for drag events. +* [*event*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#event_on) - listen for drag events on the current gesture. +* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragDisable) - prevent native drag-and-drop and text selection. +* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragEnable) - enable native drag-and-drop and text selection. -## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v1.2.0) +## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v2.0.0) Parse and format delimiter-separated values, most commonly CSV and TSV. -* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. -* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_parse) - parse the given string, returning an array of objects. -* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. -* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_format) - format the given array of objects. -* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatBody) - format the given array of objects. -* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatRows) - format the given array of rows. -* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatRow) - format the given row. -* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#dsv_formatValue) - format the given value. -* [d3.autoType](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#autoType) - automatically infer value types for the given object. -* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvParse) - parse the given CSV string, returning an array of objects. -* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. -* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormat) - format the given array of objects as CSV. -* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatBody) - format the given array of objects as CSV. -* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatRows) - format the given array of rows as CSV. -* [d3.csvFormatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatRow) - format the given row as CSV. -* [d3.csvFormatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#csvFormatValue) - format the given value as CSV. -* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvParse) - parse the given TSV string, returning an array of objects. -* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. -* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormat) - format the given array of objects as TSV. -* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatBody) - format the given array of objects as TSV. -* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatRows) - format the given array of rows as TSV. -* [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatRow) - format the given row as TSV. -* [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v1.2.0/README.md#tsvFormatValue) - format the given value as TSV. - -## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v1.0.6) +* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. +* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parse) - parse the given string, returning an array of objects. +* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. +* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_format) - format the given array of objects. +* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatBody) - format the given array of objects. +* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRows) - format the given array of rows. +* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRow) - format the given row. +* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatValue) - format the given value. +* [d3.autoType](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#autoType) - automatically infer value types for the given object. +* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParse) - parse the given CSV string, returning an array of objects. +* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. +* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormat) - format the given array of objects as CSV. +* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatBody) - format the given array of objects as CSV. +* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatRows) - format the given array of rows as CSV. +* [d3.csvFormatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatRow) - format the given row as CSV. +* [d3.csvFormatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatValue) - format the given value as CSV. +* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvParse) - parse the given TSV string, returning an array of objects. +* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. +* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormat) - format the given array of objects as TSV. +* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatBody) - format the given array of objects as TSV. +* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRows) - format the given array of rows as TSV. +* [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRow) - format the given row as TSV. +* [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatValue) - format the given value as TSV. + +## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v2.0.0) Easing functions for smooth animation. -* [*ease*](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#_ease) - ease the given normalized time. -* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeLinear) - linear easing; the identity function. -* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyIn) - polynomial easing; raises time to the given power. -* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyOut) - reverse polynomial easing. -* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easePolyInOut) - symmetric polynomial easing. -* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#poly_exponent) - specify the polynomial exponent. -* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuad) - an alias for easeQuadInOut. -* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadIn) - quadratic easing; squares time. -* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadOut) - reverse quadratic easing. -* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeQuadInOut) - symmetric quadratic easing. -* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubic) - an alias for easeCubicInOut. -* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicIn) - cubic easing; cubes time. -* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicOut) - reverse cubic easing. -* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCubicInOut) - symmetric cubic easing. -* [d3.easeSin](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSin) - an alias for easeSinInOut. -* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinIn) - sinusoidal easing. -* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinOut) - reverse sinusoidal easing. -* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeSinInOut) - symmetric sinusoidal easing. -* [d3.easeExp](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExp) - an alias for easeExpInOut. -* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpIn) - exponential easing. -* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpOut) - reverse exponential easing. -* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeExpInOut) - symmetric exponential easing. -* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircle) - an alias for easeCircleInOut. -* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleIn) - circular easing. -* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleOut) - reverse circular easing. -* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeCircleInOut) - symmetric circular easing. -* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElastic) - an alias for easeElasticOut. -* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticIn) - elastic easing, like a rubber band. -* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticOut) - reverse elastic easing. -* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeElasticInOut) - symmetric elastic easing. -* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#elastic_amplitude) - specify the elastic amplitude. -* [*elastic*.period](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#elastic_period) - specify the elastic period. -* [d3.easeBack](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBack) - an alias for easeBackInOut. -* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. -* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackOut) - reverse anticipatory easing. -* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBackInOut) - symmetric anticipatory easing. -* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#back_overshoot) - specify the amount of overshoot. -* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounce) - an alias for easeBounceOut. -* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceIn) - bounce easing, like a rubber ball. -* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceOut) - reverse bounce easing. -* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v1.0.6/README.md#easeBounceInOut) - symmetric bounce easing. - -## [Fetches (d3-fetch)](https://github.com/d3/d3-fetch/tree/v1.1.2) +* [*ease*](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#_ease) - ease the given normalized time. +* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeLinear) - linear easing; the identity function. +* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyIn) - polynomial easing; raises time to the given power. +* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyOut) - reverse polynomial easing. +* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyInOut) - symmetric polynomial easing. +* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#poly_exponent) - specify the polynomial exponent. +* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuad) - an alias for easeQuadInOut. +* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadIn) - quadratic easing; squares time. +* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadOut) - reverse quadratic easing. +* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadInOut) - symmetric quadratic easing. +* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubic) - an alias for easeCubicInOut. +* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicIn) - cubic easing; cubes time. +* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicOut) - reverse cubic easing. +* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicInOut) - symmetric cubic easing. +* [d3.easeSin](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSin) - an alias for easeSinInOut. +* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinIn) - sinusoidal easing. +* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinOut) - reverse sinusoidal easing. +* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinInOut) - symmetric sinusoidal easing. +* [d3.easeExp](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExp) - an alias for easeExpInOut. +* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpIn) - exponential easing. +* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpOut) - reverse exponential easing. +* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpInOut) - symmetric exponential easing. +* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircle) - an alias for easeCircleInOut. +* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleIn) - circular easing. +* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleOut) - reverse circular easing. +* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleInOut) - symmetric circular easing. +* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElastic) - an alias for easeElasticOut. +* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticIn) - elastic easing, like a rubber band. +* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticOut) - reverse elastic easing. +* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticInOut) - symmetric elastic easing. +* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_amplitude) - specify the elastic amplitude. +* [*elastic*.period](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_period) - specify the elastic period. +* [d3.easeBack](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBack) - an alias for easeBackInOut. +* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. +* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackOut) - reverse anticipatory easing. +* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackInOut) - symmetric anticipatory easing. +* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#back_overshoot) - specify the amount of overshoot. +* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounce) - an alias for easeBounceOut. +* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceIn) - bounce easing, like a rubber ball. +* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceOut) - reverse bounce easing. +* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceInOut) - symmetric bounce easing. + +## [Fetches (d3-fetch)](https://github.com/d3/d3-fetch/tree/v2.0.0) Convenience methods on top of the Fetch API. -* [d3.blob](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#blob) - get a file as a blob. -* [d3.buffer](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#buffer) - get a file as an array buffer. -* [d3.csv](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#csv) - get a comma-separated values (CSV) file. -* [d3.dsv](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#dsv) - get a delimiter-separated values (CSV) file. -* [d3.image](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#image) - get an image. -* [d3.json](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#json) - get a JSON file. -* [d3.text](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#text) - get a plain text file. -* [d3.tsv](https://github.com/d3/d3-fetch/blob/v1.1.2/README.md#tsv) - get a tab-separated values (TSV) file. +* [d3.blob](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#blob) - get a file as a blob. +* [d3.buffer](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#buffer) - get a file as an array buffer. +* [d3.csv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#csv) - get a comma-separated values (CSV) file. +* [d3.dsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#dsv) - get a delimiter-separated values (CSV) file. +* [d3.image](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#image) - get an image. +* [d3.json](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#json) - get a JSON file. +* [d3.text](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#text) - get a plain text file. +* [d3.tsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#tsv) - get a tab-separated values (TSV) file. -## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v1.2.1) +## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v2.1.1) Force-directed graph layout using velocity Verlet integration. -* [d3.forceSimulation](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceSimulation) - create a new force simulation. -* [*simulation*.restart](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_restart) - reheat and restart the simulation’s timer. -* [*simulation*.stop](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_stop) - stop the simulation’s timer. -* [*simulation*.tick](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_tick) - advance the simulation one step. -* [*simulation*.nodes](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_nodes) - set the simulation’s nodes. -* [*simulation*.alpha](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_alpha) - set the current alpha. -* [*simulation*.alphaMin](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_alphaMin) - set the minimum alpha threshold. -* [*simulation*.alphaDecay](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_alphaDecay) - set the alpha exponential decay rate. -* [*simulation*.alphaTarget](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_alphaTarget) - set the target alpha. -* [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_velocityDecay) - set the velocity decay rate. -* [*simulation*.force](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_force) - add or remove a force. -* [*simulation*.find](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_find) - find the closest node to the given position. -* [*simulation*.on](https://github.com/d3/d3-force/blob/v1.2.1/README.md#simulation_on) - add or remove an event listener. -* [*force*](https://github.com/d3/d3-force/blob/v1.2.1/README.md#_force) - apply the force. -* [*force*.initialize](https://github.com/d3/d3-force/blob/v1.2.1/README.md#force_initialize) - initialize the force with the given nodes. -* [d3.forceCenter](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceCenter) - create a centering force. -* [*center*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#center_x) - set the center *x*-coordinate. -* [*center*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#center_y) - set the center *y*-coordinate. -* [d3.forceCollide](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceCollide) - create a circle collision force. -* [*collide*.radius](https://github.com/d3/d3-force/blob/v1.2.1/README.md#collide_radius) - set the circle radius. -* [*collide*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#collide_strength) - set the collision resolution strength. -* [*collide*.iterations](https://github.com/d3/d3-force/blob/v1.2.1/README.md#collide_iterations) - set the number of iterations. -* [d3.forceLink](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceLink) - create a link force. -* [*link*.links](https://github.com/d3/d3-force/blob/v1.2.1/README.md#link_links) - set the array of links. -* [*link*.id](https://github.com/d3/d3-force/blob/v1.2.1/README.md#link_id) - link nodes by numeric index or string identifier. -* [*link*.distance](https://github.com/d3/d3-force/blob/v1.2.1/README.md#link_distance) - set the link distance. -* [*link*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#link_strength) - set the link strength. -* [*link*.iterations](https://github.com/d3/d3-force/blob/v1.2.1/README.md#link_iterations) - set the number of iterations. -* [d3.forceManyBody](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceManyBody) - create a many-body force. -* [*manyBody*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#manyBody_strength) - set the force strength. -* [*manyBody*.theta](https://github.com/d3/d3-force/blob/v1.2.1/README.md#manyBody_theta) - set the Barnes–Hut approximation accuracy. -* [*manyBody*.distanceMin](https://github.com/d3/d3-force/blob/v1.2.1/README.md#manyBody_distanceMin) - limit the force when nodes are close. -* [*manyBody*.distanceMax](https://github.com/d3/d3-force/blob/v1.2.1/README.md#manyBody_distanceMax) - limit the force when nodes are far. -* [d3.forceX](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceX) - create an *x*-positioning force. -* [*x*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#x_strength) - set the force strength. -* [*x*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#x_x) - set the target *x*-coordinate. -* [d3.forceY](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceY) - create an *y*-positioning force. -* [*y*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#y_strength) - set the force strength. -* [*y*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#y_y) - set the target *y*-coordinate. -* [d3.forceRadial](https://github.com/d3/d3-force/blob/v1.2.1/README.md#forceRadial) - create a radial positioning force. -* [*radial*.strength](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_strength) - set the force strength. -* [*radial*.radius](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_radius) - set the target radius. -* [*radial*.x](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_x) - set the target center *x*-coordinate. -* [*radial*.y](https://github.com/d3/d3-force/blob/v1.2.1/README.md#radial_y) - set the target center *y*-coordinate. - -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v1.4.4) +* [d3.forceSimulation](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceSimulation) - create a new force simulation. +* [*simulation*.restart](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_restart) - reheat and restart the simulation’s timer. +* [*simulation*.stop](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_stop) - stop the simulation’s timer. +* [*simulation*.tick](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_tick) - advance the simulation one step. +* [*simulation*.nodes](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_nodes) - set the simulation’s nodes. +* [*simulation*.alpha](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alpha) - set the current alpha. +* [*simulation*.alphaMin](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaMin) - set the minimum alpha threshold. +* [*simulation*.alphaDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaDecay) - set the alpha exponential decay rate. +* [*simulation*.alphaTarget](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaTarget) - set the target alpha. +* [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_velocityDecay) - set the velocity decay rate. +* [*simulation*.force](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_force) - add or remove a force. +* [*simulation*.find](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_find) - find the closest node to the given position. +* [*simulation*.on](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_on) - add or remove an event listener. +* [*force*](https://github.com/d3/d3-force/blob/v2.1.1/README.md#_force) - apply the force. +* [*force*.initialize](https://github.com/d3/d3-force/blob/v2.1.1/README.md#force_initialize) - initialize the force with the given nodes. +* [d3.forceCenter](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCenter) - create a centering force. +* [*center*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_x) - set the center *x*-coordinate. +* [*center*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_y) - set the center *y*-coordinate. +* [d3.forceCollide](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCollide) - create a circle collision force. +* [*collide*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_radius) - set the circle radius. +* [*collide*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_strength) - set the collision resolution strength. +* [*collide*.iterations](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_iterations) - set the number of iterations. +* [d3.forceLink](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceLink) - create a link force. +* [*link*.links](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_links) - set the array of links. +* [*link*.id](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_id) - link nodes by numeric index or string identifier. +* [*link*.distance](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_distance) - set the link distance. +* [*link*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_strength) - set the link strength. +* [*link*.iterations](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_iterations) - set the number of iterations. +* [d3.forceManyBody](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceManyBody) - create a many-body force. +* [*manyBody*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_strength) - set the force strength. +* [*manyBody*.theta](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_theta) - set the Barnes–Hut approximation accuracy. +* [*manyBody*.distanceMin](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_distanceMin) - limit the force when nodes are close. +* [*manyBody*.distanceMax](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_distanceMax) - limit the force when nodes are far. +* [d3.forceX](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceX) - create an *x*-positioning force. +* [*x*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#x_strength) - set the force strength. +* [*x*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#x_x) - set the target *x*-coordinate. +* [d3.forceY](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceY) - create an *y*-positioning force. +* [*y*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#y_strength) - set the force strength. +* [*y*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#y_y) - set the target *y*-coordinate. +* [d3.forceRadial](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceRadial) - create a radial positioning force. +* [*radial*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_strength) - set the force strength. +* [*radial*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_radius) - set the target radius. +* [*radial*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_x) - set the target center *x*-coordinate. +* [*radial*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_y) - set the target center *y*-coordinate. + +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v2.0.0) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v1.4.4/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatSpecifier) - parse a number format specifier. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v1.4.4/README.md#formatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v1.4.4/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v1.4.4/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatSpecifier) - parse a number format specifier. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionRound) - compute significant digits for rounded notation. -## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v1.12.0) +## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v2.0.0) Geographic projections, shapes and math. -### [Paths](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#paths) - -* [d3.geoPath](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoPath) - create a new geographic path generator. -* [*path*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_path) - project and render the specified feature. -* [*path*.area](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_area) - compute the projected planar area of a given feature. -* [*path*.bounds](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_bounds) - compute the projected planar bounding box of a given feature. -* [*path*.centroid](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_centroid) - compute the projected planar centroid of a given feature. -* [*path*.measure](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_measure) - compute the projected planar length of a given feature. -* [*path*.projection](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_projection) - set the geographic projection. -* [*path*.context](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_context) - set the render context. -* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#path_pointRadius) - set the radius to display point features. - -### [Projections](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projections) - -* [*projection*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_projection) - project the specified point from the sphere to the plane. -* [*projection*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. -* [*projection*.stream](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_stream) - wrap the specified stream to project geometry. -* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_clipAngle) - set the radius of the clip circle. -* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. -* [*projection*.angle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_angle) - set the post-projection rotation. -* [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_reflectX) - reflect the *x*-dimension. -* [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_reflectY) - reflect the *y*-dimension. -* [*projection*.scale](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_scale) - set the scale factor. -* [*projection*.translate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_translate) - set the translation offset. -* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. -* [*projection*.center](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_center) - set the center point. -* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. -* [*projection*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection.preclip) - set the spherical clipping stream transform. -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#projection.postclip) - set the planar clipping stream transform. -* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. -* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. -* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAlbers) - the Albers equal-area conic projection. -* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. -* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. -* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicConformal) - the conic conformal projection. -* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. -* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEquidistant) - the conic equidistant projection. -* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#conic_parallels) - set the two standard parallels. -* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEqualEarth) - the Equal Earth projection. -* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. -* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGnomonic) - the gnomonic projection. -* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoMercator) - the spherical Mercator projection. -* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoOrthographic) - the azimuthal orthographic projection. -* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStereographic) - the azimuthal stereographic projection. -* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. -* [*project*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_project) - project the specified point from the sphere to the plane. -* [*project*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#project_invert) - unproject the specified point from the plane to the sphere. -* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoProjection) - create a custom projection. -* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoProjectionMutator) - create a custom configurable projection. -* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. -* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. -* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. -* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. -* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. -* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. -* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoMercatorRaw) - the raw Mercator projection. -* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. -* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. -* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. - -### [Spherical Math](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#spherical-math) - -* [d3.geoArea](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoArea) - compute the spherical area of a given feature. -* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. -* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoCentroid) - compute the spherical centroid of a given feature. -* [d3.geoContains](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoContains) - test whether a point is inside a given feature. -* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoDistance) - compute the great-arc distance between two points. -* [d3.geoLength](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. -* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoInterpolate) - interpolate between two points along a great arc. -* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoRotation) - create a rotation function for the specified angles. -* [*rotation*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_rotation) - rotate the given point around the sphere. -* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#rotation_invert) - unrotate the given point around the sphere. - -### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#spherical-shapes) - -* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoCircle) - create a circle generator. -* [*circle*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_circle) - generate a piecewise circle as a Polygon. -* [*circle*.center](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_center) - specify the circle center in latitude and longitude. -* [*circle*.radius](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_radius) - specify the angular radius in degrees. -* [*circle*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#circle_precision) - specify the precision of the piecewise circle. -* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGraticule) - create a graticule generator. -* [*graticule*](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#_graticule) - generate a MultiLineString of meridians and parallels. -* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. -* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. -* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extent) - get or set the major & minor extents. -* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extentMajor) - get or set the major extent. -* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_extentMinor) - get or set the minor extent. -* [*graticule*.step](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_step) - get or set the major & minor step intervals. -* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_stepMajor) - get or set the major step intervals. -* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_stepMinor) - get or set the minor step intervals. -* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#graticule_precision) - get or set the latitudinal precision. -* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoGraticule10) - generate the default 10° global graticule. - -### [Streams](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#streams) - -* [d3.geoStream](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoStream) - convert a GeoJSON object to a geometry stream. -* [*stream*.point](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_point) - indicates a point with the specified coordinates. -* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_lineStart) - indicates the start of a line or ring. -* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_lineEnd) - indicates the end of a line or ring. -* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_polygonStart) - indicates the start of a polygon. -* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_polygonEnd) - indicates the end of a polygon. -* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#stream_sphere) - indicates the sphere. - -### [Transforms](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#transforms) - -* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoIdentity) - scale, translate or clip planar geometry. -* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v1.12.0/README.md#geoTransform) - define a custom geometry transform. - -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v1.1.9) +### [Paths](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#paths) + +* [d3.geoPath](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoPath) - create a new geographic path generator. +* [*path*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_path) - project and render the specified feature. +* [*path*.area](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_area) - compute the projected planar area of a given feature. +* [*path*.bounds](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_bounds) - compute the projected planar bounding box of a given feature. +* [*path*.centroid](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_centroid) - compute the projected planar centroid of a given feature. +* [*path*.measure](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_measure) - compute the projected planar length of a given feature. +* [*path*.projection](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_projection) - set the geographic projection. +* [*path*.context](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_context) - set the render context. +* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_pointRadius) - set the radius to display point features. + +### [Projections](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projections) + +* [*projection*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_projection) - project the specified point from the sphere to the plane. +* [*projection*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. +* [*projection*.stream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_stream) - wrap the specified stream to project geometry. +* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipAngle) - set the radius of the clip circle. +* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. +* [*projection*.angle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_angle) - set the post-projection rotation. +* [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectX) - reflect the *x*-dimension. +* [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectY) - reflect the *y*-dimension. +* [*projection*.scale](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_scale) - set the scale factor. +* [*projection*.translate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_translate) - set the translation offset. +* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. +* [*projection*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_center) - set the center point. +* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. +* [*projection*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection.preclip) - set the spherical clipping stream transform. +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection.postclip) - set the planar clipping stream transform. +* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. +* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. +* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. +* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbers) - the Albers equal-area conic projection. +* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. +* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. +* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformal) - the conic conformal projection. +* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. +* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistant) - the conic equidistant projection. +* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#conic_parallels) - set the two standard parallels. +* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. +* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercator) - the spherical Mercator projection. +* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographic) - the azimuthal orthographic projection. +* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. +* [*project*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_project) - project the specified point from the sphere to the plane. +* [*project*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#project_invert) - unproject the specified point from the plane to the sphere. +* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjection) - create a custom projection. +* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjectionMutator) - create a custom configurable projection. +* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. +* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. +* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. +* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. +* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. +* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. +* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercatorRaw) - the raw Mercator projection. +* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. +* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. +* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. + +### [Spherical Math](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#spherical-math) + +* [d3.geoArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoArea) - compute the spherical area of a given feature. +* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. +* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoCentroid) - compute the spherical centroid of a given feature. +* [d3.geoContains](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoContains) - test whether a point is inside a given feature. +* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoDistance) - compute the great-arc distance between two points. +* [d3.geoLength](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. +* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoInterpolate) - interpolate between two points along a great arc. +* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoRotation) - create a rotation function for the specified angles. +* [*rotation*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_rotation) - rotate the given point around the sphere. +* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#rotation_invert) - unrotate the given point around the sphere. + +### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#spherical-shapes) + +* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoCircle) - create a circle generator. +* [*circle*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_circle) - generate a piecewise circle as a Polygon. +* [*circle*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_center) - specify the circle center in latitude and longitude. +* [*circle*.radius](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_radius) - specify the angular radius in degrees. +* [*circle*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_precision) - specify the precision of the piecewise circle. +* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGraticule) - create a graticule generator. +* [*graticule*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_graticule) - generate a MultiLineString of meridians and parallels. +* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. +* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. +* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extent) - get or set the major & minor extents. +* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extentMajor) - get or set the major extent. +* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extentMinor) - get or set the minor extent. +* [*graticule*.step](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_step) - get or set the major & minor step intervals. +* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_stepMajor) - get or set the major step intervals. +* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_stepMinor) - get or set the minor step intervals. +* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_precision) - get or set the latitudinal precision. +* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGraticule10) - generate the default 10° global graticule. + +### [Streams](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#streams) + +* [d3.geoStream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStream) - convert a GeoJSON object to a geometry stream. +* [*stream*.point](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_point) - indicates a point with the specified coordinates. +* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_lineStart) - indicates the start of a line or ring. +* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_lineEnd) - indicates the end of a line or ring. +* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_polygonStart) - indicates the start of a polygon. +* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_polygonEnd) - indicates the end of a polygon. +* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_sphere) - indicates the sphere. + +### [Transforms](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#transforms) + +* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoIdentity) - scale, translate or clip planar geometry. +* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransform) - define a custom geometry transform. + +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v2.0.0) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_leaves) - generate an array of leaves. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_sort) - sort all descendant siblings. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_count) - count the number of leaves. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#stratify_parentId) - set the parent node id accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v1.1.9/README.md#packEnclose) - enclose the specified array of circles. - -## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v1.4.0) +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_leaves) - generate an array of leaves. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sort) - sort all descendant siblings. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_count) - count the number of leaves. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify_parentId) - set the parent node id accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#packEnclose) - enclose the specified array of circles. + +## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v2.0.1) Interpolate numbers, colors, strings, arrays, objects, whatever! -* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolate) - interpolate arbitrary values. -* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateArray) - interpolate arrays of arbitrary values. -* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateDate) - interpolate dates. -* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateNumber) - interpolate numbers. -* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateNumberArray) - interpolate arrays of numbers. -* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateObject) - interpolate arbitrary objects. -* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRound) - interpolate integers. -* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateString) - interpolate strings with embedded numbers. -* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. -* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. -* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateZoom) - zoom and pan between two views. -* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgb) - interpolate RGB colors. -* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. -* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. -* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHsl) - interpolate HSL colors. -* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHslLong) - interpolate HSL colors, the long way. -* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateLab) - interpolate Lab colors. -* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHcl) - interpolate HCL colors. -* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHclLong) - interpolate HCL colors, the long way. -* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateCubehelix) - interpolate Cubehelix colors. -* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. -* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolate_gamma) - apply gamma correction during interpolation. -* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateHue) - interpolate a hue angle. -* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. -* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateBasis) - generate a B-spline through a set of values. -* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. -* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. -* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v1.4.0/README.md#quantize) - generate uniformly-spaced samples from an interpolator. - -## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v1.0.9) +* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate) - interpolate arbitrary values. +* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateArray) - interpolate arrays of arbitrary values. +* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDate) - interpolate dates. +* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumber) - interpolate numbers. +* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumberArray) - interpolate arrays of numbers. +* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateObject) - interpolate arbitrary objects. +* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRound) - interpolate integers. +* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateString) - interpolate strings with embedded numbers. +* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. +* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. +* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateZoom) - zoom and pan between two views. +* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgb) - interpolate RGB colors. +* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. +* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. +* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHsl) - interpolate HSL colors. +* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHslLong) - interpolate HSL colors, the long way. +* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateLab) - interpolate Lab colors. +* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHcl) - interpolate HCL colors. +* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHclLong) - interpolate HCL colors, the long way. +* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateCubehelix) - interpolate Cubehelix colors. +* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. +* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_gamma) - apply gamma correction during interpolation. +* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHue) - interpolate a hue angle. +* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. +* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasis) - generate a B-spline through a set of values. +* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. +* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. +* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. + +## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v2.0.0) Serialize Canvas path commands to SVG. -* [d3.path](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path) - create a new path serializer. -* [*path*.moveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_moveTo) - move to the given point. -* [*path*.closePath](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_closePath) - close the current subpath. -* [*path*.lineTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_lineTo) - draw a straight line segment. -* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. -* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. -* [*path*.arcTo](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_arcTo) - draw a circular arc segment. -* [*path*.arc](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_arc) - draw a circular arc segment. -* [*path*.rect](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_rect) - draw a rectangle. -* [*path*.toString](https://github.com/d3/d3-path/blob/v1.0.9/README.md#path_toString) - serialize to an SVG path data string. +* [d3.path](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path) - create a new path serializer. +* [*path*.moveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_moveTo) - move to the given point. +* [*path*.closePath](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_closePath) - close the current subpath. +* [*path*.lineTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_lineTo) - draw a straight line segment. +* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. +* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. +* [*path*.arcTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_arcTo) - draw a circular arc segment. +* [*path*.arc](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_arc) - draw a circular arc segment. +* [*path*.rect](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_rect) - draw a rectangle. +* [*path*.toString](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_toString) - serialize to an SVG path data string. -## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v1.0.6) +## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v2.0.0) Geometric operations for two-dimensional polygons. -* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonArea) - compute the area of the given polygon. -* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonCentroid) - compute the centroid of the given polygon. -* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonHull) - compute the convex hull of the given points. -* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonContains) - test whether a point is inside a polygon. -* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v1.0.6/README.md#polygonLength) - compute the length of the given polygon’s perimeter. +* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonArea) - compute the area of the given polygon. +* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonCentroid) - compute the centroid of the given polygon. +* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonHull) - compute the convex hull of the given points. +* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonContains) - test whether a point is inside a polygon. +* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonLength) - compute the length of the given polygon’s perimeter. -## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v1.0.7) +## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v2.0.0) Two-dimensional recursive spatial subdivision. -* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree) - create a new, empty quadtree. -* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_x) - set the *x* accessor. -* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_y) - set the *y* accessor. -* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_add) - add a datum to a quadtree. -* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_addAll) - add an array of data to a quadtree. -* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_remove) - remove a datum from a quadtree. -* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_removeAll) - remove an array of data from a quadtree. -* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_copy) - create a copy of a quadtree. -* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_root) - get the quadtree’s root node. -* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_data) - retrieve all data from the quadtree. -* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_size) - count the number of data in the quadtree. -* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_find) - quickly find the closest datum in a quadtree. -* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_visit) - selectively visit nodes in a quadtree. -* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. -* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_cover) - extend the quadtree to cover a point. -* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v1.0.7/README.md#quadtree_extent) - extend the quadtree to cover an extent. - -## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v1.1.2) +* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree) - create a new, empty quadtree. +* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_x) - set the *x* accessor. +* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_y) - set the *y* accessor. +* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_add) - add a datum to a quadtree. +* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_addAll) - add an array of data to a quadtree. +* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_remove) - remove a datum from a quadtree. +* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_removeAll) - remove an array of data from a quadtree. +* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_copy) - create a copy of a quadtree. +* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_root) - get the quadtree’s root node. +* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_data) - retrieve all data from the quadtree. +* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_size) - count the number of data in the quadtree. +* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_find) - quickly find the closest datum in a quadtree. +* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visit) - selectively visit nodes in a quadtree. +* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. +* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_cover) - extend the quadtree to cover a point. +* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_extent) - extend the quadtree to cover an extent. + +## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v2.2.0) Generate random numbers from various distributions. -* [d3.randomUniform](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomUniform) - from a uniform distribution. -* [d3.randomNormal](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomNormal) - from a normal distribution. -* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomLogNormal) - from a log-normal distribution. -* [d3.randomBates](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomBates) - from a Bates distribution. -* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomIrwinHall) - from an Irwin–Hall distribution. -* [d3.randomExponential](https://github.com/d3/d3-random/blob/v1.1.2/README.md#randomExponential) - from an exponential distribution. -* [*random*.source](https://github.com/d3/d3-random/blob/v1.1.2/README.md#random_source) - set the source of randomness. +* [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomUniform) - from a uniform distribution. +* [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomNormal) - from a normal distribution. +* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogNormal) - from a log-normal distribution. +* [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBates) - from a Bates distribution. +* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomIrwinHall) - from an Irwin–Hall distribution. +* [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomExponential) - from an exponential distribution. +* [*random*.source](https://github.com/d3/d3-random/blob/v2.2.0/README.md#random_source) - set the source of randomness. -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v2.2.2) +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.2) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#continuous_copy) - create a copy of this scale. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#identity) - create a quantitative identity scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleUtc) - create a linear scale for UTC. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#tickFormat) - format ticks for human consumption. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_copy) - create a copy of this scale. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#identity) - create a quantitative identity scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleUtc) - create a linear scale for UTC. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#tickFormat) - format ticks for human consumption. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequential) - create a sequential scale. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequentialLog) - -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequentialPow) - -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequentialSqrt) - -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequentialSymlog) - -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleSequentialQuantile) - +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequential) - create a sequential scale. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#diverging-scales) +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleDivergingLog) - -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleDivergingPow) - -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleDivergingSqrt) - -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleDivergingSymlog) - +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize-scales) +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_range) - set the output range. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_range) - set the output range. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v2.2.2/README.md#point_copy) - create a copy of this scale. - -## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v1.4.1) +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_copy) - create a copy of this scale. + +## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v2.0.0) Transform the DOM by selecting elements and joining to data. -### [Selecting Elements](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selecting-elements) - -* [d3.selection](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection) - select the root document element. -* [d3.select](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#select) - select an element from the document. -* [d3.selectAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selectAll) - select multiple elements from the document. -* [*selection*.select](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_select) - select a descendant element for each selected element. -* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_selectAll) - select multiple descendants for each selected element. -* [*selection*.filter](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_filter) - filter elements based on data. -* [*selection*.merge](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_merge) - merge this selection with another. -* [d3.matcher](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#matcher) - test whether an element matches a selector. -* [d3.selector](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selector) - select an element. -* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selectorAll) - select elements. -* [d3.window](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#window) - get a node’s owner window. -* [d3.style](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#style) - get a node’s current style value. - -### [Modifying Elements](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#modifying-elements) - -* [*selection*.attr](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_attr) - get or set an attribute. -* [*selection*.classed](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_classed) - get, add or remove CSS classes. -* [*selection*.style](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_style) - get or set a style property. -* [*selection*.property](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_property) - get or set a (raw) property. -* [*selection*.text](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_text) - get or set the text content. -* [*selection*.html](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_html) - get or set the inner HTML. -* [*selection*.append](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_append) - create, append and select new elements. -* [*selection*.insert](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_insert) - create, insert and select new elements. -* [*selection*.remove](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_remove) - remove elements from the document. -* [*selection*.clone](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_clone) - insert clones of selected elements. -* [*selection*.sort](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_sort) - sort elements in the document based on data. -* [*selection*.order](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_order) - reorders elements in the document to match the selection. -* [*selection*.raise](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_raise) - reorders each element as the last child of its parent. -* [*selection*.lower](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_lower) - reorders each element as the first child of its parent. -* [d3.create](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#create) - create and select a detached element. -* [d3.creator](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#creator) - create an element by name. - -### [Joining Data](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#joining-data) - -* [*selection*.data](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_data) - bind elements to data. -* [*selection*.join](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_join) - enter, update or exit elements based on data. -* [*selection*.enter](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_enter) - get the enter selection (data missing elements). -* [*selection*.exit](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_exit) - get the exit selection (elements missing data). -* [*selection*.datum](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_datum) - get or set element data (without joining). - -### [Handling Events](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#handling-events) - -* [*selection*.on](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_on) - add or remove event listeners. -* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_dispatch) - dispatch a custom event. -* [d3.event](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#event) - the current user event, during interaction. -* [d3.customEvent](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#customEvent) - temporarily define a custom event. -* [d3.mouse](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#mouse) - get the mouse position relative to a given container. -* [d3.touch](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#touch) - get a touch position relative to a given container. -* [d3.touches](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#touches) - get the touch positions relative to a given container. -* [d3.clientPoint](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#clientPoint) - get a position relative to a given container. - -### [Control Flow](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#control-flow) - -* [*selection*.each](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_each) - call a function for each element. -* [*selection*.call](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_call) - call a function with this selection. -* [*selection*.empty](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_empty) - returns true if this selection is empty. -* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_nodes) - returns an array of all selected elements. -* [*selection*.node](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_node) - returns the first (non-null) element. -* [*selection*.size](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#selection_size) - returns the count of elements. - -### [Local Variables](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local-variables) - -* [d3.local](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local) - declares a new local variable. -* [*local*.set](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_set) - set a local variable’s value. -* [*local*.get](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_get) - get a local variable’s value. -* [*local*.remove](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_remove) - delete a local variable. -* [*local*.toString](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#local_toString) - get the property identifier of a local variable. - -### [Namespaces](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespaces) - -* [d3.namespace](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. -* [d3.namespaces](https://github.com/d3/d3-selection/blob/v1.4.1/README.md#namespaces) - the built-in XML namespaces. - -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v1.3.7) +### [Selecting Elements](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selecting-elements) + +* [d3.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection) - select the root document element. +* [d3.select](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#select) - select an element from the document. +* [d3.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectAll) - select multiple elements from the document. +* [*selection*.select](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_select) - select a descendant element for each selected element. +* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectAll) - select multiple descendants for each selected element. +* [*selection*.filter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_filter) - filter elements based on data. +* [*selection*.merge](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_merge) - merge this selection with another. +* [d3.matcher](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#matcher) - test whether an element matches a selector. +* [d3.selector](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selector) - select an element. +* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectorAll) - select elements. +* [d3.window](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#window) - get a node’s owner window. +* [d3.style](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#style) - get a node’s current style value. + +### [Modifying Elements](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#modifying-elements) + +* [*selection*.attr](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_attr) - get or set an attribute. +* [*selection*.classed](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_classed) - get, add or remove CSS classes. +* [*selection*.style](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_style) - get or set a style property. +* [*selection*.property](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_property) - get or set a (raw) property. +* [*selection*.text](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_text) - get or set the text content. +* [*selection*.html](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_html) - get or set the inner HTML. +* [*selection*.append](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_append) - create, append and select new elements. +* [*selection*.insert](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_insert) - create, insert and select new elements. +* [*selection*.remove](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_remove) - remove elements from the document. +* [*selection*.clone](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_clone) - insert clones of selected elements. +* [*selection*.sort](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_sort) - sort elements in the document based on data. +* [*selection*.order](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_order) - reorders elements in the document to match the selection. +* [*selection*.raise](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_raise) - reorders each element as the last child of its parent. +* [*selection*.lower](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_lower) - reorders each element as the first child of its parent. +* [d3.create](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#create) - create and select a detached element. +* [d3.creator](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#creator) - create an element by name. + +### [Joining Data](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#joining-data) + +* [*selection*.data](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_data) - bind elements to data. +* [*selection*.join](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_join) - enter, update or exit elements based on data. +* [*selection*.enter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_enter) - get the enter selection (data missing elements). +* [*selection*.exit](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_exit) - get the exit selection (elements missing data). +* [*selection*.datum](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_datum) - get or set element data (without joining). + +### [Handling Events](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#handling-events) + +* [*selection*.on](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_on) - add or remove event listeners. +* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_dispatch) - dispatch a custom event. +* [d3.event](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#event) - the current user event, during interaction. +* [d3.customEvent](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#customEvent) - temporarily define a custom event. +* [d3.mouse](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#mouse) - get the mouse position relative to a given container. +* [d3.touch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#touch) - get a touch position relative to a given container. +* [d3.touches](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#touches) - get the touch positions relative to a given container. +* [d3.clientPoint](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#clientPoint) - get a position relative to a given container. + +### [Control Flow](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#control-flow) + +* [*selection*.each](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_each) - call a function for each element. +* [*selection*.call](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_call) - call a function with this selection. +* [*selection*.empty](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_empty) - returns true if this selection is empty. +* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_nodes) - returns an array of all selected elements. +* [*selection*.node](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_node) - returns the first (non-null) element. +* [*selection*.size](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_size) - returns the count of elements. + +### [Local Variables](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local-variables) + +* [d3.local](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local) - declares a new local variable. +* [*local*.set](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_set) - set a local variable’s value. +* [*local*.get](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_get) - get a local variable’s value. +* [*local*.remove](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_remove) - delete a local variable. +* [*local*.toString](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_toString) - get the property identifier of a local variable. + +### [Namespaces](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespaces) + +* [d3.namespace](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. +* [d3.namespaces](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespaces) - the built-in XML namespaces. + +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v2.0.0) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.radialArea](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea) - create a new radial area generator. -* [*radialArea*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_radialArea) - generate an area for the given dataset. -* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_angle) - set the start and end angle accessors. -* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_startAngle) - set the start angle accessor. -* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_endAngle) - set the end angle accessor. -* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_radius) - set the inner and outer radius accessors. -* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_innerRadius) - set the inner radius accessor. -* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_outerRadius) - set the outer radius accessor. -* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_defined) - set the defined accessor. -* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_curve) - set the curve interpolator. -* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialArea_context) - set the rendering context. -* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineStartAngle) - derive a line for the start edge of an area. -* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineEndAngle) - derive a line for the end edge of an area. -* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. -* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.radialArea](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea) - create a new radial area generator. +* [*radialArea*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_radialArea) - generate an area for the given dataset. +* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_angle) - set the start and end angle accessors. +* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_startAngle) - set the start angle accessor. +* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_endAngle) - set the end angle accessor. +* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_radius) - set the inner and outer radius accessors. +* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_innerRadius) - set the inner radius accessor. +* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_outerRadius) - set the outer radius accessor. +* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_defined) - set the defined accessor. +* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_curve) - set the curve interpolator. +* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_context) - set the rendering context. +* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineStartAngle) - derive a line for the start edge of an area. +* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineEndAngle) - derive a line for the end edge of an area. +* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. +* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#bundle_beta) - set the bundle tension *beta*. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#cardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#bundle_beta) - set the bundle tension *beta*. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#cardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#linkRadial) - create a new radial link generator. -* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialLink_angle) - set the point *angle* accessor. -* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#radialLink_radius) - set the point *radius* accessor. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial) - create a new radial link generator. +* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialLink_angle) - set the point *angle* accessor. +* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialLink_radius) - set the point *radius* accessor. -### [Symbols](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbols) +### [Symbols](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#pointRadial) - -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_context) - set the rendering context. +* [d3.symbols](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbols) - the array of built-in symbol types. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolCircle) - a circle. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolCross) - a Greek cross with arms of equal length. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolDiamond) - a rhombus. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolSquare) - a square. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolStar) - a pentagonal star (pentagram). +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolTriangle) - an up-pointing triangle. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolWye) - a Y shape. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v1.3.7/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. - -## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v2.2.3) +* [d3.stack](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. + +## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v3.0.0) Parse and format times, inspired by strptime and strftime. -* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormat) - alias for *locale*.format on the default locale. -* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeParse) - alias for *locale*.parse on the default locale. -* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. -* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#utcParse) - alias for *locale*.utcParse on the default locale. -* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#isoFormat) - an ISO 8601 UTC formatter. -* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#isoParse) - an ISO 8601 UTC parser. -* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormatLocale) - define a custom locale. -* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#timeFormatDefaultLocale) - define the default locale. -* [*locale*.format](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_format) - create a time formatter. -* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_parse) - create a time parser. -* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_utcFormat) - create a UTC formatter. -* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v2.2.3/README.md#locale_utcParse) - create a UTC parser. - -## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v1.1.0) +* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormat) - alias for *locale*.format on the default locale. +* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeParse) - alias for *locale*.parse on the default locale. +* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. +* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#utcParse) - alias for *locale*.utcParse on the default locale. +* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoFormat) - an ISO 8601 UTC formatter. +* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoParse) - an ISO 8601 UTC parser. +* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. +* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. +* [*locale*.format](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_format) - create a time formatter. +* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_parse) - create a time parser. +* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcFormat) - create a UTC formatter. +* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcParse) - create a UTC parser. + +## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v2.0.0) A calculator for humanity’s peculiar conventions of time. -* [d3.timeInterval](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeInterval) - implement a new custom time interval. -* [*interval*](https://github.com/d3/d3-time/blob/v1.1.0/README.md#_interval) - alias for *interval*.floor. -* [*interval*.floor](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_floor) - round down to the nearest boundary. -* [*interval*.round](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_round) - round to the nearest boundary. -* [*interval*.ceil](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_ceil) - round up to the nearest boundary. -* [*interval*.offset](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_offset) - offset a date by some number of intervals. -* [*interval*.range](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_range) - generate a range of dates at interval boundaries. -* [*interval*.filter](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_filter) - create a filtered subset of this interval. -* [*interval*.every](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_every) - create a filtered subset of this interval. -* [*interval*.count](https://github.com/d3/d3-time/blob/v1.1.0/README.md#interval_count) - count interval boundaries between two dates. -* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond) - the millisecond interval. -* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMillisecond) - aliases for millisecond.range. -* [d3.timeSecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond) - the second interval. -* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSecond) - aliases for second.range. -* [d3.timeMinute](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute) - the minute interval. -* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMinute) - aliases for minute.range. -* [d3.timeHour](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour) - the hour interval. -* [d3.timeHours](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeHour) - aliases for hour.range. -* [d3.timeDay](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay) - the day interval. -* [d3.timeDays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeDay) - aliases for day.range. -* [d3.timeWeek](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek) - aliases for sunday. -* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWeek) - aliases for week.range. -* [d3.timeSunday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday) - the week interval, starting on Sunday. -* [d3.timeSundays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSunday) - aliases for sunday.range. -* [d3.timeMonday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday) - the week interval, starting on Monday. -* [d3.timeMondays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonday) - aliases for monday.range. -* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday) - the week interval, starting on Tuesday. -* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeTuesday) - aliases for tuesday.range. -* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday) - the week interval, starting on Wednesday. -* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeWednesday) - aliases for wednesday.range. -* [d3.timeThursday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday) - the week interval, starting on Thursday. -* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeThursday) - aliases for thursday.range. -* [d3.timeFriday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday) - the week interval, starting on Friday. -* [d3.timeFridays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeFriday) - aliases for friday.range. -* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday) - the week interval, starting on Saturday. -* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeSaturday) - aliases for saturday.range. -* [d3.timeMonth](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth) - the month interval. -* [d3.timeMonths](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeMonth) - aliases for month.range. -* [d3.timeYear](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear) - the year interval. -* [d3.timeYears](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v1.1.0/README.md#timeYear) - aliases for year.range. - -## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v1.0.10) +* [d3.timeInterval](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeInterval) - implement a new custom time interval. +* [*interval*](https://github.com/d3/d3-time/blob/v2.0.0/README.md#_interval) - alias for *interval*.floor. +* [*interval*.floor](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_floor) - round down to the nearest boundary. +* [*interval*.round](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_round) - round to the nearest boundary. +* [*interval*.ceil](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_ceil) - round up to the nearest boundary. +* [*interval*.offset](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_offset) - offset a date by some number of intervals. +* [*interval*.range](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_range) - generate a range of dates at interval boundaries. +* [*interval*.filter](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_filter) - create a filtered subset of this interval. +* [*interval*.every](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_every) - create a filtered subset of this interval. +* [*interval*.count](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_count) - count interval boundaries between two dates. +* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond) - the millisecond interval. +* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond) - aliases for millisecond.range. +* [d3.timeSecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond) - the second interval. +* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond) - aliases for second.range. +* [d3.timeMinute](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute) - the minute interval. +* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute) - aliases for minute.range. +* [d3.timeHour](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour) - the hour interval. +* [d3.timeHours](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour) - aliases for hour.range. +* [d3.timeDay](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay) - the day interval. +* [d3.timeDays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay) - aliases for day.range. +* [d3.timeWeek](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek) - aliases for sunday. +* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek) - aliases for week.range. +* [d3.timeSunday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday) - the week interval, starting on Sunday. +* [d3.timeSundays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday) - aliases for sunday.range. +* [d3.timeMonday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday) - the week interval, starting on Monday. +* [d3.timeMondays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday) - aliases for monday.range. +* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday) - the week interval, starting on Tuesday. +* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday) - aliases for tuesday.range. +* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday) - the week interval, starting on Wednesday. +* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday) - aliases for wednesday.range. +* [d3.timeThursday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday) - the week interval, starting on Thursday. +* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday) - aliases for thursday.range. +* [d3.timeFriday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday) - the week interval, starting on Friday. +* [d3.timeFridays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday) - aliases for friday.range. +* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday) - the week interval, starting on Saturday. +* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday) - aliases for saturday.range. +* [d3.timeMonth](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth) - the month interval. +* [d3.timeMonths](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth) - aliases for month.range. +* [d3.timeYear](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear) - the year interval. +* [d3.timeYears](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear) - aliases for year.range. + +## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v2.0.0) An efficient queue for managing thousands of concurrent animations. -* [d3.now](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#now) - get the current high-resolution time. -* [d3.timer](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer) - schedule a new timer. -* [*timer*.restart](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer_restart) - reset the timer’s start time and callback. -* [*timer*.stop](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timer_stop) - stop the timer. -* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timerFlush) - immediately execute any eligible timers. -* [d3.timeout](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#timeout) - schedule a timer that stops on its first callback. -* [d3.interval](https://github.com/d3/d3-timer/blob/v1.0.10/README.md#interval) - schedule a timer that is called with a configurable period. +* [d3.now](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#now) - get the current high-resolution time. +* [d3.timer](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer) - schedule a new timer. +* [*timer*.restart](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer_restart) - reset the timer’s start time and callback. +* [*timer*.stop](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer_stop) - stop the timer. +* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timerFlush) - immediately execute any eligible timers. +* [d3.timeout](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timeout) - schedule a timer that stops on its first callback. +* [d3.interval](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v1.3.2) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v2.0.0) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_selection) - returns a selection for this transition. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_on) - await the end of a transition. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_textTween) - tween the text using a custom interpolator. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v1.3.2/README.md#interrupt) - interrupt the active transition for a given node. - -## [Voronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) - -Compute the Voronoi diagram of a given set of points. - -* [d3.voronoi](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi) - create a new Voronoi generator. -* [*voronoi*](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#_voronoi) - generate a new Voronoi diagram for the given points. -* [*voronoi*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_polygons) - compute the Voronoi polygons for the given points. +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_merge) - merge this transition with another. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_transition) - schedule a new transition following this one. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_call) - call a function with this transition. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_size) - returns the count of elements. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_each) - call a function for each element. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - add or remove transition event listeners. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - await the end of a transition. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_textTween) - tween the text using a custom interpolator. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_ease) - specify the easing function. +* [d3.active](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#active) - select the active transition for a given node. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#interrupt) - interrupt the active transition for a given node. + +## [XXXVoronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) + +Compute the XXXVoronoi diagram of a given set of points. + +* [d3.voronoi](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi) - create a new XXXVoronoi generator. +* [*voronoi*](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#_voronoi) - generate a new XXXVoronoi diagram for the given points. +* [*voronoi*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_polygons) - compute the XXXVoronoi polygons for the given points. * [*voronoi*.triangles](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_triangles) - compute the Delaunay triangles for the given points. * [*voronoi*.links](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_links) - compute the Delaunay links for the given points. * [*voronoi*.x](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_x) - set the *x* accessor. * [*voronoi*.y](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_y) - set the *y* accessor. * [*voronoi*.extent](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_extent) - set the observed extent of points. * [*voronoi*.size](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_size) - set the observed extent of points. -* [*diagram*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_polygons) - compute the polygons for this Voronoi diagram. -* [*diagram*.triangles](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_triangles) - compute the triangles for this Voronoi diagram. -* [*diagram*.links](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_links) - compute the links for this Voronoi diagram. -* [*diagram*.find](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_find) - find the closest point in this Voronoi diagram. +* [*diagram*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_polygons) - compute the polygons for this XXXVoronoi diagram. +* [*diagram*.triangles](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_triangles) - compute the triangles for this XXXVoronoi diagram. +* [*diagram*.links](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_links) - compute the links for this XXXVoronoi diagram. +* [*diagram*.find](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_find) - find the closest point in this XXXVoronoi diagram. -## [Zooming (d3-zoom)](https://github.com/d3/d3-zoom/tree/v1.8.3) +## [Zooming (d3-zoom)](https://github.com/d3/d3-zoom/tree/v2.0.0) Pan and zoom SVG, HTML or Canvas using mouse or touch input. -* [d3.zoom](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom) - create a zoom behavior. -* [*zoom*](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#_zoom) - apply the zoom behavior to the selected elements. -* [*zoom*.transform](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_transform) - change the transform for the selected elements. -* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_translateTo) - translate the transform for the selected elements. -* [*zoom*.translateBy](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_translateBy) - translate the transform for the selected elements. -* [*zoom*.scaleBy](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_scaleBy) - scale the transform for the selected elements. -* [*zoom*.scaleTo](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_scaleTo) - scale the transform for the selected elements. -* [*zoom*.filter](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_filter) - control which input events initiate zooming. -* [*zoom*.touchable](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_touchable) - set the touch support detector. -* [*zoom*.wheelDelta](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_wheelDelta) - override scaling for wheel events. -* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_clickDistance) - set the click distance threshold. -* [*zoom*.extent](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_extent) - set the extent of the viewport. -* [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_scaleExtent) - set the allowed scale range. -* [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_translateExtent) - set the extent of the zoomable world. -* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_constrain) - override the transform constraint logic. -* [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_duration) - set the duration of zoom transitions. -* [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_interpolate) - control the interpolation of zoom transitions. -* [*zoom*.on](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoom_on) - listen for zoom events. -* [d3.zoomTransform](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoomTransform) - get the zoom transform for a given element. -* [*transform*.scale](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_scale) - scale a transform by the specified amount. -* [*transform*.translate](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_translate) - translate a transform by the specified amount. -* [*transform*.apply](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_apply) - apply the transform to the given point. -* [*transform*.applyX](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_applyX) - apply the transform to the given *x*-coordinate. -* [*transform*.applyY](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_applyY) - apply the transform to the given *y*-coordinate. -* [*transform*.invert](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_invert) - unapply the transform to the given point. -* [*transform*.invertX](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_invertX) - unapply the transform to the given *x*-coordinate. -* [*transform*.invertY](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_invertY) - unapply the transform to the given *y*-coordinate. -* [*transform*.rescaleX](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_rescaleX) - apply the transform to an *x*-scale’s domain. -* [*transform*.rescaleY](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_rescaleY) - apply the transform to a *y*-scale’s domain. -* [*transform*.toString](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#transform_toString) - format the transform as an SVG transform string. -* [d3.zoomIdentity](https://github.com/d3/d3-zoom/blob/v1.8.3/README.md#zoomIdentity) - the identity transform. +* [d3.zoom](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom) - create a zoom behavior. +* [*zoom*](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#_zoom) - apply the zoom behavior to the selected elements. +* [*zoom*.transform](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_transform) - change the transform for the selected elements. +* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateTo) - translate the transform for the selected elements. +* [*zoom*.translateBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateBy) - translate the transform for the selected elements. +* [*zoom*.scaleBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleBy) - scale the transform for the selected elements. +* [*zoom*.scaleTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleTo) - scale the transform for the selected elements. +* [*zoom*.filter](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_filter) - control which input events initiate zooming. +* [*zoom*.touchable](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_touchable) - set the touch support detector. +* [*zoom*.wheelDelta](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_wheelDelta) - override scaling for wheel events. +* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_clickDistance) - set the click distance threshold. +* [*zoom*.extent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_extent) - set the extent of the viewport. +* [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleExtent) - set the allowed scale range. +* [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateExtent) - set the extent of the zoomable world. +* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_constrain) - override the transform constraint logic. +* [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_duration) - set the duration of zoom transitions. +* [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_interpolate) - control the interpolation of zoom transitions. +* [*zoom*.on](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_on) - listen for zoom events. +* [d3.zoomTransform](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoomTransform) - get the zoom transform for a given element. +* [*transform*.scale](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_scale) - scale a transform by the specified amount. +* [*transform*.translate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_translate) - translate a transform by the specified amount. +* [*transform*.apply](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_apply) - apply the transform to the given point. +* [*transform*.applyX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_applyX) - apply the transform to the given *x*-coordinate. +* [*transform*.applyY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_applyY) - apply the transform to the given *y*-coordinate. +* [*transform*.invert](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invert) - unapply the transform to the given point. +* [*transform*.invertX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invertX) - unapply the transform to the given *x*-coordinate. +* [*transform*.invertY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invertY) - unapply the transform to the given *y*-coordinate. +* [*transform*.rescaleX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_rescaleX) - apply the transform to an *x*-scale’s domain. +* [*transform*.rescaleY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_rescaleY) - apply the transform to a *y*-scale’s domain. +* [*transform*.toString](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_toString) - format the transform as an SVG transform string. +* [d3.zoomIdentity](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoomIdentity) - the identity transform. From 508895ec9bfaa790ad8c0d1e826ef1d79ffd4e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:24:42 +0200 Subject: [PATCH 031/311] d3-array --- API.md | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/API.md b/API.md index 200d30254017fc..a856556f1387f1 100644 --- a/API.md +++ b/API.md @@ -45,26 +45,44 @@ Array manipulation, ordering, searching, summarizing, etc. Methods for computing basic summary statistics. * [d3.min](https://github.com/d3/d3-array/blob/v2.6.0/README.md#min) - compute the minimum value in an array. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#minIndex) - xxxxxxxxx * [d3.max](https://github.com/d3/d3-array/blob/v2.6.0/README.md#max) - compute the maximum value in an array. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#maxIndex) - xxxxxxxxx * [d3.extent](https://github.com/d3/d3-array/blob/v2.6.0/README.md#extent) - compute the minimum and maximum value in an array. * [d3.sum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#sum) - compute the sum of an array of numbers. * [d3.mean](https://github.com/d3/d3-array/blob/v2.6.0/README.md#mean) - compute the arithmetic mean of an array of numbers. * [d3.median](https://github.com/d3/d3-array/blob/v2.6.0/README.md#median) - compute the median of an array of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cumsum) - xxxxxxxxx * [d3.quantile](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantile) - compute a quantile for a sorted array of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantileSorted) - xxxxxxxxx * [d3.variance](https://github.com/d3/d3-array/blob/v2.6.0/README.md#variance) - compute the variance of an array of numbers. * [d3.deviation](https://github.com/d3/d3-array/blob/v2.6.0/README.md#deviation) - compute the standard deviation of an array of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#fsum) - xxxxxxxxx +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder) - xxxxxxxxx +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_add) - xxxxxxxxx +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_valueOf) - xxxxxxxxx ### [Search](https://github.com/d3/d3-array/blob/v2.6.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.scan](https://github.com/d3/d3-array/blob/v2.6.0/README.md#scan) - linear search for an element using a comparator. +* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - xxxxxxxxx +* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - xxxxxxxxx +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - xxxxxxxxx +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - xxxxxxxxx +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - xxxxxxxxx +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - xxxxxxxxx +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - xxxxxxxxx +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - xxxxxxxxx +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectLeft) - binary search for a value in a sorted array. * [d3.bisect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisect) - binary search for a value in a sorted array. * [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. * [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. * [*bisector*.left](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_left) - bisectLeft, with the given comparator. * [*bisector*.right](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_center) - xxxxxxxxx +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quickselect) - xxxxxxxxx * [d3.ascending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ascending) - compute the natural order of two values. * [d3.descending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#descending) - compute the natural order of two values. @@ -72,6 +90,13 @@ Methods for searching arrays for a specific element. Methods for transforming arrays and for generating new arrays. +* [d3.group](https://github.com/d3/d3-array/blob/v2.6.0/README.md#group) - xxxxxxxxx +* [d3.groups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#groups) - xxxxxxxxx +* [d3.index](https://github.com/d3/d3-array/blob/v2.6.0/README.md#index) - xxxxxxxxx +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.6.0/README.md#indexes) - xxxxxxxxx +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollup) - xxxxxxxxx +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollups) - xxxxxxxxx +* [d3.count](https://github.com/d3/d3-array/blob/v2.6.0/README.md#count) - xxxxxxxxx * [d3.cross](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cross) - compute the Cartesian product of two arrays. * [d3.merge](https://github.com/d3/d3-array/blob/v2.6.0/README.md#merge) - merge multiple arrays into one array. * [d3.pairs](https://github.com/d3/d3-array/blob/v2.6.0/README.md#pairs) - create an array of adjacent pairs of elements. @@ -88,11 +113,11 @@ Methods for transforming arrays and for generating new arrays. Bin discrete samples into continuous, non-overlapping intervals. -* [d3.histogram](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram) - create a new histogram generator. -* [*histogram*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_histogram) - compute the histogram for the given array of samples. -* [*histogram*.value](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_value) - specify a value accessor for each sample. -* [*histogram*.domain](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_domain) - specify the interval of observable values. -* [*histogram*.thresholds](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histogram_thresholds) - specify how values are divided into bins. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin) - create a new histogram generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_bin) - compute the histogram for the given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_thresholds) - specify how values are divided into bins. * [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. * [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdScott) - Scott’s normal reference binning rule. * [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdSturges) - Sturges’ binning formula. From de356488fa92d26f5885ca9c0418c63c9575c0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:29:31 +0200 Subject: [PATCH 032/311] d3-axis, d3-brush --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index a856556f1387f1..e24cac2f3d03c5 100644 --- a/API.md +++ b/API.md @@ -153,9 +153,9 @@ Select a one- or two-dimensional region using the mouse or touch. * [*brush*.clear](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_clear) - clear the brush selection. * [*brush*.extent](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_extent) - define the brushable region. * [*brush*.filter](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_filter) - control which input events initiate brushing. -* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_handleSize) - set the size of the brush handles. * [*brush*.touchable](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_touchable) - set the touch support detector. * [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_keyModifiers) - enable or disable key interaction. +* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_handleSize) - set the size of the brush handles. * [*brush*.on](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_on) - listen for brush events. * [d3.brushSelection](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushSelection) - get the brush selection for a given node. From f4cae16bbff26b470320657cf1d08c20e47f1440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:39:07 +0200 Subject: [PATCH 033/311] d3-chord --- API.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/API.md b/API.md index e24cac2f3d03c5..3cbc91ee1fb754 100644 --- a/API.md +++ b/API.md @@ -167,14 +167,21 @@ Select a one- or two-dimensional region using the mouse or touch. * [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortGroups) - define the group order. * [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortSubgroups) - define the source and target order within groups. * [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortChords) - define the chord order across groups. +* [d3.chordDirected](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordDirected) - xxxxxxxxx +* [d3.chordTranspose](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordTranspose) - xxxxxxxxx * [d3.ribbon](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon) - create a ribbon shape generator. * [*ribbon*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_ribbon) - generate a ribbon shape. * [*ribbon*.source](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_source) - set the source accessor. * [*ribbon*.target](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_target) - set the target accessor. * [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_radius) - set the ribbon source or target radius. +* [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_sourceRadius) - xxxxxxxxx +* [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_targetRadius) - xxxxxxxxx * [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_startAngle) - set the ribbon source or target start angle. * [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_endAngle) - set the ribbon source or target end angle. +* [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_padAngle) - xxxxxxxxx * [*ribbon*.context](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_context) - set the render context. +* [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow) - xxxxxxxxx +* [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow_headRadius) - xxxxxxxxx ## [XXXCollections (d3-collection)](https://github.com/d3/d3-collection/tree/v1.0.7) From edca90c53cfb0012a6e70eecb5c99515d7fcf814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:39:57 +0200 Subject: [PATCH 034/311] remove d3-collection --- API.md | 56 -------------------------------------------------------- 1 file changed, 56 deletions(-) diff --git a/API.md b/API.md index 3cbc91ee1fb754..3a28d8ec53c07f 100644 --- a/API.md +++ b/API.md @@ -183,62 +183,6 @@ Select a one- or two-dimensional region using the mouse or touch. * [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow) - xxxxxxxxx * [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow_headRadius) - xxxxxxxxx -## [XXXCollections (d3-collection)](https://github.com/d3/d3-collection/tree/v1.0.7) - -Handy data structures for elements keyed by string. - -### [Objects](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#objects) - -Methods for converting associative arrays (objects) to arrays. - -* [d3.keys](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#keys) - list the keys of an associative array. -* [d3.values](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#values) - list the values of an associated array. -* [d3.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#entries) - list the key-value entries of an associative array. - -### [Maps](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#maps) - -Like ES6 Map, but with string keys and a few other differences. - -* [d3.map](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map) - create a new, empty map. -* [*map*.has](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_has) - returns true if the map contains the given key. -* [*map*.get](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_get) - get the value for the given key. -* [*map*.set](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_set) - set the value for the given key. -* [*map*.remove](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_remove) - remove the entry for given key. -* [*map*.clear](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_clear) - remove all entries. -* [*map*.keys](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_keys) - get the array of keys. -* [*map*.values](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_values) - get the array of values. -* [*map*.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_entries) - get the array of entries (key-values objects). -* [*map*.each](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_each) - call a function for each entry. -* [*map*.empty](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_empty) - returns false if the map has at least one entry. -* [*map*.size](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#map_size) - compute the number of entries. - -### [Sets](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#sets) - -Like ES6 Set, but with string keys and a few other differences. - -* [d3.set](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set) - create a new, empty set. -* [*set*.has](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_has) - returns true if the set contains the given value. -* [*set*.add](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_add) - add the given value. -* [*set*.remove](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_remove) - remove the given value. -* [*set*.clear](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_clear) - remove all values. -* [*set*.values](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_values) - get the array of values. -* [*set*.each](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_each) - call a function for each value. -* [*set*.empty](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_empty) - returns true if the set has at least one value. -* [*set*.size](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#set_size) - compute the number of values. - -### [Nests](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nests) - -Group data into arbitrary hierarchies. - -* [d3.nest](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest) - create a new nest generator. -* [*nest*.key](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_key) - add a level to the nest hierarchy. -* [*nest*.sortKeys](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_sortKeys) - sort the current nest level by key. -* [*nest*.sortValues](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_sortValues) - sort the leaf nest level by value. -* [*nest*.rollup](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_rollup) - specify a rollup function for leaf values. -* [*nest*.map](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_map) - generate the nest, returning a map. -* [*nest*.object](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_object) - generate the nest, returning an associative array. -* [*nest*.entries](https://github.com/d3/d3-collection/blob/v1.0.7/README.md#nest_entries) - generate the nest, returning an array of key-values tuples. - ## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v2.0.0) Color manipulation and color space conversion. From bd38adeda72a3ad588ce8c8cfe146cfa322ded99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:41:19 +0200 Subject: [PATCH 035/311] d3-color --- API.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index 3a28d8ec53c07f..cf554a21de2c0d 100644 --- a/API.md +++ b/API.md @@ -188,8 +188,9 @@ Select a one- or two-dimensional region using the mouse or touch. Color manipulation and color space conversion. * [d3.color](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color) - parse the given CSS color specifier. -* [*color*.copy](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_copy) - return a copy of this color. +* [*color*.opacity](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_opacity) - xxxxxxxxx * [*color*.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.copy](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_copy) - return a copy of this color. * [*color*.brighter](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_brighter) - create a brighter copy of this color. * [*color*.darker](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_darker) - create a darker copy of this color. * [*color*.displayable](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. @@ -200,9 +201,9 @@ Color manipulation and color space conversion. * [d3.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#rgb) - create a new RGB color. * [d3.hsl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hsl) - create a new HSL color. * [d3.lab](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lab) - create a new Lab color. +* [d3.gray](https://github.com/d3/d3-color/blob/v2.0.0/README.md#gray) - create a new Lab gray. * [d3.hcl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hcl) - create a new HCL color. * [d3.lch](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lch) - create a new HCL color. -* [d3.gray](https://github.com/d3/d3-color/blob/v2.0.0/README.md#gray) - create a new Lab gray. * [d3.cubehelix](https://github.com/d3/d3-color/blob/v2.0.0/README.md#cubehelix) - create a new Cubehelix color. ## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v2.0.0) From e3bc539ccb205cdce7af725418c4fd267bad886e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:51:41 +0200 Subject: [PATCH 036/311] d3-scale-chromatic (no change) & d3-contour --- API.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/API.md b/API.md index cf554a21de2c0d..b136f9a1ef8da8 100644 --- a/API.md +++ b/API.md @@ -305,20 +305,20 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. Compute contour polygons using marching squares. * [d3.contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours) - create a new contour generator. -* [contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_contours) - compute the contours for a given grid of values. -* [contours.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - -* [contours.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - -* [contours.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - -* [contours.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - +* [*contours*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_contours) - compute the contours for a given grid of values. +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - xxxxxxxxx +* [*contours*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - xxxxxxxxx +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - xxxxxxxxx +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - xxxxxxxxx * [d3.contourDensity](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contourDensity) - create a new density estimator. -* [density](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_density) - estimate the density of a given array of samples. -* [density.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - -* [density.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - -* [density.size](https://github.com/d3/d3-contour#density_size) - -* [density.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - -* [density.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - -* [density.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - -* [density.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - +* [*density*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_density) - estimate the density of a given array of samples. +* [*density*.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - xxxxxxxxx +* [*density*.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - xxxxxxxxx +* [*density*.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - xxxxxxxxx +* [*density*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_size) - xxxxxxxxx +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - xxxxxxxxx +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - xxxxxxxxx +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - xxxxxxxxx ## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v2.0.0) From 1a19de00ee0ed2021f944faa5e87e4566d38ebcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:52:26 +0200 Subject: [PATCH 037/311] d3-dispatch --- API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index b136f9a1ef8da8..44bc2f265a4928 100644 --- a/API.md +++ b/API.md @@ -327,8 +327,8 @@ Separate concerns using named callbacks. * [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch) - create a custom event dispatcher. * [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_on) - register or unregister an event listener. * [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_copy) - create a copy of a dispatcher. -* [*dispatch*.*call*](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_call) - dispatch an event to registered listeners. -* [*dispatch*.*apply*](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_apply) - dispatch an event to registered listeners. +* [*dispatch*.call](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_call) - dispatch an event to registered listeners. +* [*dispatch*.apply](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_apply) - dispatch an event to registered listeners. ## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v2.0.0) From 7f0361dc9f1e6a7d86babd7ce94f377108621e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:53:29 +0200 Subject: [PATCH 038/311] d3-drag --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index 44bc2f265a4928..6c130f5f6c3ed3 100644 --- a/API.md +++ b/API.md @@ -342,9 +342,9 @@ Drag and drop SVG, HTML or Canvas using mouse or touch input. * [*drag*.subject](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_subject) - set the thing being dragged. * [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_clickDistance) - set the click distance threshold. * [*drag*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_on) - listen for drag events. -* [*event*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#event_on) - listen for drag events on the current gesture. * [d3.dragDisable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragDisable) - prevent native drag-and-drop and text selection. * [d3.dragEnable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragEnable) - enable native drag-and-drop and text selection. +* [*event*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#event_on) - listen for drag events on the current gesture. ## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v2.0.0) From bad1530d5bae681b0018734b55cb31ef6bc764b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:55:24 +0200 Subject: [PATCH 039/311] d3-dsv --- API.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/API.md b/API.md index 6c130f5f6c3ed3..764cc85de08281 100644 --- a/API.md +++ b/API.md @@ -350,15 +350,6 @@ Drag and drop SVG, HTML or Canvas using mouse or touch input. Parse and format delimiter-separated values, most commonly CSV and TSV. -* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. -* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parse) - parse the given string, returning an array of objects. -* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. -* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_format) - format the given array of objects. -* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatBody) - format the given array of objects. -* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRows) - format the given array of rows. -* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRow) - format the given row. -* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatValue) - format the given value. -* [d3.autoType](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#autoType) - automatically infer value types for the given object. * [d3.csvParse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParse) - parse the given CSV string, returning an array of objects. * [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. * [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormat) - format the given array of objects as CSV. @@ -373,6 +364,15 @@ Parse and format delimiter-separated values, most commonly CSV and TSV. * [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRows) - format the given array of rows as TSV. * [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRow) - format the given row as TSV. * [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatValue) - format the given value as TSV. +* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. +* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parse) - parse the given string, returning an array of objects. +* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. +* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_format) - format the given array of objects. +* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatBody) - format the given array of objects. +* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRows) - format the given array of rows. +* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRow) - format the given row. +* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatValue) - format the given value. +* [d3.autoType](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#autoType) - automatically infer value types for the given object. ## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v2.0.0) From ad056a3f8720de9c73c25b8aceb2a6734f0a269d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:57:06 +0200 Subject: [PATCH 040/311] d3-ease --- API.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/API.md b/API.md index 764cc85de08281..5c6f5e9ec9ec05 100644 --- a/API.md +++ b/API.md @@ -382,41 +382,42 @@ Easing functions for smooth animation. * [d3.easeLinear](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeLinear) - linear easing; the identity function. * [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyIn) - polynomial easing; raises time to the given power. * [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyOut) - reverse polynomial easing. +* [d3.easePoly](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePoly) - xxxxxxxxx * [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyInOut) - symmetric polynomial easing. * [*poly*.exponent](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#poly_exponent) - specify the polynomial exponent. -* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuad) - an alias for easeQuadInOut. * [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadIn) - quadratic easing; squares time. * [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadOut) - reverse quadratic easing. +* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuad) - an alias for easeQuadInOut. * [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadInOut) - symmetric quadratic easing. -* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubic) - an alias for easeCubicInOut. * [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicIn) - cubic easing; cubes time. * [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicOut) - reverse cubic easing. +* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubic) - an alias for easeCubicInOut. * [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicInOut) - symmetric cubic easing. -* [d3.easeSin](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSin) - an alias for easeSinInOut. * [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinIn) - sinusoidal easing. * [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinOut) - reverse sinusoidal easing. +* [d3.easeSin](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSin) - an alias for easeSinInOut. * [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinInOut) - symmetric sinusoidal easing. -* [d3.easeExp](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExp) - an alias for easeExpInOut. * [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpIn) - exponential easing. * [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpOut) - reverse exponential easing. +* [d3.easeExp](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExp) - an alias for easeExpInOut. * [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpInOut) - symmetric exponential easing. -* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircle) - an alias for easeCircleInOut. * [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleIn) - circular easing. * [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleOut) - reverse circular easing. +* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircle) - an alias for easeCircleInOut. * [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleInOut) - symmetric circular easing. -* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElastic) - an alias for easeElasticOut. * [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticIn) - elastic easing, like a rubber band. +* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElastic) - an alias for easeElasticOut. * [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticOut) - reverse elastic easing. * [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticInOut) - symmetric elastic easing. * [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_amplitude) - specify the elastic amplitude. * [*elastic*.period](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_period) - specify the elastic period. -* [d3.easeBack](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBack) - an alias for easeBackInOut. * [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. * [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackOut) - reverse anticipatory easing. +* [d3.easeBack](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBack) - an alias for easeBackInOut. * [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackInOut) - symmetric anticipatory easing. * [*back*.overshoot](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#back_overshoot) - specify the amount of overshoot. -* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounce) - an alias for easeBounceOut. * [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceIn) - bounce easing, like a rubber ball. +* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounce) - an alias for easeBounceOut. * [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceOut) - reverse bounce easing. * [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceInOut) - symmetric bounce easing. From 091cc389c478f563ae5bb7dbc843e640e7d9e3ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:57:46 +0200 Subject: [PATCH 041/311] d3-fetch --- API.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/API.md b/API.md index 5c6f5e9ec9ec05..c66e8166711fee 100644 --- a/API.md +++ b/API.md @@ -429,10 +429,13 @@ Convenience methods on top of the Fetch API. * [d3.buffer](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#buffer) - get a file as an array buffer. * [d3.csv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#csv) - get a comma-separated values (CSV) file. * [d3.dsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#dsv) - get a delimiter-separated values (CSV) file. +* [d3.html](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#html) - xxxxxxxxx * [d3.image](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#image) - get an image. * [d3.json](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#json) - get a JSON file. +* [d3.svg](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#svg) - xxxxxxxxx * [d3.text](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#text) - get a plain text file. * [d3.tsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#tsv) - get a tab-separated values (TSV) file. +* [d3.xml](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#xml) - xxxxxxxxx ## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v2.1.1) From 0ce16b29d3b167918f5c0a33579220be884fb5a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 11:58:40 +0200 Subject: [PATCH 042/311] d3-force --- API.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/API.md b/API.md index c66e8166711fee..0778a2576a8db2 100644 --- a/API.md +++ b/API.md @@ -453,12 +453,14 @@ Force-directed graph layout using velocity Verlet integration. * [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_velocityDecay) - set the velocity decay rate. * [*simulation*.force](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_force) - add or remove a force. * [*simulation*.find](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_find) - find the closest node to the given position. +* [*simulation*.randomSource](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_randomSource) - xxxxxxxxx * [*simulation*.on](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_on) - add or remove an event listener. * [*force*](https://github.com/d3/d3-force/blob/v2.1.1/README.md#_force) - apply the force. * [*force*.initialize](https://github.com/d3/d3-force/blob/v2.1.1/README.md#force_initialize) - initialize the force with the given nodes. * [d3.forceCenter](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCenter) - create a centering force. * [*center*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_x) - set the center *x*-coordinate. * [*center*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_y) - set the center *y*-coordinate. +* [*center*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_strength) - xxxxxxxxx * [d3.forceCollide](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCollide) - create a circle collision force. * [*collide*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_radius) - set the circle radius. * [*collide*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_strength) - set the collision resolution strength. From 68130ea1fc116e5e74c3e6f5404c1d5e27512127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:01:42 +0200 Subject: [PATCH 043/311] d3-format --- API.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/API.md b/API.md index 0778a2576a8db2..0a910e4150b318 100644 --- a/API.md +++ b/API.md @@ -494,14 +494,15 @@ Format numbers for human consumption. * [d3.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#format) - alias for *locale*.format on the default locale. * [d3.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatSpecifier) - parse a number format specifier. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatDefaultLocale) - define the default locale. * [*locale*.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_format) - create a number format. * [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatSpecifier) - parse a number format specifier. +* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#FormatSpecifier) - xxxxxxxxx * [d3.precisionFixed](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionFixed) - compute decimal precision for fixed-point notation. * [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. * [d3.precisionRound](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatDefaultLocale) - define the default locale. ## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v2.0.0) From f1b9220a4080000228a9a2d3842d5768fc1f987a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:12:39 +0200 Subject: [PATCH 044/311] d3-geo --- API.md | 71 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/API.md b/API.md index 0a910e4150b318..5f690fb374afab 100644 --- a/API.md +++ b/API.md @@ -525,65 +525,68 @@ Geographic projections, shapes and math. * [*projection*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_projection) - project the specified point from the sphere to the plane. * [*projection*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. * [*projection*.stream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_stream) - wrap the specified stream to project geometry. +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_preclip) - xxxxxxxxx +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_postclip) - xxxxxxxxx * [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipAngle) - set the radius of the clip circle. * [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. +* [*projection*.scale](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_scale) - set the scale factor. +* [*projection*.translate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_translate) - set the translation offset. +* [*projection*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_center) - set the center point. * [*projection*.angle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_angle) - set the post-projection rotation. * [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectX) - reflect the *x*-dimension. * [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectY) - reflect the *y*-dimension. -* [*projection*.scale](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_scale) - set the scale factor. -* [*projection*.translate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_translate) - set the translation offset. +* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. +* [*projection*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. * [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. * [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. * [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. * [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. -* [*projection*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_center) - set the center point. -* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. -* [*projection*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection.preclip) - set the spherical clipping stream transform. -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection.postclip) - set the planar clipping stream transform. -* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. -* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. -* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbers) - the Albers equal-area conic projection. -* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. * [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. +* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. * [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. +* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. +* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. +* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographic) - the azimuthal orthographic projection. +* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. +* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. +* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoEqualEarthRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarthRaw) - xxxxxxxxx +* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. +* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#conic_parallels) - set the two standard parallels. +* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbers) - the Albers equal-area conic projection. * [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformal) - the conic conformal projection. +* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. * [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. +* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. * [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistant) - the conic equidistant projection. -* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#conic_parallels) - set the two standard parallels. -* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. * [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. -* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. * [d3.geoMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercator) - the spherical Mercator projection. -* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographic) - the azimuthal orthographic projection. -* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercatorRaw) - the raw Mercator projection. * [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. +* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. +* [d3.geoNaturalEarth1](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1) - xxxxxxxxx +* [d3.geoNaturalEarth1Raw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1Raw) - xxxxxxxxx + +### [Raw projections](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#raw-projections) + * [*project*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_project) - project the specified point from the sphere to the plane. * [*project*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#project_invert) - unproject the specified point from the plane to the sphere. * [d3.geoProjection](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjection) - create a custom projection. * [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjectionMutator) - create a custom configurable projection. -* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. -* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. -* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. -* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. -* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. -* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. -* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercatorRaw) - the raw Mercator projection. -* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. -* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. -* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. ### [Spherical Math](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#spherical-math) * [d3.geoArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoArea) - compute the spherical area of a given feature. * [d3.geoBounds](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. * [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoCentroid) - compute the spherical centroid of a given feature. -* [d3.geoContains](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoContains) - test whether a point is inside a given feature. * [d3.geoDistance](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoDistance) - compute the great-arc distance between two points. * [d3.geoLength](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. * [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoInterpolate) - interpolate between two points along a great arc. +* [d3.geoContains](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoContains) - test whether a point is inside a given feature. * [d3.geoRotation](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoRotation) - create a rotation function for the specified angles. * [*rotation*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_rotation) - rotate the given point around the sphere. * [*rotation*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#rotation_invert) - unrotate the given point around the sphere. @@ -620,8 +623,16 @@ Geographic projections, shapes and math. ### [Transforms](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#transforms) -* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoIdentity) - scale, translate or clip planar geometry. * [d3.geoTransform](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransform) - define a custom geometry transform. +* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoIdentity) - scale, translate or clip planar geometry. + +### [Clipping](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#clipping) + +* [*preclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#preclip) - xxxxxxxxx +* [*postclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#postclip) - xxxxxxxxx +* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. +* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. +* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. ## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v2.0.0) From 671329df10b52c74458f7d6390547bd3d92a5bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:14:16 +0200 Subject: [PATCH 045/311] d3-hierarchy --- API.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/API.md b/API.md index 5f690fb374afab..c5fdead4cf977b 100644 --- a/API.md +++ b/API.md @@ -642,11 +642,13 @@ Layout algorithms for visualizing hierarchical data. * [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_ancestors) - generate an array of ancestors. * [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_descendants) - generate an array of descendants. * [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_leaves) - generate an array of leaves. +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_find) - xxxxxxxxx * [*node*.path](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_path) - generate the shortest path to another node. * [*node*.links](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_links) - generate an array of links. * [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sort) - sort all descendant siblings. * [*node*.count](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_count) - count the number of leaves. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sort) - sort all descendant siblings. +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_iterator) - xxxxxxxxx * [*node*.each](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_each) - breadth-first traversal. * [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachAfter) - post-order traversal. * [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachBefore) - pre-order traversal. From 282409330d9bfd6b2967add8b0cc369611d6977d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:15:39 +0200 Subject: [PATCH 046/311] d3-interpolate --- API.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/API.md b/API.md index c5fdead4cf977b..fc68ab3c494218 100644 --- a/API.md +++ b/API.md @@ -704,16 +704,19 @@ Layout algorithms for visualizing hierarchical data. Interpolate numbers, colors, strings, arrays, objects, whatever! * [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate) - interpolate arbitrary values. -* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateArray) - interpolate arrays of arbitrary values. -* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDate) - interpolate dates. * [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumber) - interpolate numbers. -* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumberArray) - interpolate arrays of numbers. -* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateObject) - interpolate arbitrary objects. * [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRound) - interpolate integers. * [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateString) - interpolate strings with embedded numbers. +* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDate) - interpolate dates. +* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateArray) - interpolate arrays of arbitrary values. +* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumberArray) - interpolate arrays of numbers. +* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateObject) - interpolate arbitrary objects. * [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. * [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. * [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateZoom) - zoom and pan between two views. +* [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_rho) - xxxxxxxxx +* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. +* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. * [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgb) - interpolate RGB colors. * [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. * [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. @@ -726,11 +729,9 @@ Interpolate numbers, colors, strings, arrays, objects, whatever! * [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. * [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_gamma) - apply gamma correction during interpolation. * [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHue) - interpolate a hue angle. -* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. * [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasis) - generate a B-spline through a set of values. * [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. * [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. -* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. ## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v2.0.0) From d9841e48b9fad64d11a0dedb6d3659dfa301e90b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:20:21 +0200 Subject: [PATCH 047/311] d3-path (unchanged), d3-polygon (unchanged), d3-quadtree --- API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index fc68ab3c494218..d14328ca1becc2 100644 --- a/API.md +++ b/API.md @@ -765,6 +765,8 @@ Two-dimensional recursive spatial subdivision. * [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree) - create a new, empty quadtree. * [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_x) - set the *x* accessor. * [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_y) - set the *y* accessor. +* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_extent) - extend the quadtree to cover an extent. +* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_cover) - extend the quadtree to cover a point. * [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_add) - add a datum to a quadtree. * [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_addAll) - add an array of data to a quadtree. * [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_remove) - remove a datum from a quadtree. @@ -776,8 +778,6 @@ Two-dimensional recursive spatial subdivision. * [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_find) - quickly find the closest datum in a quadtree. * [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visit) - selectively visit nodes in a quadtree. * [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. -* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_cover) - extend the quadtree to cover a point. -* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_extent) - extend the quadtree to cover an extent. ## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v2.2.0) From 989a71aeb272b73cc4d60ccc0791c0acbf0045dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:21:14 +0200 Subject: [PATCH 048/311] d3-random --- API.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/API.md b/API.md index d14328ca1becc2..91d4fbb4c38b3e 100644 --- a/API.md +++ b/API.md @@ -784,12 +784,24 @@ Two-dimensional recursive spatial subdivision. Generate random numbers from various distributions. * [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomUniform) - from a uniform distribution. +* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomInt) - xxxxxxxxx * [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomNormal) - from a normal distribution. * [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogNormal) - from a log-normal distribution. * [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBates) - from a Bates distribution. * [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomIrwinHall) - from an Irwin–Hall distribution. * [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomExponential) - from an exponential distribution. +* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPareto) - xxxxxxxxx +* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBernoulli) - xxxxxxxxx +* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGeometric) - xxxxxxxxx +* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBinomial) - xxxxxxxxx +* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGamma) - xxxxxxxxx +* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBeta) - xxxxxxxxx +* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomWeibull) - xxxxxxxxx +* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomCauchy) - xxxxxxxxx +* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogistic) - xxxxxxxxx +* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPoisson) - xxxxxxxxx * [*random*.source](https://github.com/d3/d3-random/blob/v2.2.0/README.md#random_source) - set the source of randomness. +* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLcg) - xxxxxxxxx ## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.2) From c86f1193be143f172f19d2b2c14ee689add9d469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:40:43 +0200 Subject: [PATCH 049/311] d3-scale --- API.md | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/API.md b/API.md index 91d4fbb4c38b3e..b57fe1da42e956 100644 --- a/API.md +++ b/API.md @@ -817,12 +817,13 @@ Map a continuous, quantitative domain to a continuous range. * [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_range) - set the output range. * [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_rangeRound) - set the output range and enable rounding. * [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_interpolate) - set the output interpolator. * [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_interpolate) - set the output interpolator. * [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_ticks) - compute representative values from the domain. * [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_tickFormat) - format ticks for human consumption. * [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_nice) - extend the domain to nice round numbers. * [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#tickFormat) - format ticks for human consumption. * [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleLinear) - create a quantitative linear scale. * [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scalePow) - create a quantitative power scale. * [*pow*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_pow) - compute the range value corresponding to a given domain value. @@ -852,7 +853,9 @@ Map a continuous, quantitative domain to a continuous range. * [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_nice) - extend the domain to nice round numbers. * [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_copy) - create a copy of this scale. * [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#identity) - create a quantitative identity scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#symlog_constant) - xxxxxxxxx +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleIdentity) - xxxxxxxxx +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleRadial) - xxxxxxxxx * [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleTime) - create a linear scale for time. * [*time*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_time) - compute the range value corresponding to a given domain value. * [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_invert) - compute the domain value corresponding to a given range value. @@ -866,30 +869,43 @@ Map a continuous, quantitative domain to a continuous range. * [*time*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_nice) - extend the domain to nice round times. * [*time*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_copy) - create a copy of this scale. * [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleUtc) - create a linear scale for UTC. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#tickFormat) - format ticks for human consumption. ### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. * [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_sequential) - xxxxxxxxx +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_domain) - xxxxxxxxx +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_clamp) - xxxxxxxxx * [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_range) - xxxxxxxxx +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_rangeRound) - xxxxxxxxx +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_copy) - xxxxxxxxx +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - xxxxxxxxx +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - xxxxxxxxx +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - xxxxxxxxx +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - xxxxxxxxx +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - xxxxxxxxx +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - xxxxxxxxx ### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. * [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_diverging) - xxxxxxxxx +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_domain) - xxxxxxxxx +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_clamp) - xxxxxxxxx * [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_range) - xxxxxxxxx +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_rangeRound) - xxxxxxxxx +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_copy) - xxxxxxxxx +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_unknown) - xxxxxxxxx +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - xxxxxxxxx +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - xxxxxxxxx +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - xxxxxxxxx +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - xxxxxxxxx ### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize-scales) @@ -900,9 +916,10 @@ Map a continuous, quantitative domain to a discrete range. * [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. * [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_domain) - set the input domain. * [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_range) - set the output range. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. * [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_ticks) - compute representative values from the domain. * [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_thresholds) - xxxxxxxxx * [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_copy) - create a copy of this scale. * [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. * [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantile) - compute the range value corresponding to a given domain value. From 10db903020c21839a3f1c337a9d2c0ecd0ae1f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:43:43 +0200 Subject: [PATCH 050/311] d3-selection --- API.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/API.md b/API.md index b57fe1da42e956..ec8c5a9484be37 100644 --- a/API.md +++ b/API.md @@ -984,6 +984,9 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectAll) - select multiple descendants for each selected element. * [*selection*.filter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_filter) - filter elements based on data. * [*selection*.merge](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_merge) - merge this selection with another. +* [*selection*.selectChild](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChild) - xxxxxxxxx +* [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChildren) - xxxxxxxxx +* [*selection*.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selection) - xxxxxxxxx * [d3.matcher](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#matcher) - test whether an element matches a selector. * [d3.selector](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selector) - select an element. * [d3.selectorAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectorAll) - select elements. @@ -1021,12 +1024,8 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.on](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_on) - add or remove event listeners. * [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_dispatch) - dispatch a custom event. -* [d3.event](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#event) - the current user event, during interaction. -* [d3.customEvent](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#customEvent) - temporarily define a custom event. -* [d3.mouse](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#mouse) - get the mouse position relative to a given container. -* [d3.touch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#touch) - get a touch position relative to a given container. -* [d3.touches](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#touches) - get the touch positions relative to a given container. -* [d3.clientPoint](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#clientPoint) - get a position relative to a given container. +* [d3.pointer](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointer) - xxxxxxxxx +* [d3.pointers](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointers) - xxxxxxxxx ### [Control Flow](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#control-flow) @@ -1036,6 +1035,7 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.nodes](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_nodes) - returns an array of all selected elements. * [*selection*.node](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_node) - returns the first (non-null) element. * [*selection*.size](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_size) - returns the count of elements. +* [*selection*[Symbol.iterator]](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_iterator) - xxxxxxxxx ### [Local Variables](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local-variables) From 6e8b6160540fd1e7bc8ae657965fa7acf74128f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:50:23 +0200 Subject: [PATCH 051/311] d3-shape --- API.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/API.md b/API.md index ec8c5a9484be37..e6efdc9ed42fa7 100644 --- a/API.md +++ b/API.md @@ -1118,24 +1118,24 @@ An area, defined by a bounding topline and baseline, as in an area chart. * [*area*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_curve) - set the curve interpolator. * [*area*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_context) - set the rendering context. * [*area*.lineX0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX1) - derive a line for the right edge of an area. * [*area*.lineY0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX1) - derive a line for the right edge of an area. * [*area*.lineY1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.radialArea](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea) - create a new radial area generator. -* [*radialArea*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_radialArea) - generate an area for the given dataset. -* [*radialArea*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_angle) - set the start and end angle accessors. -* [*radialArea*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_startAngle) - set the start angle accessor. -* [*radialArea*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_endAngle) - set the end angle accessor. -* [*radialArea*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_radius) - set the inner and outer radius accessors. -* [*radialArea*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_innerRadius) - set the inner radius accessor. -* [*radialArea*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_outerRadius) - set the outer radius accessor. -* [*radialArea*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_defined) - set the defined accessor. -* [*radialArea*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_curve) - set the curve interpolator. -* [*radialArea*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialArea_context) - set the rendering context. -* [*radialArea*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineStartAngle) - derive a line for the start edge of an area. -* [*radialArea*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineEndAngle) - derive a line for the end edge of an area. -* [*radialArea*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineInnerRadius) - derive a line for the inner edge of an area. -* [*radialArea*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineOuterRadius) - derive a line for the outer edge of an area. +* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial) - create a new radial area generator. +* [*areaRadial*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_areaRadial) - generate an area for the given dataset. +* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_angle) - set the start and end angle accessors. +* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_startAngle) - set the start angle accessor. +* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_endAngle) - set the end angle accessor. +* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_radius) - set the inner and outer radius accessors. +* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_innerRadius) - set the inner radius accessor. +* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_outerRadius) - set the outer radius accessor. +* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_defined) - set the defined accessor. +* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_curve) - set the curve interpolator. +* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_context) - set the rendering context. +* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. +* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. +* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. +* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. ### [Curves](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curves) @@ -1145,15 +1145,15 @@ Interpolate between points to produce a continuous shape. * [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisClosed) - a closed cubic basis spline. * [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisOpen) - a cubic basis spline. * [d3.curveBundle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#bundle_beta) - set the bundle tension *beta*. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBundle_beta) - set the bundle tension *beta*. * [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. * [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. * [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#cardinal_tension) - set the cardinal spline tension. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinal_tension) - set the cardinal spline tension. * [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. * [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. * [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#catmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. * [d3.curveLinear](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinear) - a polyline. * [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinearClosed) - a closed polyline. * [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. @@ -1181,8 +1181,8 @@ A smooth cubic Bézier curve from a source to a target. * [*link*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_y) - set the point *y*-accessor. * [*link*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_context) - set the rendering context. * [d3.linkRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial) - create a new radial link generator. -* [*radialLink*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialLink_angle) - set the point *angle* accessor. -* [*radialLink*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#radialLink_radius) - set the point *radius* accessor. +* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial_angle) - set the point *angle* accessor. +* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial_radius) - set the point *radius* accessor. ### [Symbols](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbols) @@ -1201,7 +1201,7 @@ A categorical shape encoding, as in a scatterplot. * [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolStar) - a pentagonal star (pentagram). * [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolTriangle) - an up-pointing triangle. * [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - xxxxxxxxx * [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolType_draw) - draw this symbol to the given context. ### [Stacks](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stacks) From 2169f39b87fdae34ab6874b973b691ccda80aec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:51:16 +0200 Subject: [PATCH 052/311] d3-time-format --- API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index e6efdc9ed42fa7..b8b110d6d8b1d0 100644 --- a/API.md +++ b/API.md @@ -1236,12 +1236,12 @@ Parse and format times, inspired by strptime and strftime. * [d3.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#utcParse) - alias for *locale*.utcParse on the default locale. * [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoFormat) - an ISO 8601 UTC formatter. * [d3.isoParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoParse) - an ISO 8601 UTC parser. -* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. -* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. * [*locale*.format](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_format) - create a time formatter. * [*locale*.parse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_parse) - create a time parser. * [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcFormat) - create a UTC formatter. * [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcParse) - create a UTC parser. +* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. +* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. ## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v2.0.0) From eb97db3a553e787e5de5a62403bf7001d7f46bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 12:58:20 +0200 Subject: [PATCH 053/311] d3-time (unchanged), d3-timer (unchanged), d3-transition --- API.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/API.md b/API.md index b8b110d6d8b1d0..ce955ebe68a271 100644 --- a/API.md +++ b/API.md @@ -1306,21 +1306,15 @@ Animated transitions for [selections](#selections). * [*selection*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_transition) - schedule a transition for the selected elements. * [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#interrupt) - interrupt the active transition for a given node. * [d3.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition) - schedule a transition on the root document element. * [*transition*.select](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_select) - schedule a transition on the selected elements. * [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selectAll) - schedule a transition on the selected elements. * [*transition*.filter](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_filter) - filter elements based on data. * [*transition*.merge](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_merge) - merge this transition with another. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selection) - returns a selection for this transition. * [*transition*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_call) - call a function with this transition. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_size) - returns the count of elements. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_each) - call a function for each element. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - add or remove transition event listeners. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - await the end of a transition. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selection) - returns a selection for this transition. +* [d3.active](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#active) - select the active transition for a given node. * [*transition*.attr](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attr) - tween the given attribute using the default interpolator. * [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. * [*transition*.style](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_style) - tween the given style property using the default interpolator. @@ -1332,8 +1326,15 @@ Animated transitions for [selections](#selections). * [*transition*.delay](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_delay) - specify per-element delay in milliseconds. * [*transition*.duration](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_duration) - specify per-element duration in milliseconds. * [*transition*.ease](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_ease) - specify the easing function. -* [d3.active](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#active) - select the active transition for a given node. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#interrupt) - interrupt the active transition for a given node. +* [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_easeVarying) - xxxxxxxxx +* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_end) - xxxxxxxxx +* [*transition*.on](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - await the end of a transition. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_each) - call a function for each element. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_call) - call a function with this transition. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_size) - returns the count of elements. ## [XXXVoronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) From 0fab3304d2ba381c3213336535fb5ecba2f15215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 13:01:09 +0200 Subject: [PATCH 054/311] remove d3-voronoi, add d3-delaunay --- API.md | 59 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/API.md b/API.md index ce955ebe68a271..7baa931e8a673e 100644 --- a/API.md +++ b/API.md @@ -6,10 +6,10 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work * [Axes](#axes-d3-axis) * [Brushes](#brushes-d3-brush) * [Chords](#chords-d3-chord) -* [XXXCollections](#collections-d3-collection) ([Objects](#objects), [Maps](#maps), [Sets](#sets), [Nests](#nests)) * [Colors](#colors-d3-color) * [Color Schemes](#color-schemes-d3-scale-chromatic) * [Contours](#contours-d3-contour) +* [Voronoi Diagrams](#voronoi-diagrams-d3-delaunay) * [Dispatches](#dispatches-d3-dispatch) * [Dragging](#dragging-d3-drag) * [Delimiter-Separated Values](#delimiter-separated-values-d3-dsv) @@ -31,7 +31,6 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work * [Time Intervals](#time-intervals-d3-time) * [Timers](#timers-d3-timer) * [Transitions](#transitions-d3-transition) -* [XXXVoronoi Diagrams](#voronoi-diagrams-d3-voronoi) * [Zooming](#zooming-d3-zoom) D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. @@ -320,6 +319,44 @@ Compute contour polygons using marching squares. * [*density*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - xxxxxxxxx * [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - xxxxxxxxx +## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v5.3.0) + +Compute the Voronoi diagram of a set of two-dimensional points. + +* [new Delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#new_Delaunay) - xxxxxxxxx +* [Delaunay.from](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_from) - xxxxxxxxx +* [*delaunay*.points](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_points) - xxxxxxxxx +* [*delaunay*.halfedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_halfedges) - xxxxxxxxx +* [*delaunay*.hull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hull) - xxxxxxxxx +* [*delaunay*.triangles](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_triangles) - xxxxxxxxx +* [*delaunay*.inedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_inedges) - xxxxxxxxx +* [*delaunay*.find](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_find) - xxxxxxxxx +* [*delaunay*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_neighbors) - xxxxxxxxx +* [*delaunay*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_render) - xxxxxxxxx +* [*delaunay*.renderHull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderHull) - xxxxxxxxx +* [*delaunay*.renderTriangle](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderTriangle) - xxxxxxxxx +* [*delaunay*.renderPoints](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderPoints) - xxxxxxxxx +* [*delaunay*.hullPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hullPolygon) - xxxxxxxxx +* [*delaunay*.trianglePolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygons) - xxxxxxxxx +* [*delaunay*.trianglePolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygon) - xxxxxxxxx +* [*delaunay*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_update) - xxxxxxxxx +* [*delaunay*.voronoi](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_voronoi) - xxxxxxxxx +* [*voronoi*.delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_delaunay) - xxxxxxxxx +* [*voronoi*.circumcenters](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_circumcenters) - xxxxxxxxx +* [*voronoi*.vectors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_vectors) - xxxxxxxxx +* [*voronoi*.xmin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmin) - xxxxxxxxx +* [*voronoi*.ymin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymin) - xxxxxxxxx +* [*voronoi*.xmax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmax) - xxxxxxxxx +* [*voronoi*.ymax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymax) - xxxxxxxxx +* [*voronoi*.contains](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_contains) - xxxxxxxxx +* [*voronoi*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_neighbors) - xxxxxxxxx +* [*voronoi*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_render) - xxxxxxxxx +* [*voronoi*.renderBounds](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderBounds) - xxxxxxxxx +* [*voronoi*.renderCell](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderCell) - xxxxxxxxx +* [*voronoi*.cellPolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygons) - xxxxxxxxx +* [*voronoi*.cellPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygon) - xxxxxxxxx +* [*voronoi*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_update) - xxxxxxxxx + ## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v2.0.0) Separate concerns using named callbacks. @@ -1336,24 +1373,6 @@ Animated transitions for [selections](#selections). * [*transition*.node](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_node) - returns the first (non-null) element. * [*transition*.size](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_size) - returns the count of elements. -## [XXXVoronoi Diagrams (d3-voronoi)](https://github.com/d3/d3-voronoi/tree/v1.1.4) - -Compute the XXXVoronoi diagram of a given set of points. - -* [d3.voronoi](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi) - create a new XXXVoronoi generator. -* [*voronoi*](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#_voronoi) - generate a new XXXVoronoi diagram for the given points. -* [*voronoi*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_polygons) - compute the XXXVoronoi polygons for the given points. -* [*voronoi*.triangles](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_triangles) - compute the Delaunay triangles for the given points. -* [*voronoi*.links](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_links) - compute the Delaunay links for the given points. -* [*voronoi*.x](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_x) - set the *x* accessor. -* [*voronoi*.y](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_y) - set the *y* accessor. -* [*voronoi*.extent](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_extent) - set the observed extent of points. -* [*voronoi*.size](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#voronoi_size) - set the observed extent of points. -* [*diagram*.polygons](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_polygons) - compute the polygons for this XXXVoronoi diagram. -* [*diagram*.triangles](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_triangles) - compute the triangles for this XXXVoronoi diagram. -* [*diagram*.links](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_links) - compute the links for this XXXVoronoi diagram. -* [*diagram*.find](https://github.com/d3/d3-voronoi/blob/v1.1.4/README.md#diagram_find) - find the closest point in this XXXVoronoi diagram. - ## [Zooming (d3-zoom)](https://github.com/d3/d3-zoom/tree/v2.0.0) Pan and zoom SVG, HTML or Canvas using mouse or touch input. From f0d76e1d97b10bfb1ec8b433d16ae32b647bfa8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 13:02:27 +0200 Subject: [PATCH 055/311] d3-zoom --- API.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/API.md b/API.md index 7baa931e8a673e..e6b9e8d2f1567d 100644 --- a/API.md +++ b/API.md @@ -1380,18 +1380,19 @@ Pan and zoom SVG, HTML or Canvas using mouse or touch input. * [d3.zoom](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom) - create a zoom behavior. * [*zoom*](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#_zoom) - apply the zoom behavior to the selected elements. * [*zoom*.transform](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_transform) - change the transform for the selected elements. -* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateTo) - translate the transform for the selected elements. * [*zoom*.translateBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateBy) - translate the transform for the selected elements. +* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateTo) - translate the transform for the selected elements. * [*zoom*.scaleBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleBy) - scale the transform for the selected elements. * [*zoom*.scaleTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleTo) - scale the transform for the selected elements. +* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_constrain) - override the transform constraint logic. * [*zoom*.filter](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_filter) - control which input events initiate zooming. * [*zoom*.touchable](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_touchable) - set the touch support detector. * [*zoom*.wheelDelta](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_wheelDelta) - override scaling for wheel events. -* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_clickDistance) - set the click distance threshold. * [*zoom*.extent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_extent) - set the extent of the viewport. * [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleExtent) - set the allowed scale range. * [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateExtent) - set the extent of the zoomable world. -* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_constrain) - override the transform constraint logic. +* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_clickDistance) - set the click distance threshold. +* [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_tapDistance) - xxxxxxxxx * [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_duration) - set the duration of zoom transitions. * [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_interpolate) - control the interpolation of zoom transitions. * [*zoom*.on](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_on) - listen for zoom events. From 97ccc386adde083fdd6fc1fcc9ae684ed1490eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 24 Aug 2020 15:09:27 +0200 Subject: [PATCH 056/311] document all API elements --- API.md | 437 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 216 insertions(+), 221 deletions(-) diff --git a/API.md b/API.md index e6b9e8d2f1567d..ea7097f7371254 100644 --- a/API.md +++ b/API.md @@ -43,45 +43,40 @@ Array manipulation, ordering, searching, summarizing, etc. Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.6.0/README.md#min) - compute the minimum value in an array. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#minIndex) - xxxxxxxxx -* [d3.max](https://github.com/d3/d3-array/blob/v2.6.0/README.md#max) - compute the maximum value in an array. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#maxIndex) - xxxxxxxxx -* [d3.extent](https://github.com/d3/d3-array/blob/v2.6.0/README.md#extent) - compute the minimum and maximum value in an array. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#sum) - compute the sum of an array of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.6.0/README.md#mean) - compute the arithmetic mean of an array of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.6.0/README.md#median) - compute the median of an array of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cumsum) - xxxxxxxxx -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantile) - compute a quantile for a sorted array of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantileSorted) - xxxxxxxxx -* [d3.variance](https://github.com/d3/d3-array/blob/v2.6.0/README.md#variance) - compute the variance of an array of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.6.0/README.md#deviation) - compute the standard deviation of an array of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#fsum) - xxxxxxxxx -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder) - xxxxxxxxx -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_add) - xxxxxxxxx -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_valueOf) - xxxxxxxxx +* [d3.min](https://github.com/d3/d3-array/blob/v2.6.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.6.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.6.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.6.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.6.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.6.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.6.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. ### [Search](https://github.com/d3/d3-array/blob/v2.6.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - xxxxxxxxx -* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - xxxxxxxxx -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - xxxxxxxxx -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - xxxxxxxxx -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - xxxxxxxxx -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - xxxxxxxxx -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - xxxxxxxxx -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - xxxxxxxxx +* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. * [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectLeft) - binary search for a value in a sorted array. * [d3.bisect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisect) - binary search for a value in a sorted array. * [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectRight) - binary search for a value in a sorted array. * [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. * [*bisector*.left](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_left) - bisectLeft, with the given comparator. * [*bisector*.right](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_center) - xxxxxxxxx -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quickselect) - xxxxxxxxx +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quickselect) - reorder an array of numbers. * [d3.ascending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ascending) - compute the natural order of two values. * [d3.descending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#descending) - compute the natural order of two values. @@ -89,18 +84,18 @@ Methods for searching arrays for a specific element. Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.6.0/README.md#group) - xxxxxxxxx -* [d3.groups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#groups) - xxxxxxxxx -* [d3.index](https://github.com/d3/d3-array/blob/v2.6.0/README.md#index) - xxxxxxxxx -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.6.0/README.md#indexes) - xxxxxxxxx -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollup) - xxxxxxxxx -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollups) - xxxxxxxxx -* [d3.count](https://github.com/d3/d3-array/blob/v2.6.0/README.md#count) - xxxxxxxxx -* [d3.cross](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cross) - compute the Cartesian product of two arrays. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.6.0/README.md#merge) - merge multiple arrays into one array. +* [d3.group](https://github.com/d3/d3-array/blob/v2.6.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.6.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.6.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.6.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.6.0/README.md#merge) - merge multiple iterables into one array. * [d3.pairs](https://github.com/d3/d3-array/blob/v2.6.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.6.0/README.md#permute) - reorder an array of elements according to an array of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.6.0/README.md#shuffle) - randomize the order of an array. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.6.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.6.0/README.md#shuffle) - randomize the order of an iterable. * [d3.ticks](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ticks) - generate representative values from a numeric interval. * [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickIncrement) - generate representative values from a numeric interval. * [d3.tickStep](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickStep) - generate representative values from a numeric interval. @@ -112,8 +107,8 @@ Methods for transforming arrays and for generating new arrays. Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin) - create a new histogram generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_bin) - compute the histogram for the given array of samples. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_bin) - bins a given array of samples. * [*bin*.value](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_value)- specify a value accessor for each sample. * [*bin*.domain](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_domain) - specify the interval of observable values. * [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_thresholds) - specify how values are divided into bins. @@ -166,28 +161,28 @@ Select a one- or two-dimensional region using the mouse or touch. * [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortGroups) - define the group order. * [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortSubgroups) - define the source and target order within groups. * [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortChords) - define the chord order across groups. -* [d3.chordDirected](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordDirected) - xxxxxxxxx -* [d3.chordTranspose](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordTranspose) - xxxxxxxxx +* [d3.chordDirected](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordDirected) - create a directed chord generator. +* [d3.chordTranspose](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordTranspose) - create a transposed chord generator. * [d3.ribbon](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon) - create a ribbon shape generator. * [*ribbon*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_ribbon) - generate a ribbon shape. * [*ribbon*.source](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_source) - set the source accessor. * [*ribbon*.target](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_target) - set the target accessor. -* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_radius) - set the ribbon source or target radius. -* [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_sourceRadius) - xxxxxxxxx -* [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_targetRadius) - xxxxxxxxx +* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_radius) - set the ribbon source and target radius. +* [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_sourceRadius) - set the ribbon source radius. +* [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_targetRadius) - set the ribbon target radius. * [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_startAngle) - set the ribbon source or target start angle. * [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_endAngle) - set the ribbon source or target end angle. -* [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_padAngle) - xxxxxxxxx +* [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_padAngle) - set the pad angle accessor. * [*ribbon*.context](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_context) - set the render context. -* [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow) - xxxxxxxxx -* [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow_headRadius) - xxxxxxxxx +* [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow) - create an arrow ribbon generator. +* [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow_headRadius) - set the arrowhead radius accessor. ## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v2.0.0) Color manipulation and color space conversion. * [d3.color](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color) - parse the given CSS color specifier. -* [*color*.opacity](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_opacity) - xxxxxxxxx +* [*color*.opacity](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_opacity) - the color’s opacity. * [*color*.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_rgb) - compute the RGB equivalent of this color. * [*color*.copy](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_copy) - return a copy of this color. * [*color*.brighter](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_brighter) - create a brighter copy of this color. @@ -211,37 +206,37 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. ### Categorical -* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeCategory10) - -* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeAccent) - -* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeDark2) - -* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePaired) - -* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel1) - -* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel2) - -* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet1) - -* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet2) - -* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet3) - -* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeTableau10) - +* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeCategory10) - an array of ten categorical colors. +* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeAccent) - an array of eight categorical colors. +* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeDark2) - an array of eight categorical colors. +* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePaired) - an array of twelve categorical colors. +* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel1) - an array of nine categorical colors. +* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel2) - an array of eight categorical colors. +* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet1) - an array of nine categorical colors. +* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet2) - an array of eight categorical colors. +* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet3) - an array of twelve categorical colors. +* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeTableau10) - an array of ten categorical colors. ### Diverging -* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBrBG) - -* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePiYG) - -* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePRGn) - -* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuOr) - -* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdBu) - -* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdGy) - -* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlBu) - -* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlGn) - -* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSpectral) - -* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBrBG) - -* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePiYG) - -* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePRGn) - -* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuOr) - -* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdBu) - -* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdGy) - -* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlBu) - -* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlGn) - -* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSpectral) - +* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBrBG) - ColorBrewer BrBG interpolator. +* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePiYG) - ColorBrewer PiYG interpolator. +* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePRGn) - ColorBrewer PRGn interpolator. +* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuOr) - ColorBrewer PuOr interpolator. +* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdBu) - ColorBrewer RdBu interpolator. +* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdGy) - ColorBrewer RdGy interpolator. +* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlBu) - ColorBrewer RdYlBu interpolator. +* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlGn) - ColorBrewer RdYlGn interpolator. +* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSpectral) - ColorBrewer spectral interpolator. +* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBrBG) - ColorBrewer BrBG scheme. +* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePiYG) - ColorBrewer PiYG scheme. +* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePRGn) - ColorBrewer PRGn scheme. +* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuOr) - ColorBrewer PuOr scheme. +* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdBu) - ColorBrewer RdBu scheme. +* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdGy) - ColorBrewer RdGy scheme. +* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlBu) - ColorBrewer RdYlBu scheme. +* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlGn) - ColorBrewer RdYlGn scheme. +* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSpectral) - ColorBrewer spectral scheme. ### Sequential (Single Hue) @@ -260,39 +255,39 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. ### Sequential (Multi-Hue) -* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuGn) - -* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuPu) - -* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCividis) - -* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCool) - -* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCubehelixDefault) - -* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGnBu) - -* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateInferno) - -* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateMagma) - -* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOrRd) - -* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePlasma) - -* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBu) - -* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBuGn) - -* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuRd) - -* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdPu) - -* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateTurbo) - -* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateViridis) - -* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateWarm) - -* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGn) - -* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGnBu) - -* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrBr) - -* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrRd) - -* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuGn) - -* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuPu) - -* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGnBu) - -* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOrRd) - -* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBu) - -* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBuGn) - -* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuRd) - -* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdPu) - -* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGn) - -* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGnBu) - -* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrBr) - -* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrRd) - +* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuGn) - ColorBrewer BuGn interpolator. +* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuPu) - ColorBrewer BuPu interpolator. +* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCividis) - cividis interpolator. +* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCool) - cool interpolator. +* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCubehelixDefault) - cubehelix interpolator. +* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGnBu) - ColorBrewer GnBu interpolator. +* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateInferno) - inferno interpolator. +* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateMagma) - magma interpolator. +* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOrRd) - ColorBrewer OrRd interpolator. +* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePlasma) - plasma interpolator. +* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBu) - ColorBrewer PuBu interpolator. +* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBuGn) - ColorBrewer PuBuGn interpolator. +* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuRd) - ColorBrewer PuRd interpolator. +* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdPu) - ColorBrewer RdPu interpolator. +* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateTurbo) - turbo interpolator. +* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateViridis) - viridis interpolator. +* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateWarm) - warm interpolator. +* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGn) - ColorBrewer YlGn interpolator. +* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGnBu) - ColorBrewer YlGnBu interpolator. +* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrBr) - ColorBrewer YlOrBr interpolator. +* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrRd) - ColorBrewer YlOrRd interpolator. +* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuGn) - ColorBrewer BuGn scheme. +* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuPu) - ColorBrewer BuPu scheme. +* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGnBu) - ColorBrewer GnBu scheme. +* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOrRd) - ColorBrewer OrRd scheme. +* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBu) - ColorBrewer PuBu scheme. +* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBuGn) - ColorBrewer PuBuGn scheme. +* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuRd) - ColorBrewer PuRd scheme. +* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdPu) - ColorBrewer RdPu scheme. +* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGn) - ColorBrewer YlGn scheme. +* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGnBu) - ColorBrewer YlGnBu scheme. +* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrBr) - ColorBrewer YlOrBr scheme. +* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrRd) - ColorBrewer YlOrRd scheme. ### Cyclical @@ -305,57 +300,57 @@ Compute contour polygons using marching squares. * [d3.contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours) - create a new contour generator. * [*contours*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_contours) - compute the contours for a given grid of values. -* [*contours*.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - xxxxxxxxx -* [*contours*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - xxxxxxxxx -* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - xxxxxxxxx -* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - xxxxxxxxx +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - compute a contour for a given value. +* [*contours*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - set the size of a contour generator. +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - set whether or not the generated contours are smoothed. +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - set the thresholds of a contour generator. * [d3.contourDensity](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contourDensity) - create a new density estimator. * [*density*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_density) - estimate the density of a given array of samples. -* [*density*.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - xxxxxxxxx -* [*density*.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - xxxxxxxxx -* [*density*.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - xxxxxxxxx -* [*density*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_size) - xxxxxxxxx -* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - xxxxxxxxx -* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - xxxxxxxxx -* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - xxxxxxxxx +* [*density*.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - set the *x* accessor of the density estimator. +* [*density*.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - set the *y* accessor of the density estimator. +* [*density*.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - set the *weight* accessor of the density estimator. +* [*density*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_size) - set the size of the density estimator. +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - set the cell size of the density estimator. +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - set the thresholds of the density estimator. +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - set the bandwidth of the density estimator. ## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v5.3.0) Compute the Voronoi diagram of a set of two-dimensional points. -* [new Delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#new_Delaunay) - xxxxxxxxx -* [Delaunay.from](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_from) - xxxxxxxxx -* [*delaunay*.points](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_points) - xxxxxxxxx -* [*delaunay*.halfedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_halfedges) - xxxxxxxxx -* [*delaunay*.hull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hull) - xxxxxxxxx -* [*delaunay*.triangles](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_triangles) - xxxxxxxxx -* [*delaunay*.inedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_inedges) - xxxxxxxxx -* [*delaunay*.find](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_find) - xxxxxxxxx -* [*delaunay*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_neighbors) - xxxxxxxxx -* [*delaunay*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_render) - xxxxxxxxx -* [*delaunay*.renderHull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderHull) - xxxxxxxxx -* [*delaunay*.renderTriangle](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderTriangle) - xxxxxxxxx -* [*delaunay*.renderPoints](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderPoints) - xxxxxxxxx -* [*delaunay*.hullPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hullPolygon) - xxxxxxxxx -* [*delaunay*.trianglePolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygons) - xxxxxxxxx -* [*delaunay*.trianglePolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygon) - xxxxxxxxx -* [*delaunay*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_update) - xxxxxxxxx -* [*delaunay*.voronoi](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_voronoi) - xxxxxxxxx -* [*voronoi*.delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_delaunay) - xxxxxxxxx -* [*voronoi*.circumcenters](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_circumcenters) - xxxxxxxxx -* [*voronoi*.vectors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_vectors) - xxxxxxxxx -* [*voronoi*.xmin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmin) - xxxxxxxxx -* [*voronoi*.ymin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymin) - xxxxxxxxx -* [*voronoi*.xmax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmax) - xxxxxxxxx -* [*voronoi*.ymax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymax) - xxxxxxxxx -* [*voronoi*.contains](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_contains) - xxxxxxxxx -* [*voronoi*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_neighbors) - xxxxxxxxx -* [*voronoi*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_render) - xxxxxxxxx -* [*voronoi*.renderBounds](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderBounds) - xxxxxxxxx -* [*voronoi*.renderCell](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderCell) - xxxxxxxxx -* [*voronoi*.cellPolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygons) - xxxxxxxxx -* [*voronoi*.cellPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygon) - xxxxxxxxx -* [*voronoi*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_update) - xxxxxxxxx +* [new Delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#new_Delaunay) - create a delaunay triangulation for an array of point coordinates. +* [Delaunay.from](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_from) - create a delaunay triangulation for an iterable of points. +* [*delaunay*.points](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_points) - the coordinates of the points. +* [*delaunay*.halfedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_halfedges) - the delaunay halfedges. +* [*delaunay*.hull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hull) - the convex hull as point indices. +* [*delaunay*.triangles](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_triangles) - the delaunay triangles. +* [*delaunay*.inedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_inedges) - the delaunay inedges +* [*delaunay*.find](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_find) - find the closest point in the delaunay triangulation. +* [*delaunay*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_neighbors) - the neighbors of a point in the delaunay triangulation. +* [*delaunay*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_render) - render the edges of the delaunay triangulation. +* [*delaunay*.renderHull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderHull) - render the convex hull. +* [*delaunay*.renderTriangle](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderTriangle) - render a triangle. +* [*delaunay*.renderPoints](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderPoints) - render the points. +* [*delaunay*.hullPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hullPolygon) - the closed convex hull as point coordinates. +* [*delaunay*.trianglePolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygons) - iterate over all the triangles as polygons. +* [*delaunay*.trianglePolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygon) - return a triangle as a polygon. +* [*delaunay*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_update) - update a delaunay triangulation in place. +* [*delaunay*.voronoi](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_voronoi) - compute the voronoi diagram associated with a delaunay triangulation. +* [*voronoi*.delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_delaunay) - the voronoi diagram’s source delaunay triangulation. +* [*voronoi*.circumcenters](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_circumcenters) - the triangles’ circumcenters. +* [*voronoi*.vectors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_vectors) - directions for the outer (infinite) cells of the voronoi diagram. +* [*voronoi*.xmin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmin) - set the *xmin* bound of the extent. +* [*voronoi*.ymin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymin) - set the *ymin* bound of the extent. +* [*voronoi*.xmax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmax) - set the *xmax* bound of the extent. +* [*voronoi*.ymax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymax) - set the *ymax* bound of the extent. +* [*voronoi*.contains](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_contains) - test whether a point is inside a voronoi cell. +* [*voronoi*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_neighbors) - the neighbors of a point in the voronoi diagram. +* [*voronoi*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_render) - render the mesh of voronoi cells. +* [*voronoi*.renderBounds](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderBounds) - render the extent. +* [*voronoi*.renderCell](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderCell) - render a voronoi cell. +* [*voronoi*.cellPolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygons) - iterate over all the cells as polygons. +* [*voronoi*.cellPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygon) - return a cell as a polygon. +* [*voronoi*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_update) - update a voronoi diagram in place. ## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v2.0.0) @@ -419,7 +414,7 @@ Easing functions for smooth animation. * [d3.easeLinear](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeLinear) - linear easing; the identity function. * [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyIn) - polynomial easing; raises time to the given power. * [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyOut) - reverse polynomial easing. -* [d3.easePoly](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePoly) - xxxxxxxxx +* [d3.easePoly](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePoly) - an alias for easePolyInOut. * [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyInOut) - symmetric polynomial easing. * [*poly*.exponent](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#poly_exponent) - specify the polynomial exponent. * [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadIn) - quadratic easing; squares time. @@ -466,13 +461,13 @@ Convenience methods on top of the Fetch API. * [d3.buffer](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#buffer) - get a file as an array buffer. * [d3.csv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#csv) - get a comma-separated values (CSV) file. * [d3.dsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#dsv) - get a delimiter-separated values (CSV) file. -* [d3.html](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#html) - xxxxxxxxx +* [d3.html](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#html) - get an HTML file. * [d3.image](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#image) - get an image. * [d3.json](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#json) - get a JSON file. -* [d3.svg](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#svg) - xxxxxxxxx +* [d3.svg](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#svg) - get an SVG file. * [d3.text](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#text) - get a plain text file. * [d3.tsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#tsv) - get a tab-separated values (TSV) file. -* [d3.xml](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#xml) - xxxxxxxxx +* [d3.xml](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#xml) - get an XML file. ## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v2.1.1) @@ -490,14 +485,14 @@ Force-directed graph layout using velocity Verlet integration. * [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_velocityDecay) - set the velocity decay rate. * [*simulation*.force](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_force) - add or remove a force. * [*simulation*.find](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_find) - find the closest node to the given position. -* [*simulation*.randomSource](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_randomSource) - xxxxxxxxx +* [*simulation*.randomSource](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_randomSource) - set the simulation’s random source. * [*simulation*.on](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_on) - add or remove an event listener. * [*force*](https://github.com/d3/d3-force/blob/v2.1.1/README.md#_force) - apply the force. * [*force*.initialize](https://github.com/d3/d3-force/blob/v2.1.1/README.md#force_initialize) - initialize the force with the given nodes. * [d3.forceCenter](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCenter) - create a centering force. * [*center*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_x) - set the center *x*-coordinate. * [*center*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_y) - set the center *y*-coordinate. -* [*center*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_strength) - xxxxxxxxx +* [*center*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_strength) - set the strength of the centering force. * [d3.forceCollide](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCollide) - create a circle collision force. * [*collide*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_radius) - set the circle radius. * [*collide*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_strength) - set the collision resolution strength. @@ -534,7 +529,7 @@ Format numbers for human consumption. * [*locale*.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_format) - create a number format. * [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_formatPrefix) - create a SI-prefix number format. * [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatSpecifier) - parse a number format specifier. -* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#FormatSpecifier) - xxxxxxxxx +* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#FormatSpecifier) - augments a number format specifier object. * [d3.precisionFixed](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionFixed) - compute decimal precision for fixed-point notation. * [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. * [d3.precisionRound](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionRound) - compute significant digits for rounded notation. @@ -562,8 +557,8 @@ Geographic projections, shapes and math. * [*projection*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_projection) - project the specified point from the sphere to the plane. * [*projection*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. * [*projection*.stream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_stream) - wrap the specified stream to project geometry. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_preclip) - xxxxxxxxx -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_postclip) - xxxxxxxxx +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_preclip) - set the projection’s spherical clipping function. +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_postclip) - set the projection’s cartesian clipping function. * [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipAngle) - set the radius of the clip circle. * [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. * [*projection*.scale](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_scale) - set the scale factor. @@ -589,7 +584,7 @@ Geographic projections, shapes and math. * [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographic) - the azimuthal stereographic projection. * [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. * [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarth) - the Equal Earth projection. -* [d3.geoEqualEarthRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarthRaw) - xxxxxxxxx +* [d3.geoEqualEarthRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarthRaw) - the raw Equal Earth projection. * [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. * [*conic*.parallels](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#conic_parallels) - set the two standard parallels. * [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbers) - the Albers equal-area conic projection. @@ -605,8 +600,8 @@ Geographic projections, shapes and math. * [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercatorRaw) - the raw Mercator projection. * [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. * [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. -* [d3.geoNaturalEarth1](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1) - xxxxxxxxx -* [d3.geoNaturalEarth1Raw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1Raw) - xxxxxxxxx +* [d3.geoNaturalEarth1](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1) - the Equal Earth projection, version 1. +* [d3.geoNaturalEarth1Raw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1Raw) - the raw Equal Earth projection, version 1 ### [Raw projections](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#raw-projections) @@ -665,8 +660,8 @@ Geographic projections, shapes and math. ### [Clipping](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#clipping) -* [*preclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#preclip) - xxxxxxxxx -* [*postclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#postclip) - xxxxxxxxx +* [*preclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#preclip) - pre-clipping in geographic coordinates. +* [*postclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#postclip) - post-clipping in planar coordinates. * [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. * [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. * [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. @@ -679,13 +674,13 @@ Layout algorithms for visualizing hierarchical data. * [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_ancestors) - generate an array of ancestors. * [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_descendants) - generate an array of descendants. * [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_leaves) - generate an array of leaves. -* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_find) - xxxxxxxxx +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_find) - find a node in the hierarchy. * [*node*.path](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_path) - generate the shortest path to another node. * [*node*.links](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_links) - generate an array of links. * [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sum) - evaluate and aggregate quantitative values. * [*node*.count](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_count) - count the number of leaves. * [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sort) - sort all descendant siblings. -* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_iterator) - xxxxxxxxx +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_iterator) - iterate on a hierarchy. * [*node*.each](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_each) - breadth-first traversal. * [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachAfter) - post-order traversal. * [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachBefore) - pre-order traversal. @@ -751,7 +746,7 @@ Interpolate numbers, colors, strings, arrays, objects, whatever! * [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. * [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. * [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateZoom) - zoom and pan between two views. -* [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_rho) - xxxxxxxxx +* [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_rho) - set the curvature *rho* of the zoom interpolator. * [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. * [d3.quantize](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. * [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgb) - interpolate RGB colors. @@ -821,24 +816,24 @@ Two-dimensional recursive spatial subdivision. Generate random numbers from various distributions. * [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomUniform) - from a uniform distribution. -* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomInt) - xxxxxxxxx +* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomInt) - from a uniform integer distribution. * [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomNormal) - from a normal distribution. * [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogNormal) - from a log-normal distribution. * [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBates) - from a Bates distribution. * [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomIrwinHall) - from an Irwin–Hall distribution. * [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomExponential) - from an exponential distribution. -* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPareto) - xxxxxxxxx -* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBernoulli) - xxxxxxxxx -* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGeometric) - xxxxxxxxx -* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBinomial) - xxxxxxxxx -* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGamma) - xxxxxxxxx -* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBeta) - xxxxxxxxx -* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomWeibull) - xxxxxxxxx -* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomCauchy) - xxxxxxxxx -* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogistic) - xxxxxxxxx -* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPoisson) - xxxxxxxxx +* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPareto) - from a Pareto distribution. +* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBernoulli) - from a Bernoulli distribution. +* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGeometric) - from a geometric distribution. +* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBinomial) - from a binomial distribution. +* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGamma) - from a gamma distribution. +* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBeta) - from a beta distribution. +* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomWeibull) - from a Weibull, Gumbel or Fréchet distribution. +* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomCauchy) - from a Cauchy distribution. +* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogistic) - from a logistic distribution. +* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPoisson) - from a Poisson distribution. * [*random*.source](https://github.com/d3/d3-random/blob/v2.2.0/README.md#random_source) - set the source of randomness. -* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLcg) - xxxxxxxxx +* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLcg) - creates a seeded pseudo-random number generator. ## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.2) @@ -890,9 +885,9 @@ Map a continuous, quantitative domain to a continuous range. * [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_nice) - extend the domain to nice round numbers. * [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_copy) - create a copy of this scale. * [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#symlog_constant) - xxxxxxxxx -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleIdentity) - xxxxxxxxx -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleRadial) - xxxxxxxxx +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleRadial) - creates a radial scale. * [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleTime) - create a linear scale for time. * [*time*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_time) - compute the range value corresponding to a given domain value. * [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_invert) - compute the domain value corresponding to a given range value. @@ -912,37 +907,37 @@ Map a continuous, quantitative domain to a continuous range. Map a continuous, quantitative domain to a continuous, fixed interpolator. * [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_sequential) - xxxxxxxxx -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_domain) - xxxxxxxxx -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_clamp) - xxxxxxxxx +* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_clamp) - enable clamping to the domain. * [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_range) - xxxxxxxxx -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_rangeRound) - xxxxxxxxx -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_copy) - xxxxxxxxx -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - xxxxxxxxx -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - xxxxxxxxx -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - xxxxxxxxx -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - xxxxxxxxx -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - xxxxxxxxx -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - xxxxxxxxx +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. ### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. * [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_diverging) - xxxxxxxxx -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_domain) - xxxxxxxxx -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_clamp) - xxxxxxxxx +* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_clamp) - enable clamping to the domain or range. * [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_range) - xxxxxxxxx -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_rangeRound) - xxxxxxxxx -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_copy) - xxxxxxxxx -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_unknown) - xxxxxxxxx -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - xxxxxxxxx -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - xxxxxxxxx -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - xxxxxxxxx -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - xxxxxxxxx +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. ### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize-scales) @@ -956,7 +951,7 @@ Map a continuous, quantitative domain to a discrete range. * [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_ticks) - compute representative values from the domain. * [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_tickFormat) - format ticks for human consumption. * [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_thresholds) - xxxxxxxxx +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. * [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_copy) - create a copy of this scale. * [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. * [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantile) - compute the range value corresponding to a given domain value. @@ -1021,9 +1016,9 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectAll) - select multiple descendants for each selected element. * [*selection*.filter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_filter) - filter elements based on data. * [*selection*.merge](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_merge) - merge this selection with another. -* [*selection*.selectChild](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChild) - xxxxxxxxx -* [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChildren) - xxxxxxxxx -* [*selection*.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selection) - xxxxxxxxx +* [*selection*.selectChild](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChild) - select a child element for each selected element. +* [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChildren) - select the children elements for each selected element. +* [*selection*.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selection) - return the selection. * [d3.matcher](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#matcher) - test whether an element matches a selector. * [d3.selector](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selector) - select an element. * [d3.selectorAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectorAll) - select elements. @@ -1061,8 +1056,8 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.on](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_on) - add or remove event listeners. * [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_dispatch) - dispatch a custom event. -* [d3.pointer](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointer) - xxxxxxxxx -* [d3.pointers](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointers) - xxxxxxxxx +* [d3.pointer](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointer) - get the pointer’s position of an event. +* [d3.pointers](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointers) - get the pointers’ positions of an event. ### [Control Flow](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#control-flow) @@ -1072,7 +1067,7 @@ Transform the DOM by selecting elements and joining to data. * [*selection*.nodes](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_nodes) - returns an array of all selected elements. * [*selection*.node](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_node) - returns the first (non-null) element. * [*selection*.size](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_size) - returns the count of elements. -* [*selection*[Symbol.iterator]](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_iterator) - xxxxxxxxx +* [*selection*[Symbol.iterator]](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_iterator) - iterate over the selection’s nodes. ### [Local Variables](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local-variables) @@ -1238,7 +1233,7 @@ A categorical shape encoding, as in a scatterplot. * [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolStar) - a pentagonal star (pentagram). * [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolTriangle) - an up-pointing triangle. * [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - xxxxxxxxx +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. * [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolType_draw) - draw this symbol to the given context. ### [Stacks](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stacks) @@ -1363,8 +1358,8 @@ Animated transitions for [selections](#selections). * [*transition*.delay](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_delay) - specify per-element delay in milliseconds. * [*transition*.duration](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_duration) - specify per-element duration in milliseconds. * [*transition*.ease](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_ease) - specify the easing function. -* [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_easeVarying) - xxxxxxxxx -* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_end) - xxxxxxxxx +* [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_easeVarying) - specify an easing function factory. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_end) - a promise that resolves when a transition ends. * [*transition*.on](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - await the end of a transition. * [*transition*.each](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_each) - call a function for each element. * [*transition*.call](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_call) - call a function with this transition. @@ -1392,7 +1387,7 @@ Pan and zoom SVG, HTML or Canvas using mouse or touch input. * [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleExtent) - set the allowed scale range. * [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateExtent) - set the extent of the zoomable world. * [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_clickDistance) - set the click distance threshold. -* [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_tapDistance) - xxxxxxxxx +* [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_tapDistance) - set the tap distance threshold. * [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_duration) - set the duration of zoom transitions. * [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_interpolate) - control the interpolation of zoom transitions. * [*zoom*.on](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_on) - listen for zoom events. From 4933326394da4fba5a936addb05b5122f7ff82dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 25 Aug 2020 11:00:02 +0200 Subject: [PATCH 057/311] Use the migration guide's summary as CHANGES.md --- CHANGES.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 64c75955e17860..d470e1665af02d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,9 +1,57 @@ -# Changes in D3 5.0 +# Changes in D3 6.0 -[Released March 22, 2018.](https://github.com/d3/d3/releases/tag/v5.0.0) +[Released DATE TK.](https://github.com/d3/d3/releases/tag/v6.0.0) *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* +D3 6.0 introduces several non-backwards-compatible changes. + +**Adoption of ES2015** + +* *All* the D3 modules have now adopted ES2015. Developers who need to maintain compatibility with older browsers will use transpilation. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#es2015)] + +**d3-selection** has a new event manager: + +* d3.event ⇨ (event) passed as the first argument to all listeners [[details](https://observablehq.com/d/f91cccf0cad5e9cb#events)] +* d3.mouse, d3.touch, d3.touches, d3.clientPoint ⇨ d3.pointer [[details](https://observablehq.com/d/f91cccf0cad5e9cb#pointer)] + +**d3-brush**, **d3-drag** and **d3-zoom** also use the new event manager: + +* *brush*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_brush)] +* *drag*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_drag)] +* *zoom*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_zoom)] + +**d3-voronoi** is deprecated, and replaced by [d3-delaunay](https://github.com/d3/d3-delaunay): + +* d3.voronoi ⇨ d3.Delaunay [[details](https://observablehq.com/d/f91cccf0cad5e9cb#delaunay)] + +**d3-collection** is deprecated, and its methods are replaced: + +* d3.nest ⇨ d3.group and d3.rollup (from d3-array) [[details](https://observablehq.com/d/f91cccf0cad5e9cb#group)] +* d3.map ⇨ Map [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.set ⇨ Set [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.keys ⇨ Object.keys [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.values ⇨ Object.values [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.entries ⇨ Object.entries [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] + +**d3-array** has renamed two methods: +* d3.histogram ⇨ d3.bin [[details](https://observablehq.com/d/f91cccf0cad5e9cb#bin)] +* d3.scan ⇨ d3.leastIndex [[details](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex)] + +**d3-interpolate** has a breaking change in an ancillary method: +* d3.interpolateTransformCss is now stricter in its inputs. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss)] + +**d3-format** changes its minus sign: +* the default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] + + +……… + + +# Changes in D3 5.0 + +[Released March 22, 2018.](https://github.com/d3/d3/releases/tag/v5.0.0) + D3 5.0 introduces only a few non-backwards-compatible changes. D3 now uses [Promises](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Using_promises) instead of asynchronous callbacks to load data. Promises simplify the structure of asynchronous code, especially in modern browsers that support [async and await](https://javascript.info/async-await). (See this [introduction to promises](https://observablehq.com/@observablehq/introduction-to-promises) on [Observable](https://observablehq.com).) For example, to load a CSV file in v4, you might say: From de649dd6a8455d9fe99c369a6390819ef5e644aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 25 Aug 2020 14:43:28 +0200 Subject: [PATCH 058/311] CHANGES: bower support dropped --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 64c75955e17860..6138a5a0f71c5d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,8 @@ +**bower** + +Support for the [bower](https://github.com/mbostock-bower/d3-bower) package manager has been dropped; use [unpkg](https://unpkg.com/d3) or [cdnjs](https://cdnjs.com/libraries/d3). + + # Changes in D3 5.0 [Released March 22, 2018.](https://github.com/d3/d3/releases/tag/v5.0.0) From d9cb073b859428efc2c729731a64a523c94c5c5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 25 Aug 2020 17:47:58 +0200 Subject: [PATCH 059/311] Update CHANGES.md Co-authored-by: Curran Kelleher --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index d470e1665af02d..c917220b97b06e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -42,7 +42,7 @@ D3 6.0 introduces several non-backwards-compatible changes. * d3.interpolateTransformCss is now stricter in its inputs. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss)] **d3-format** changes its minus sign: -* the default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] +* The default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] ……… From 8feaae56117e0e591360bd40b623f2dea2733faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 26 Aug 2020 23:29:08 +0200 Subject: [PATCH 060/311] upgrade d3 dependencies --- yarn.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7df1f42d9e1820..32d73c54c8b327 100644 --- a/yarn.lock +++ b/yarn.lock @@ -101,7 +101,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -"d3-array@1.2.0 - 2", d3-array@2, d3-array@^2.5: +"d3-array@1.2.0 - 2", d3-array@2, d3-array@>=2.5: version "2.6.0" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.6.0.tgz#b8df0c695eab26e2b2fd4ffe2d84bd703f8d0faf" integrity sha512-1TgzIGb6hrHKSCGccdL209Ibk41HCeyv5znFEvJfBsBGhD3qpoHt/2W2ECpyLxpG1k7aNJz0BYrmLpVs9hIGNQ== @@ -112,9 +112,9 @@ d3-axis@2: integrity sha512-9nzB0uePtb+u9+dWir+HTuEAKJOEUYJoEwbJPsZ1B4K3iZUgzJcSENQ05Nj7S4CIfbZZ8/jQGoUzGKFznBhiiQ== d3-brush@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.0.0.tgz#b20fca926f29ad4342fab4f87b76770810f44d16" - integrity sha512-6j6WlvjsCC4whOctLfda8qRcrARwVfPlWmYXhrpazHK19GOjpN6CyWw9rP6bL3iXSj/aj3weLLKaGFQwd65KXg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.1.0.tgz#adadfbb104e8937af142e9a6e2028326f0471065" + integrity sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ== dependencies: d3-dispatch "1 - 2" d3-drag "2" @@ -197,11 +197,11 @@ d3-force@2: integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== d3-geo@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.0.tgz#aadb8a2804b690b868e5f153037217ba6fee9b20" - integrity sha512-28x4nHfMpTDOXlOXv2gb3WS6L4mtaWdz5ctC6ow+lGiFOpmc+8OtnDjAupCPBjQ+bMWUvP3F89akr94o//cXLQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.1.tgz#2437fdfed3fe3aba2812bd8f30609cac83a7ee39" + integrity sha512-M6yzGbFRfxzNrVhxDJXzJqSLQ90q1cCyb3EWFZ1LF4eWOBYxFypw7I/NFVBNXKNqxv1bqLathhYvdJ6DC+th3A== dependencies: - d3-array "^2.5" + d3-array ">=2.5" d3-hierarchy@2: version "2.0.0" @@ -231,9 +231,9 @@ d3-polygon@2: integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== d3-random@2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.0.tgz#a5ef1e047267d8ab96aab491bb1fb9481bc63524" - integrity sha512-CPLYfjoR3IebCGAUH+Y+RX/XH7z8AQVgFobSklswVvNSHUdiiSN9vn6ymTVkvTc1lDbcjf+zay5fMxC0o7Y7/g== + version "2.2.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.1.tgz#3a45bef965cd900efc9d97619d154b8955088e0f" + integrity sha512-gKeWnzV7IzvTQEOdjBnQYCO0wwU42N2Y69nYlrJoW7ewGS8YEJxCeui1PfuGpnFZv2ogbSsQtna3FLOh0BmKOQ== d3-scale-chromatic@2: version "2.0.0" From 24f83a3baf0f5932572891647794007f643f37ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 26 Aug 2020 23:54:30 +0200 Subject: [PATCH 061/311] link to v6 --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4fa9c4a1c60ac5..74058319051108 100644 --- a/README.md +++ b/README.md @@ -17,19 +17,19 @@ If you use npm, `npm install d3`. Otherwise, download the [latest release](https://github.com/d3/d3/releases/latest). The released bundle supports anonymous AMD, CommonJS, and vanilla environments. You can load directly from [d3js.org](https://d3js.org), [CDNJS](https://cdnjs.com/libraries/d3), or [unpkg](https://unpkg.com/d3/). For example: ```html - + ``` For the minified version: ```html - + ``` You can also use the standalone D3 microlibraries. For example, [d3-selection](https://github.com/d3/d3-selection): ```html - + ``` D3 is written using [ES2015 modules](http://www.2ality.com/2014/09/es6-modules-final.html). Create a [custom bundle using Rollup](https://bl.ocks.org/mbostock/bb09af4c39c79cffcde4), Webpack, or your preferred bundler. To import D3 into an ES2015 application, either import specific symbols from specific D3 modules: @@ -47,11 +47,11 @@ import * as d3 from "d3"; In Node: ```js -var d3 = require("d3"); +const d3 = require("d3"); ``` You can also require individual modules and combine them into a `d3` object using [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign): ```js -var d3 = Object.assign({}, require("d3-format"), require("d3-geo"), require("d3-geo-projection")); +const d3 = Object.assign({}, require("d3-format"), require("d3-geo"), require("d3-geo-projection")); ``` From b24af97909b2815e84e22288a93755709879977f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Thu, 27 Aug 2020 00:08:06 +0200 Subject: [PATCH 062/311] soft release date --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index a9ca10ecbc0f7d..4c137756fadee2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ # Changes in D3 6.0 -[Released DATE TK.](https://github.com/d3/d3/releases/tag/v6.0.0) +[Released August 26, 2020.](https://github.com/d3/d3/releases/tag/v6.0.0) *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* From 89f298aab41928a47ef254985fe4eecb3bb8455e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Thu, 27 Aug 2020 00:25:41 +0200 Subject: [PATCH 063/311] v6.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e90476fb9e53fe..6ed2da61855db3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.0.0-rc.4", + "version": "6.0.0", "publishConfig": { "tag": "next" }, From 3b66a6d99390abe5c21887a2212e635313cee7ed Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 26 Aug 2020 17:06:31 -0700 Subject: [PATCH 064/311] Update CHANGES. --- CHANGES.md | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4c137756fadee2..05308833263170 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,14 +6,28 @@ D3 6.0 introduces several non-backwards-compatible changes. -**Adoption of ES2015** +**d3-array** now uses native collections (Map and Set) instead of object dictionaries, and accepts any iterable (for-of) not just arrays. [d3.group and d3.rollup](https://observablehq.com/@d3/d3-group) are powerful new aggregation functions that replace d3.nest and work great with d3-hierarchy and d3-selection. There are lots of new array helpers, too, such as [d3.greatest](https://github.com/d3/d3-array/blob/master/README.md#greatest), [d3.quickselect](https://github.com/d3/d3-array/blob/master/README.md#quickselect), and [d3.fsum](https://github.com/d3/d3-array/blob/master/README.md#fsum). -* *All* the D3 modules have now adopted ES2015. Developers who need to maintain compatibility with older browsers will use transpilation. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#es2015)] +**d3-selection** now passes events directly to event listeners, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. + +**d3-delaunay** replaces d3-voronoi, offering dramatic improvements to performance and robustness. It also supports [fast search](https://observablehq.com/@d3/delaunay-find). And there’s a new [d3-geo-voronoi](https://github.com/Fil/d3-geo-voronoi) for spherical (geographical) data! + +**d3-random** is greatly expanded and includes a fast linear congruential generator for seeded randomness. + +**d3-chord** has new layouts for directed and transposed chord diagrams. + +**d3-scale** adds a new radial scale type. + +… and a variety of other small enhancements and [new and improved examples](https://observablehq.com/@d3/gallery). + +D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler; see our [migration guide](https://observablehq.com/d/f91cccf0cad5e9cb) for details. + +Here’s a more detailed overview of changes. **d3-selection** has a new event manager: -* d3.event ⇨ (event) passed as the first argument to all listeners [[details](https://observablehq.com/d/f91cccf0cad5e9cb#events)] -* d3.mouse, d3.touch, d3.touches, d3.clientPoint ⇨ d3.pointer [[details](https://observablehq.com/d/f91cccf0cad5e9cb#pointer)] +* d3.event → (event) passed as the first argument to all listeners [[details](https://observablehq.com/d/f91cccf0cad5e9cb#events)] +* d3.mouse, d3.touch, d3.touches, d3.clientPoint → d3.pointer [[details](https://observablehq.com/d/f91cccf0cad5e9cb#pointer)] **d3-brush**, **d3-drag** and **d3-zoom** also use the new event manager: @@ -23,20 +37,20 @@ D3 6.0 introduces several non-backwards-compatible changes. **d3-voronoi** is deprecated, and replaced by [d3-delaunay](https://github.com/d3/d3-delaunay): -* d3.voronoi ⇨ d3.Delaunay [[details](https://observablehq.com/d/f91cccf0cad5e9cb#delaunay)] +* d3.voronoi → d3.Delaunay [[details](https://observablehq.com/d/f91cccf0cad5e9cb#delaunay)] **d3-collection** is deprecated, and its methods are replaced: -* d3.nest ⇨ d3.group and d3.rollup (from d3-array) [[details](https://observablehq.com/d/f91cccf0cad5e9cb#group)] -* d3.map ⇨ Map [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.set ⇨ Set [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.keys ⇨ Object.keys [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.values ⇨ Object.values [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.entries ⇨ Object.entries [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.nest → d3.group and d3.rollup (from d3-array) [[details](https://observablehq.com/d/f91cccf0cad5e9cb#group)] +* d3.map → Map [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.set → Set [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.keys → Object.keys [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.values → Object.values [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] +* d3.entries → Object.entries [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] **d3-array** has renamed two methods: -* d3.histogram ⇨ d3.bin [[details](https://observablehq.com/d/f91cccf0cad5e9cb#bin)] -* d3.scan ⇨ d3.leastIndex [[details](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex)] +* d3.histogram → d3.bin [[details](https://observablehq.com/d/f91cccf0cad5e9cb#bin)] +* d3.scan → d3.leastIndex [[details](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex)] **d3-interpolate** has a breaking change in an ancillary method: * d3.interpolateTransformCss is now stricter in its inputs. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss)] @@ -44,12 +58,7 @@ D3 6.0 introduces several non-backwards-compatible changes. **d3-format** changes its minus sign: * The default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] -**bower** - -Support for the [bower](https://github.com/mbostock-bower/d3-bower) package manager has been dropped; use [unpkg](https://unpkg.com/d3) or [cdnjs](https://cdnjs.com/libraries/d3). - -……… - +Lastly, support for [Bower](https://bower.io) has been dropped; D3 is now exclusively published to npm and GitHub. # Changes in D3 5.0 From 2c95b54859f56c2b77434e01f961fc3af96ced07 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 26 Aug 2020 17:12:08 -0700 Subject: [PATCH 065/311] Update CHANGES. --- CHANGES.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 05308833263170..75472189abe476 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,10 +20,6 @@ D3 6.0 introduces several non-backwards-compatible changes. … and a variety of other small enhancements and [new and improved examples](https://observablehq.com/@d3/gallery). -D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler; see our [migration guide](https://observablehq.com/d/f91cccf0cad5e9cb) for details. - -Here’s a more detailed overview of changes. - **d3-selection** has a new event manager: * d3.event → (event) passed as the first argument to all listeners [[details](https://observablehq.com/d/f91cccf0cad5e9cb#events)] @@ -60,6 +56,8 @@ Here’s a more detailed overview of changes. Lastly, support for [Bower](https://bower.io) has been dropped; D3 is now exclusively published to npm and GitHub. +D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler; see our [migration guide](https://observablehq.com/d/f91cccf0cad5e9cb) for details. + # Changes in D3 5.0 [Released March 22, 2018.](https://github.com/d3/d3/releases/tag/v5.0.0) From c8975951236c9459b21a7c43198d836336dc4b29 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 07:59:10 -0700 Subject: [PATCH 066/311] Update CHANGES. --- CHANGES.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 75472189abe476..68db306a53ac67 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,21 +4,23 @@ *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* -D3 6.0 introduces several non-backwards-compatible changes. +D3 6.0 embraces modern JavaScript (ES2015) language features. + +D3 now **uses native collections** (Map and Set) and **accepts iterables**. [d3.group and d3.rollup](https://observablehq.com/@d3/d3-group) are powerful new aggregation functions that replace d3.nest and work great [with d3-hierarchy](https://observablehq.com/d/9a453665f405eebf) and d3-selection. There are lots of new helpers in d3-array, too, such as [d3.greatest](https://observablehq.com/@d3/d3-least), [d3.quickselect](https://observablehq.com/@d3/d3-quickselect), and [d3.fsum](https://observablehq.com/@d3/d3-fsum). -**d3-array** now uses native collections (Map and Set) instead of object dictionaries, and accepts any iterable (for-of) not just arrays. [d3.group and d3.rollup](https://observablehq.com/@d3/d3-group) are powerful new aggregation functions that replace d3.nest and work great with d3-hierarchy and d3-selection. There are lots of new array helpers, too, such as [d3.greatest](https://github.com/d3/d3-array/blob/master/README.md#greatest), [d3.quickselect](https://github.com/d3/d3-array/blob/master/README.md#quickselect), and [d3.fsum](https://github.com/d3/d3-array/blob/master/README.md#fsum). +D3 now **passes events directly to listeners**, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. -**d3-selection** now passes events directly to event listeners, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. +**d3-delaunay** (based on Vladimir Agafonkin’s excellent [Delaunator](https://github.com/mapbox/delaunator)) replaces d3-voronoi, offering dramatic improvements to performance, robustness, and [search](https://observablehq.com/@d3/delaunay-find). And there’s a new [d3-geo-voronoi](https://github.com/Fil/d3-geo-voronoi) for spherical (geographical) data! -**d3-delaunay** replaces d3-voronoi, offering dramatic improvements to performance and robustness. It also supports [fast search](https://observablehq.com/@d3/delaunay-find). And there’s a new [d3-geo-voronoi](https://github.com/Fil/d3-geo-voronoi) for spherical (geographical) data! +**d3-random** is [greatly expanded](https://github.com/d3/d3-random/blob/master/README.md) and includes a fast [linear congruential generator](https://observablehq.com/@d3/d3-randomlcg) for seeded randomness. -**d3-random** is greatly expanded and includes a fast linear congruential generator for seeded randomness. +**d3-chord** has new layouts for [directed](https://observablehq.com/@d3/directed-chord-diagram) and transposed chord diagrams. -**d3-chord** has new layouts for directed and transposed chord diagrams. +**d3-scale** adds a new [radial scale](https://observablehq.com/@d3/radial-stacked-bar-chart-ii) type. -**d3-scale** adds a new radial scale type. +… and a variety of other small enhancements. [More than 450 examples](https://observablehq.com/@d3/gallery) have been updated to D3 6.0! -… and a variety of other small enhancements and [new and improved examples](https://observablehq.com/@d3/gallery). +D3 6.0 introduces several non-backwards-compatible changes. **d3-selection** has a new event manager: @@ -45,18 +47,23 @@ D3 6.0 introduces several non-backwards-compatible changes. * d3.entries → Object.entries [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] **d3-array** has renamed two methods: + * d3.histogram → d3.bin [[details](https://observablehq.com/d/f91cccf0cad5e9cb#bin)] * d3.scan → d3.leastIndex [[details](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex)] **d3-interpolate** has a breaking change in an ancillary method: + * d3.interpolateTransformCss is now stricter in its inputs. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss)] **d3-format** changes its minus sign: + * The default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] +D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler. + Lastly, support for [Bower](https://bower.io) has been dropped; D3 is now exclusively published to npm and GitHub. -D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler; see our [migration guide](https://observablehq.com/d/f91cccf0cad5e9cb) for details. +See our [migration guide](https://observablehq.com/d/f91cccf0cad5e9cb) for help upgrading. # Changes in D3 5.0 From 21de72ed329cba93cef21294502d2b4796c1710a Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 08:00:09 -0700 Subject: [PATCH 067/311] Update CHANGES. --- CHANGES.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 68db306a53ac67..08c458e371fcbb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,8 +4,6 @@ *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* -D3 6.0 embraces modern JavaScript (ES2015) language features. - D3 now **uses native collections** (Map and Set) and **accepts iterables**. [d3.group and d3.rollup](https://observablehq.com/@d3/d3-group) are powerful new aggregation functions that replace d3.nest and work great [with d3-hierarchy](https://observablehq.com/d/9a453665f405eebf) and d3-selection. There are lots of new helpers in d3-array, too, such as [d3.greatest](https://observablehq.com/@d3/d3-least), [d3.quickselect](https://observablehq.com/@d3/d3-quickselect), and [d3.fsum](https://observablehq.com/@d3/d3-fsum). D3 now **passes events directly to listeners**, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. From 39cbd29055b01c34175bc2c82d3f75b44350cf4b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 08:35:13 -0700 Subject: [PATCH 068/311] Update CHANGES. --- CHANGES.md | 57 ++++++++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 08c458e371fcbb..dddbfedaec4968 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,42 +20,27 @@ D3 now **passes events directly to listeners**, replacing the d3.event global an D3 6.0 introduces several non-backwards-compatible changes. -**d3-selection** has a new event manager: - -* d3.event → (event) passed as the first argument to all listeners [[details](https://observablehq.com/d/f91cccf0cad5e9cb#events)] -* d3.mouse, d3.touch, d3.touches, d3.clientPoint → d3.pointer [[details](https://observablehq.com/d/f91cccf0cad5e9cb#pointer)] - -**d3-brush**, **d3-drag** and **d3-zoom** also use the new event manager: - -* *brush*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_brush)] -* *drag*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_drag)] -* *zoom*.on listeners now receive event [[details](https://observablehq.com/d/f91cccf0cad5e9cb#event_zoom)] - -**d3-voronoi** is deprecated, and replaced by [d3-delaunay](https://github.com/d3/d3-delaunay): - -* d3.voronoi → d3.Delaunay [[details](https://observablehq.com/d/f91cccf0cad5e9cb#delaunay)] - -**d3-collection** is deprecated, and its methods are replaced: - -* d3.nest → d3.group and d3.rollup (from d3-array) [[details](https://observablehq.com/d/f91cccf0cad5e9cb#group)] -* d3.map → Map [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.set → Set [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.keys → Object.keys [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.values → Object.values [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] -* d3.entries → Object.entries [[details](https://observablehq.com/d/f91cccf0cad5e9cb#collection)] - -**d3-array** has renamed two methods: - -* d3.histogram → d3.bin [[details](https://observablehq.com/d/f91cccf0cad5e9cb#bin)] -* d3.scan → d3.leastIndex [[details](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex)] - -**d3-interpolate** has a breaking change in an ancillary method: - -* d3.interpolateTransformCss is now stricter in its inputs. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss)] - -**d3-format** changes its minus sign: - -* The default symbol for the sign of negative values becomes unicode minus instead of hyphen-minus. [[details](https://observablehq.com/d/f91cccf0cad5e9cb#minus)] +* Remove [d3.event](https://observablehq.com/d/f91cccf0cad5e9cb#events). +* Change [*selection*.on](https://observablehq.com/d/f91cccf0cad5e9cb#events) to pass the *event* directly to listeners. +* Change [*transition*.on](https://observablehq.com/d/f91cccf0cad5e9cb#events) to pass the *event* directly to listeners. +* Change [*brush*.on](https://observablehq.com/d/f91cccf0cad5e9cb#event_brush) to pass the *event* directly to listeners. +* Change [*drag*.on](https://observablehq.com/d/f91cccf0cad5e9cb#event_drag) to pass the *event* directly to listeners. +* Change [*zoom*.on](https://observablehq.com/d/f91cccf0cad5e9cb#event_zoom) to pass the *event* directly to listeners. +* Remove d3.mouse; use [d3.pointer](https://observablehq.com/d/f91cccf0cad5e9cb#pointer). +* Remove d3.touch; use [d3.pointer](https://observablehq.com/d/f91cccf0cad5e9cb#pointer). +* Remove d3.touches; use [d3.pointers](https://observablehq.com/d/f91cccf0cad5e9cb#pointer). +* Remove d3.clientPoint; use [d3.pointer](https://observablehq.com/d/f91cccf0cad5e9cb#pointer). +* Remove d3.voronoi; use [d3.Delaunay](https://observablehq.com/d/f91cccf0cad5e9cb#delaunay). +* Remove d3.nest; use [d3.group](https://observablehq.com/d/f91cccf0cad5e9cb#group) and [d3.rollup](https://observablehq.com/d/f91cccf0cad5e9cb#group). +* Remove d3.map; use [Map](https://observablehq.com/d/f91cccf0cad5e9cb#collection). +* Remove d3.set; use [Set](https://observablehq.com/d/f91cccf0cad5e9cb#collection). +* Remove d3.keys; use [Object.keys](https://observablehq.com/d/f91cccf0cad5e9cb#collection). +* Remove d3.values; use [Object.values](https://observablehq.com/d/f91cccf0cad5e9cb#collection). +* Remove d3.entries; use [Object.entries](https://observablehq.com/d/f91cccf0cad5e9cb#collection). +* Rename d3.histogram to [d3.bin](https://observablehq.com/d/f91cccf0cad5e9cb#bin). +* Rename d3.scan to [d3.leastIndex](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex). +* Change [d3.interpolateTransformCss](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss) to require absolute units. +* Change [d3.format](https://observablehq.com/d/f91cccf0cad5e9cb#minus) to default to the minus sign for negative values instead of hyphen-minus. D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler. From 5744b788dcd6962e28fa5811cca400afc2cc2b77 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 08:36:14 -0700 Subject: [PATCH 069/311] Update CHANGES. --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index dddbfedaec4968..37597db90bc98b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -40,7 +40,7 @@ D3 6.0 introduces several non-backwards-compatible changes. * Rename d3.histogram to [d3.bin](https://observablehq.com/d/f91cccf0cad5e9cb#bin). * Rename d3.scan to [d3.leastIndex](https://observablehq.com/d/f91cccf0cad5e9cb#leastIndex). * Change [d3.interpolateTransformCss](https://observablehq.com/d/f91cccf0cad5e9cb#interpolateTransformCss) to require absolute units. -* Change [d3.format](https://observablehq.com/d/f91cccf0cad5e9cb#minus) to default to the minus sign for negative values instead of hyphen-minus. +* Change [d3.format](https://observablehq.com/d/f91cccf0cad5e9cb#minus) to default to the minus sign instead of hyphen-minus for negative values. D3 now requires a browser that supports [ES2015](http://www.ecma-international.org/ecma-262/6.0/). For older browsers, you must bring your own transpiler. From df81bcc6a265d5183a21a09b2e79c4c8842dd652 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 08:44:47 -0700 Subject: [PATCH 070/311] Update CHANGES. --- CHANGES.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 37597db90bc98b..0e2ec209608de9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,6 +18,40 @@ D3 now **passes events directly to listeners**, replacing the d3.event global an … and a variety of other small enhancements. [More than 450 examples](https://observablehq.com/@d3/gallery) have been updated to D3 6.0! +### d3-array + +See https://observablehq.com/@d3/d3-array-2-0 for details. + +* Accept iterables. +* Add [d3.group](https://github.com/d3/d3-array/blob/master/README.md#group). +* Add [d3.groups](https://github.com/d3/d3-array/blob/master/README.md#groups). +* Add [d3.index](https://github.com/d3/d3-array/blob/master/README.md#index). +* Add [d3.indexes](https://github.com/d3/d3-array/blob/master/README.md#indexes). +* Add [d3.rollup](https://github.com/d3/d3-array/blob/master/README.md#rollup). +* Add [d3.rollups](https://github.com/d3/d3-array/blob/master/README.md#rollups). +* Add [d3.maxIndex](https://github.com/d3/d3-array/blob/master/README.md#maxIndex). +* Add [d3.minIndex](https://github.com/d3/d3-array/blob/master/README.md#minIndex). +* Add [d3.greatest](https://github.com/d3/d3-array/blob/master/README.md#greatest). +* Add [d3.greatestIndex](https://github.com/d3/d3-array/blob/master/README.md#greatestIndex). +* Add [d3.least](https://github.com/d3/d3-array/blob/master/README.md#least). +* Add [d3.leastIndex](https://github.com/d3/d3-array/blob/master/README.md#leastIndex). +* Add [d3.bin](https://github.com/d3/d3-array/blob/master/README.md#bin). +* Add [d3.count](https://github.com/d3/d3-array/blob/master/README.md#count). Thanks, @Fil! +* Add [d3.cumsum](https://github.com/d3/d3-array/blob/master/README.md#cumsum). Thanks, @Fil! #102 +* Add [d3.fsum](https://github.com/d3/d3-array/blob/master/README.md#fsum). +* Add [d3.Adder](https://github.com/d3/d3-array/blob/master/README.md#Adder). +* Add [d3.quantileSorted](https://github.com/d3/d3-array/blob/master/README.md#quantileSorted). +* Add [d3.quickselect](https://github.com/d3/d3-array/blob/master/README.md#quickselect). +* Add [*bisector*.center](https://github.com/d3/d3-array/blob/master/README.md#bisector_center). +* Allow more than two iterables for [d3.cross](https://github.com/d3/d3-array/blob/master/README.md#cross). +* Accept non-sorted input with [d3.quantile](https://github.com/d3/d3-array/blob/master/README.md#quantile). +* Fix a *array*.sort bug in Safari. +* Fix bin thresholds to ignore NaN input. +* Fix [d3.ticks](https://github.com/d3/d3-array/blob/master/README.md#ticks) to not return ticks outside the domain. +* Improve the performance of [d3.median](https://github.com/d3/d3-array/blob/master/README.md#median). + +### Breaking Changes + D3 6.0 introduces several non-backwards-compatible changes. * Remove [d3.event](https://observablehq.com/d/f91cccf0cad5e9cb#events). From 04bdc65d65ec4b61bcea2aa8eea5ae42ba5d2aa9 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 09:40:57 -0700 Subject: [PATCH 071/311] Update CHANGES. --- CHANGES.md | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0e2ec209608de9..f2c3d3519d3c8a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -36,8 +36,8 @@ See https://observablehq.com/@d3/d3-array-2-0 for details. * Add [d3.least](https://github.com/d3/d3-array/blob/master/README.md#least). * Add [d3.leastIndex](https://github.com/d3/d3-array/blob/master/README.md#leastIndex). * Add [d3.bin](https://github.com/d3/d3-array/blob/master/README.md#bin). -* Add [d3.count](https://github.com/d3/d3-array/blob/master/README.md#count). Thanks, @Fil! -* Add [d3.cumsum](https://github.com/d3/d3-array/blob/master/README.md#cumsum). Thanks, @Fil! #102 +* Add [d3.count](https://github.com/d3/d3-array/blob/master/README.md#count). +* Add [d3.cumsum](https://github.com/d3/d3-array/blob/master/README.md#cumsum). * Add [d3.fsum](https://github.com/d3/d3-array/blob/master/README.md#fsum). * Add [d3.Adder](https://github.com/d3/d3-array/blob/master/README.md#Adder). * Add [d3.quantileSorted](https://github.com/d3/d3-array/blob/master/README.md#quantileSorted). @@ -50,6 +50,164 @@ See https://observablehq.com/@d3/d3-array-2-0 for details. * Fix [d3.ticks](https://github.com/d3/d3-array/blob/master/README.md#ticks) to not return ticks outside the domain. * Improve the performance of [d3.median](https://github.com/d3/d3-array/blob/master/README.md#median). +### d3-brush + +* Add [*event*.mode](https://github.com/d3/d3-brush/blob/master/README.md#brush-events). +* Change [*brush*.on](https://github.com/d3/d3-brush/blob/master/README.md#brush_on) to pass the *event* directly to listeners. +* Improve multitouch (two-touch) interaction. + +### d3-chord + +* Add [d3.chordDirected](https://github.com/d3/d3-chord/blob/master/README.md#chordDirected). +* Add [d3.chordTranspose](https://github.com/d3/d3-chord/blob/master/README.md#chordTranspose). +* Add [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/master/README.md#ribbonArrow). +* Add [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/master/README.md#ribbon_padAngle). +* Add [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/master/README.md#ribbon_sourceRadius). +* Add [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/master/README.md#ribbon_targetRadius). + +### d3-delaunay + +* Add [d3.Delaunay](https://github.com/d3/d3-delaunay/blob/master/README.md). + +### d3-drag + +* Change [*drag*.on](https://github.com/d3/d3-drag/blob/master/README.md#drag_on) to pass the *event* directly to listeners. + +### d3-force + +* Add *iterations* argument to [*simulation*.tick](https://github.com/d3/d3-force/blob/master/README.md#simulation_tick). +* Add [*forceCenter*.strength](https://github.com/d3/d3-force/blob/master/README.md#center_strength). +* Add [*forceSimulation*.randomSource](https://github.com/d3/d3-force/blob/master/README.md#simulation_randomSource). +* All built-in forces are now fully deterministic (including “jiggling” coincident nodes). +* Improve the default phyllotaxis layout slightly by offsetting by one half-radius. +* Improve the error message when a link references an unknown node. +* [*force*.initialize](https://github.com/d3/d3-force/blob/master/README.md#force_initialize) is now passed a random source. +* Fix bug when initializing nodes with fixed positions. + +### d3-format + +* Change the default minus sign to the minus sign (−) instead of hyphen-minus (-). +* Fix decimal `d` formatting of numbers greater than or equal to 1e21. + +### d3-geo + +* Fix clipping of some degenerate polygons. + +### d3-hierarchy + +* Accept iterables. +* Add [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_iterator); hierarchies are now iterable. +* Add [*node*.find](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_find). +* Change [*node*.each](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_each) to pass the traversal index. +* Change [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_eachAfter) to pass the traversal index. +* Change [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_eachBefore) to pass the traversal index. +* Fix [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/master/README.md#packSiblings) for huge circles. +* Fix divide-by-zero bug in [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/master/README.md#treemapBinary). +* Fix divide-by-zero bug in [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/master/README.md#treemapResquarify). + +### d3-interpolate + +* Add [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/master/README.md#interpolateZoom_rho). (#25) +* Allow [d3.piecewise](https://github.com/d3/d3-interpolate/blob/master/README.md#piecewise) to default to using d3.interpolate. #90 +* Change [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/master/README.md#interpolateTransformCss) to use DOMMatrix and require absolute units. #83 + +### d3-quadtree + +* Fix an infinite loop when coordinates diverge to huge values. + +### d3-random + +* Add [d3.randomLcg](https://github.com/d3/d3-random/blob/master/README.md#randomLcg). +* Add [d3.randomGamma](https://github.com/d3/d3-random/blob/master/README.md#randomGamma). +* Add [d3.randomBeta](https://github.com/d3/d3-random/blob/master/README.md#randomBeta). +* Add [d3.randomWeibull](https://github.com/d3/d3-random/blob/master/README.md#randomWeibull). +* Add [d3.randomCauchy](https://github.com/d3/d3-random/blob/master/README.md#randomCauchy). +* Add [d3.randomLogistic](https://github.com/d3/d3-random/blob/master/README.md#randomLogistic). +* Add [d3.randomPoisson](https://github.com/d3/d3-random/blob/master/README.md#randomPoisson). +* Add [d3.randomInt](https://github.com/d3/d3-random/blob/master/README.md#randomInt). +* Add [d3.randomBinomial](https://github.com/d3/d3-random/blob/master/README.md#randomBinomial). +* Add [d3.randomGeometric](https://github.com/d3/d3-random/blob/master/README.md#randomGeometric). +* Add [d3.randomPareto](https://github.com/d3/d3-random/blob/master/README.md#randomPareto). +* Add [d3.randomBernoulli](https://github.com/d3/d3-random/blob/master/README.md#randomBernoulli). +* Allow [d3.randomBates](https://github.com/d3/d3-random/blob/master/README.md#randomBates) to take fractional *n*. +* Allow [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/master/README.md#randomIrwinHall) to take fractional *n*. +* Don’t wrap Math.random in the default source. + +Thanks to @Lange, @p-v-d-Veeken, @svanschooten, @Parcly-Taxel and @jrus for your contributions! + +### d3-scale + +* Accept iterables. +* Add [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/master/README.md#diverging_rangeRound). +* Add [*sequential*.range](https://github.com/d3/d3-scale/blob/master/README.md#sequential_range) (for compatibility with d3-axis). +* Add [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/master/README.md#sequential_rangeRound). +* Add [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/master/README.md#sequentialQuantile_quantiles). +* Add [d3.scaleRadial](https://github.com/d3/d3-scale/blob/master/README.md#radial-scales). +* [*diverging*.range](https://github.com/d3/d3-scale/blob/master/README.md#diverging_range) can now be used to set the interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/master/README.md#sequential_range) can now be used to set the interpolator. +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/master/README.md#diverging-scales) can now accept a range array in place of an interpolator. +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/master/README.md#sequential-scales) can now accept a range array in place of an interpolator. +* Fix [*continuous*.nice](https://github.com/d3/d3-scale/blob/master/README.md#continuous_nice) to ensure that niced domains always span ticks. +* Fix [*log*.ticks](https://github.com/d3/d3-scale/blob/master/README.md#log_ticks) for small domains. +* Fix [*log*.ticks](https://github.com/d3/d3-scale/blob/master/README.md#log_ticks) for small domains. #44 +* Fix [*scale*.clamp](https://github.com/d3/d3-scale/blob/master/README.md#continuous_clamp) for [sequential quantile scales](https://github.com/d3/d3-scale/blob/master/README.md#scaleSequentialQuantile). Thanks, @Fil! +* Fix [*scale*.clamp](https://github.com/d3/d3-scale/blob/master/README.md#continuous_clamp) for continuous scales with more domain values than range values. +* Fix [diverging scales](https://github.com/d3/d3-scale/blob/master/README.md#diverging-scales) with descending domains. +* Remove deprecated *step* argument from [*time*.ticks](https://github.com/d3/d3-scale/blob/master/README.md#time_ticks) and [*time*.nice](https://github.com/d3/d3-scale/blob/master/README.md#time_nice). + +### d3-selection + +* Add [*selection*.selectChild](https://github.com/d3/d3-selection/blob/master/README.md#selection_selectChild). +* Add [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/master/README.md#selection_selectChildren). +* Add [d3.pointer](https://github.com/d3/d3-selection/blob/master/README.md#pointer). +* Add [d3.pointers](https://github.com/d3/d3-selection/blob/master/README.md#pointers). +* Add *selection*[Symbol.iterator]; selections are now iterable! +* Accept iterables with [*selection*.data](https://github.com/d3/d3-selection/blob/master/README.md#selection_data). +* Accept iterables with [d3.selectAll](https://github.com/d3/d3-selection/blob/master/README.md#selectAll). +* Change [*selection*.on](https://github.com/d3/d3-selection/blob/master/README.md#selection_on) to pass the *event* directly to listeners. +* Remove index and group from *selection*.on listeners! +* Remove d3.event! +* Remove d3.mouse. +* Remove d3.touch. +* Remove d3.touches. +* Remove d3.customEvent. +* Remove d3.clientPoint. +* Remove d3.sourceEvent. +* Fix *selection*.merge(*transition*) to error. + +For an overview of changes, see https://observablehq.com/@d3/d3-selection-2-0. + +### d3-shape + +* Accept iterables. +* Add [d3.line](https://github.com/d3/d3-shape/blob/master/README.md#line)(*x*, *y*) shorthand. +* Add [d3.area](https://github.com/d3/d3-shape/blob/master/README.md#area)(*x*, *y0*, *y1*) shorthand. +* Add [d3.symbol](https://github.com/d3/d3-shape/blob/master/README.md#symbol)(*type*, *size*) shorthand. + +### d3-time-format + +* Add ISO 8601 “week year” (`%G` and `%g`). + +### d3-timer + +* Fix [*interval*.restart](https://github.com/d3/d3-timer/blob/master/README.md#timer_restart) to restart as an interval. + +### d3-transition + +* Add [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/master/README.md#transition_easeVarying). +* Add *transition*[Symbol.iterator]; transitions are now iterable. +* Fix [*selection*.transition](https://github.com/d3/d3-transition/blob/master/README.md#selection_transition) to error if the named transition to inherit is not found.k +* Fix [*transition*.end](https://github.com/d3/d3-transition/blob/master/README.md#transition_end) to resolve immediately if the selection is empty. + +### d3-zoom + +* Add [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/master/README.md#zoom_tapDistance). +* Change [*zoom*.on](https://github.com/d3/d3-zoom/blob/master/README.md#zoom_on) to pass the *event* directly to listeners. +* Change the default [*zoom*.filter](https://github.com/d3/d3-zoom/blob/master/README.md#zoom_filter) to observe *wheel* events if the control key is pressed. +* Change the default [*zoom*.wheelDelta](ttps://github.com/d3/d3-zoom/blob/master/README.md#zoom_wheelDelta) to go faster if the control key is pressed. +* Don‘t set touch-action: none. +* Upgrade to [d3-selection 2](https://observablehq.com/@d3/d3-selection-2-0). + ### Breaking Changes D3 6.0 introduces several non-backwards-compatible changes. From 8f1982b1b19f21485b6f2afb8fefee742cd2715f Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 09:41:39 -0700 Subject: [PATCH 072/311] Update CHANGES. --- CHANGES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f2c3d3519d3c8a..dd69fbabf9390d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,8 +20,6 @@ D3 now **passes events directly to listeners**, replacing the d3.event global an ### d3-array -See https://observablehq.com/@d3/d3-array-2-0 for details. - * Accept iterables. * Add [d3.group](https://github.com/d3/d3-array/blob/master/README.md#group). * Add [d3.groups](https://github.com/d3/d3-array/blob/master/README.md#groups). @@ -50,6 +48,8 @@ See https://observablehq.com/@d3/d3-array-2-0 for details. * Fix [d3.ticks](https://github.com/d3/d3-array/blob/master/README.md#ticks) to not return ticks outside the domain. * Improve the performance of [d3.median](https://github.com/d3/d3-array/blob/master/README.md#median). +See https://observablehq.com/@d3/d3-array-2-0 for details. + ### d3-brush * Add [*event*.mode](https://github.com/d3/d3-brush/blob/master/README.md#brush-events). From 357c03ef2ce817f16e3a1bcd315940dc46140377 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 27 Aug 2020 09:42:08 -0700 Subject: [PATCH 073/311] Update CHANGES. --- CHANGES.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index dd69fbabf9390d..b55924450a5e65 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,13 +8,7 @@ D3 now **uses native collections** (Map and Set) and **accepts iterables**. [d3. D3 now **passes events directly to listeners**, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. -**d3-delaunay** (based on Vladimir Agafonkin’s excellent [Delaunator](https://github.com/mapbox/delaunator)) replaces d3-voronoi, offering dramatic improvements to performance, robustness, and [search](https://observablehq.com/@d3/delaunay-find). And there’s a new [d3-geo-voronoi](https://github.com/Fil/d3-geo-voronoi) for spherical (geographical) data! - -**d3-random** is [greatly expanded](https://github.com/d3/d3-random/blob/master/README.md) and includes a fast [linear congruential generator](https://observablehq.com/@d3/d3-randomlcg) for seeded randomness. - -**d3-chord** has new layouts for [directed](https://observablehq.com/@d3/directed-chord-diagram) and transposed chord diagrams. - -**d3-scale** adds a new [radial scale](https://observablehq.com/@d3/radial-stacked-bar-chart-ii) type. +**d3-delaunay** (based on Vladimir Agafonkin’s excellent [Delaunator](https://github.com/mapbox/delaunator)) replaces d3-voronoi, offering dramatic improvements to performance, robustness, and [search](https://observablehq.com/@d3/delaunay-find). And there’s a new [d3-geo-voronoi](https://github.com/Fil/d3-geo-voronoi) for spherical (geographical) data! **d3-random** is [greatly expanded](https://github.com/d3/d3-random/blob/master/README.md) and includes a fast [linear congruential generator](https://observablehq.com/@d3/d3-randomlcg) for seeded randomness. **d3-chord** has new layouts for [directed](https://observablehq.com/@d3/directed-chord-diagram) and transposed chord diagrams. **d3-scale** adds a new [radial scale](https://observablehq.com/@d3/radial-stacked-bar-chart-ii) type. … and a variety of other small enhancements. [More than 450 examples](https://observablehq.com/@d3/gallery) have been updated to D3 6.0! From 8e8ecded5fb82bfa8a76547250394f96da30d54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Fri, 28 Aug 2020 09:33:51 +0200 Subject: [PATCH 074/311] oops I left publishConfig: tag: next --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 6ed2da61855db3..a9ab5223343978 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,6 @@ { "name": "d3", "version": "6.0.0", - "publishConfig": { - "tag": "next" - }, "description": "Data-Driven Documents", "keywords": [ "dom", From f001d0a680b948e0efc8c6600b8c4802c6820492 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 29 Aug 2020 12:53:54 -0700 Subject: [PATCH 075/311] Update d3-array, d3-random. --- API.md | 176 +++++++++++++++++++++++++++--------------------------- yarn.lock | 36 +++++------ 2 files changed, 107 insertions(+), 105 deletions(-) diff --git a/API.md b/API.md index ea7097f7371254..9c82d0a924b243 100644 --- a/API.md +++ b/API.md @@ -35,86 +35,88 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.6.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.7.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.6.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.7.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.6.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.6.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.6.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.6.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.6.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.6.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.6.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.6.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.6.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.6.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.7.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.7.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.7.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.7.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.7.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.7.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.7.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.7.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.6.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.6.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.6.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.6.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.6.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.7.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.7.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.7.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.7.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.7.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.6.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.6.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.6.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.6.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.6.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.6.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.6.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.6.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.6.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.6.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.6.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.6.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.range](https://github.com/d3/d3-array/blob/v2.6.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.6.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.6.0/README.md#zip) - transpose a variable number of arrays. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.6.0/README.md#histograms) +* [d3.group](https://github.com/d3/d3-array/blob/v2.7.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.7.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.7.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.7.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.7.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.7.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.7.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.7.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.7.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.7.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.7.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.7.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.7.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.7.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.7.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.7.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.range](https://github.com/d3/d3-array/blob/v2.7.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.7.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.7.0/README.md#zip) - transpose a variable number of arrays. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.7.0/README.md#histograms) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.6.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.6.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.6.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.7.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdSturges) - Sturges’ binning formula. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) @@ -811,29 +813,29 @@ Two-dimensional recursive spatial subdivision. * [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visit) - selectively visit nodes in a quadtree. * [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. -## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v2.2.0) +## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v2.2.2) Generate random numbers from various distributions. -* [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomUniform) - from a uniform distribution. -* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomInt) - from a uniform integer distribution. -* [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomNormal) - from a normal distribution. -* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogNormal) - from a log-normal distribution. -* [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBates) - from a Bates distribution. -* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomIrwinHall) - from an Irwin–Hall distribution. -* [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomExponential) - from an exponential distribution. -* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPareto) - from a Pareto distribution. -* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBernoulli) - from a Bernoulli distribution. -* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGeometric) - from a geometric distribution. -* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBinomial) - from a binomial distribution. -* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomGamma) - from a gamma distribution. -* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomBeta) - from a beta distribution. -* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomWeibull) - from a Weibull, Gumbel or Fréchet distribution. -* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomCauchy) - from a Cauchy distribution. -* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLogistic) - from a logistic distribution. -* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomPoisson) - from a Poisson distribution. -* [*random*.source](https://github.com/d3/d3-random/blob/v2.2.0/README.md#random_source) - set the source of randomness. -* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.0/README.md#randomLcg) - creates a seeded pseudo-random number generator. +* [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomUniform) - from a uniform distribution. +* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomInt) - from a uniform integer distribution. +* [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomNormal) - from a normal distribution. +* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLogNormal) - from a log-normal distribution. +* [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBates) - from a Bates distribution. +* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomIrwinHall) - from an Irwin–Hall distribution. +* [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomExponential) - from an exponential distribution. +* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomPareto) - from a Pareto distribution. +* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBernoulli) - from a Bernoulli distribution. +* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomGeometric) - from a geometric distribution. +* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBinomial) - from a binomial distribution. +* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomGamma) - from a gamma distribution. +* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBeta) - from a beta distribution. +* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomWeibull) - from a Weibull, Gumbel or Fréchet distribution. +* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomCauchy) - from a Cauchy distribution. +* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLogistic) - from a logistic distribution. +* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomPoisson) - from a Poisson distribution. +* [*random*.source](https://github.com/d3/d3-random/blob/v2.2.2/README.md#random_source) - set the source of randomness. +* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLcg) - a seeded pseudorandom number generator. ## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.2) @@ -919,7 +921,7 @@ Map a continuous, quantitative domain to a continuous, fixed interpolator. * [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. * [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. * [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. ### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging-scales) @@ -1233,7 +1235,7 @@ A categorical shape encoding, as in a scatterplot. * [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolStar) - a pentagonal star (pentagram). * [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolTriangle) - an up-pointing triangle. * [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. * [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolType_draw) - draw this symbol to the given context. ### [Stacks](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stacks) diff --git a/yarn.lock b/yarn.lock index 32d73c54c8b327..0c86bb3456dc56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@types/node@*": - version "14.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" - integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== + version "14.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" + integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== "@types/resolve@0.0.8": version "0.0.8" @@ -102,9 +102,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= "d3-array@1.2.0 - 2", d3-array@2, d3-array@>=2.5: - version "2.6.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.6.0.tgz#b8df0c695eab26e2b2fd4ffe2d84bd703f8d0faf" - integrity sha512-1TgzIGb6hrHKSCGccdL209Ibk41HCeyv5znFEvJfBsBGhD3qpoHt/2W2ECpyLxpG1k7aNJz0BYrmLpVs9hIGNQ== + version "2.7.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.7.0.tgz#d30287e2580ecf1f4748800b71bcbc2ca8bd96db" + integrity sha512-4T2QVIgIvsuWo3ZxlweERUA37nc8uEIykD8bbpnbdgROio1TIh9uoMmi5E1SckAjFdb9b7hTWV0dExnxNqaAVg== d3-axis@2: version "2.0.0" @@ -231,9 +231,9 @@ d3-polygon@2: integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== d3-random@2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.1.tgz#3a45bef965cd900efc9d97619d154b8955088e0f" - integrity sha512-gKeWnzV7IzvTQEOdjBnQYCO0wwU42N2Y69nYlrJoW7ewGS8YEJxCeui1PfuGpnFZv2ogbSsQtna3FLOh0BmKOQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.2.tgz#5eebd209ef4e45a2b362b019c1fb21c2c98cbb6e" + integrity sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw== d3-scale-chromatic@2: version "2.0.0" @@ -658,9 +658,9 @@ rollup-plugin-node-resolve@5: rollup-pluginutils "^2.8.1" rollup-plugin-terser@7: - version "7.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.0.tgz#26b38ada4f0b351cd7cd872ca04c0f8532d4864f" - integrity sha512-p/N3lLiFusCjYTLfVkoaiRTOGr5AESEaljMPH12MhOtoMkmTBhIAfuadrcWy4am1U0vU4WTxO9fi0K09O4CboQ== + version "7.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.1.tgz#df72d8272e03fcb504a76f414b9509c63c5eaf54" + integrity sha512-HL0dgzSxBYG/Ly9i/E5Sc+PuKKZ0zBzk11VmLCfdUtpqH4yYqkLclPkTqRy85FU9246yetImOClaQ/ufnj08vg== dependencies: "@babel/code-frame" "^7.10.4" jest-worker "^26.2.1" @@ -683,9 +683,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.26.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.5.tgz#5562ec36fcba3eed65cfd630bd78e037ad0e0307" - integrity sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA== + version "2.26.8" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.8.tgz#7b02353835a73c4797f42177a5fa3fc074012713" + integrity sha512-li9WaJYc5z9WzV1jhZbPQCrsOpGNsI+Li1qyrn5n745ZNSnlkRlBtj1Hs+Z0Dc2N1+P7HT34UKAEASqN9Th8cg== optionalDependencies: fsevents "~2.1.2" @@ -757,9 +757,9 @@ supports-color@^5.3.0: has-flag "^3.0.0" supports-color@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" From b1acc348dc502d55d578fb4ed4188217e0fedacb Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 29 Aug 2020 12:54:00 -0700 Subject: [PATCH 076/311] 6.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a9ab5223343978..242b711e5c4d35 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.0.0", + "version": "6.1.0", "description": "Data-Driven Documents", "keywords": [ "dom", From e0b191082c5eeae68e8ba2c3f2247a4cab580d06 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 31 Aug 2020 08:29:11 -0700 Subject: [PATCH 077/311] Update d3-array. --- API.md | 134 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +-- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/API.md b/API.md index 9c82d0a924b243..f73e7b58075003 100644 --- a/API.md +++ b/API.md @@ -35,88 +35,88 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.7.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.7.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.7.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.7.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.7.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.7.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.7.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.7.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.7.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.7.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.7.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.7.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.7.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.7.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.7.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.7.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.7.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.7.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.7.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.7.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.7.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.7.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.7.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.7.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.7.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.7.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.7.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.7.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.7.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.7.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.7.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.7.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.7.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.7.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.7.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.7.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.7.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.7.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.7.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.7.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.7.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.7.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.7.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.7.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.7.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.7.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.7.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.7.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.7.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.7.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.range](https://github.com/d3/d3-array/blob/v2.7.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.7.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.7.0/README.md#zip) - transpose a variable number of arrays. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.7.0/README.md#histograms) +* [d3.group](https://github.com/d3/d3-array/blob/v2.7.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.7.1/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.7.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.7.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.7.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.7.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.7.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.7.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.7.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.7.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.7.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.7.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.7.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.7.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.7.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.7.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.range](https://github.com/d3/d3-array/blob/v2.7.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.7.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.7.1/README.md#zip) - transpose a variable number of arrays. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.7.1/README.md#histograms) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.7.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.7.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.7.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.7.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdSturges) - Sturges’ binning formula. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index 0c86bb3456dc56..7979f66d3a1610 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,9 +102,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= "d3-array@1.2.0 - 2", d3-array@2, d3-array@>=2.5: - version "2.7.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.7.0.tgz#d30287e2580ecf1f4748800b71bcbc2ca8bd96db" - integrity sha512-4T2QVIgIvsuWo3ZxlweERUA37nc8uEIykD8bbpnbdgROio1TIh9uoMmi5E1SckAjFdb9b7hTWV0dExnxNqaAVg== + version "2.7.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.7.1.tgz#b1f56065e9aba1ef6f0d0c8c9390b65421593352" + integrity sha512-dYWhEvg1L2+osFsSqNHpXaPQNugLT4JfyvbLE046I2PDcgYGFYc0w24GSJwbmcjjZYOPC3PNP2S782bWUM967Q== d3-axis@2: version "2.0.0" From fd1973a949f8451cc153865f0bf895e1b608b99b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 31 Aug 2020 08:29:19 -0700 Subject: [PATCH 078/311] 6.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 242b711e5c4d35..330da55006f2c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.1.0", + "version": "6.1.1", "description": "Data-Driven Documents", "keywords": [ "dom", From 5e516a585a7d8e4064b54bb4e6318c7e9a6c1513 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 2 Sep 2020 10:08:35 -0700 Subject: [PATCH 079/311] Update year. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 1d9d875edb4697..894ddc6549f17d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2010-2017 Mike Bostock +Copyright 2010-2020 Mike Bostock All rights reserved. Redistribution and use in source and binary forms, with or without modification, From ffb43e65271c643125d2519bf25ae1b891cb1d50 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 23 Sep 2020 09:56:54 -0700 Subject: [PATCH 080/311] Update d3-array, d3-scale. --- API.md | 156 ++++++++++++++++++++++++++++++------------------------ yarn.lock | 16 +++--- 2 files changed, 96 insertions(+), 76 deletions(-) diff --git a/API.md b/API.md index f73e7b58075003..2cc88f478e835c 100644 --- a/API.md +++ b/API.md @@ -2,7 +2,7 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work together; you can use the modules independently, or you can use them together as part of the default build. The source and documentation for each module is available in its repository. Follow the links below to learn more. For changes between major versions, see [CHANGES](https://github.com/d3/d3/blob/master/CHANGES.md); see also the [release notes](https://github.com/d3/d3/releases) and the [3.x reference](https://github.com/d3/d3-3.x-api-reference/blob/master/API-Reference.md). -* [Arrays](#arrays-d3-array) ([Statistics](#statistics), [Search](#search), [Transformations](#transformations), [Histograms](#histograms)) +* [Arrays](#arrays-d3-array) ([Statistics](#statistics), [Search](#search), [Iterables](#iterables), [Sets](#sets), [Transformations](#transformations), [Histograms](#histograms)) * [Axes](#axes-d3-axis) * [Brushes](#brushes-d3-brush) * [Chords](#chords-d3-chord) @@ -35,88 +35,108 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.7.1) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.8.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.7.1/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.8.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.7.1/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.7.1/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.7.1/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.7.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.7.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.7.1/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.7.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.7.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.7.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.7.1/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.8.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.8.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.8.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.8.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.8.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.8.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.8.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.8.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.7.1/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.7.1/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.7.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.7.1/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.7.1/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.7.1/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.7.1/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.8.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.8.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.8.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.8.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.8.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.7.1/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.7.1/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.7.1/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.7.1/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.7.1/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.7.1/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.7.1/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.7.1/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.7.1/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.7.1/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.7.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.7.1/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.7.1/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.7.1/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.7.1/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.7.1/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.range](https://github.com/d3/d3-array/blob/v2.7.1/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.7.1/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.7.1/README.md#zip) - transpose a variable number of arrays. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.7.1/README.md#histograms) +* [d3.group](https://github.com/d3/d3-array/blob/v2.8.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.8.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.8.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.8.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.8.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.8.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.8.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.8.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.8.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.8.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.8.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.8.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.8.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.8.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.8.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.8.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.8.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.8.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.8.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.8.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.8.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.8.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.8.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.8.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.8.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.8.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.8.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.8.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.8.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.8.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.8.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.8.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.8.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.7.1/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.7.1/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.7.1/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.8.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdSturges) - Sturges’ binning formula. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index 7979f66d3a1610..d114edb73b9676 100644 --- a/yarn.lock +++ b/yarn.lock @@ -101,10 +101,10 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -"d3-array@1.2.0 - 2", d3-array@2, d3-array@>=2.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.7.1.tgz#b1f56065e9aba1ef6f0d0c8c9390b65421593352" - integrity sha512-dYWhEvg1L2+osFsSqNHpXaPQNugLT4JfyvbLE046I2PDcgYGFYc0w24GSJwbmcjjZYOPC3PNP2S782bWUM967Q== +d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.8.0.tgz#f76e10ad47f1f4f75f33db5fc322eb9ffde5ef23" + integrity sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw== d3-axis@2: version "2.0.0" @@ -244,11 +244,11 @@ d3-scale-chromatic@2: d3-interpolate "1 - 2" d3-scale@3: - version "3.2.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.2.tgz#36d4cbc94dc38bbb5bd91ba5eddb44c6d19bad3e" - integrity sha512-3Mvi5HfqPFq0nlyeFlkskGjeqrR/790pINMHc4RXKJ2E6FraTd3juaRIRZZHyMAbi3LjAMW0EH4FB1WgoGyeXg== + version "3.2.3" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" + integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== dependencies: - d3-array "1.2.0 - 2" + d3-array "^2.3.0" d3-format "1 - 2" d3-interpolate "1.2.0 - 2" d3-time "1 - 2" From 3c63660903dfc459ab9ac6df2ab73912df3a7924 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 23 Sep 2020 09:56:59 -0700 Subject: [PATCH 081/311] 6.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 330da55006f2c7..804568f6c0359f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.1.1", + "version": "6.2.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 4d3baf7b7ea03bc054cf1000c7bf2e99972b8bcc Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 3 Dec 2020 12:57:40 -0800 Subject: [PATCH 082/311] Update d3-array. --- API.md | 174 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/API.md b/API.md index 2cc88f478e835c..c77605277558de 100644 --- a/API.md +++ b/API.md @@ -35,108 +35,108 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.8.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.9.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.8.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.9.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.8.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.8.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.8.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.8.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.8.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.8.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.8.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.8.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.8.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.8.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.9.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.9.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.9.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.9.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.9.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.9.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.9.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.9.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.8.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.8.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.8.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.8.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.8.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.8.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.8.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.9.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.9.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.9.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.9.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.9.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.8.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.8.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.8.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.8.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.8.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.8.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.8.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.8.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.8.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.8.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.8.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.8.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.8.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.8.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.8.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.8.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.8.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.8.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.8.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.8.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.8.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.8.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.8.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.8.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.8.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.8.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.8.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.8.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.8.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.8.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.8.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.8.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.8.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.8.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.9.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.9.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.9.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.9.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.9.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.9.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.9.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.9.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.9.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.9.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.9.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.9.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.9.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.9.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.9.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.9.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.9.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.9.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.9.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.9.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.9.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.9.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.9.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.9.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.9.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.9.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.9.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.9.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.9.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.9.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.9.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.9.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.9.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.8.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.8.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.8.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.9.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdSturges) - Sturges’ binning formula. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index d114edb73b9676..917c655a001380 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,9 +102,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.8.0.tgz#f76e10ad47f1f4f75f33db5fc322eb9ffde5ef23" - integrity sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw== + version "2.9.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.9.0.tgz#a3041ab298f57ecc88b7d91610c6bc5297c03fb9" + integrity sha512-yOokB8GozB6GAubW9n7phLdRugC8TgEjF6V1cX/q78L80d2tLirUnc0jvDSSF622JJJTmtnJOe9+WKs+yS5GFQ== d3-axis@2: version "2.0.0" From a8baadfe75a8d8b2c325b4b545766eebe95939c2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 3 Dec 2020 12:57:50 -0800 Subject: [PATCH 083/311] 6.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 804568f6c0359f..fe6878ece57d72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.2.0", + "version": "6.3.0", "description": "Data-Driven Documents", "keywords": [ "dom", From ec388d88091a7194a6c6f362cd635df8d41fbee6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Tue, 8 Dec 2020 14:38:08 -0800 Subject: [PATCH 084/311] Update d3-array. --- API.md | 174 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/API.md b/API.md index c77605277558de..27129227924ea0 100644 --- a/API.md +++ b/API.md @@ -35,108 +35,108 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.9.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.9.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.9.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.9.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.9.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.9.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.9.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.9.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.9.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.9.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.9.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.9.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.9.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.9.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.9.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.9.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.9.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.9.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.9.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.9.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.9.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.9.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.9.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.9.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.9.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.9.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.9.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.9.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.9.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.9.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.9.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.9.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.9.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.9.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.9.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.9.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.9.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.9.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.9.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.9.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.9.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.9.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.9.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.9.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.9.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.9.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.9.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.9.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.9.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.9.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.9.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.9.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.9.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.9.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.9.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.9.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.9.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.9.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.9.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.9.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.9.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.9.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.9.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.9.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.9.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.9.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.9.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.9.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.9.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.9.1/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.9.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.9.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.9.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.9.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.9.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.9.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.9.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.9.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.9.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.9.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.9.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.9.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.9.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.9.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.9.1/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.9.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.9.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.9.1/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.9.1/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.9.1/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.9.1/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.9.1/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.9.1/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.9.1/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.9.1/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.9.1/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.9.1/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.9.1/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.9.1/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.9.1/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.9.1/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.9.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.9.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.9.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.9.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdSturges) - Sturges’ binning formula. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index 917c655a001380..09e1d188cbd7f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,9 +102,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.9.0.tgz#a3041ab298f57ecc88b7d91610c6bc5297c03fb9" - integrity sha512-yOokB8GozB6GAubW9n7phLdRugC8TgEjF6V1cX/q78L80d2tLirUnc0jvDSSF622JJJTmtnJOe9+WKs+yS5GFQ== + version "2.9.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.9.1.tgz#f355cc72b46c8649b3f9212029e2d681cb5b9643" + integrity sha512-Ob7RdOtkqsjx1NWyQHMFLtCSk6/aKTxDdC4ZIolX+O+mDD2RzrsYgAyc0WGAlfYFVELLSilS7w8BtE3PKM8bHg== d3-axis@2: version "2.0.0" From e9fee2c85a9bceffe928d1d438ea1272224064f3 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Tue, 8 Dec 2020 14:38:12 -0800 Subject: [PATCH 085/311] 6.3.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fe6878ece57d72..d9ca0535989119 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.3.0", + "version": "6.3.1", "description": "Data-Driven Documents", "keywords": [ "dom", From afd34bb6271f0d65727af2af0baf4dca1a3683a6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 22 Jan 2021 10:40:02 -0800 Subject: [PATCH 086/311] update dependencies --- API.md | 181 +++++++++++++++++++++--------------------- yarn.lock | 230 +++++++++++++++++++++++++++++++++--------------------- 2 files changed, 235 insertions(+), 176 deletions(-) diff --git a/API.md b/API.md index 27129227924ea0..3f2bcc42faccb2 100644 --- a/API.md +++ b/API.md @@ -2,7 +2,7 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work together; you can use the modules independently, or you can use them together as part of the default build. The source and documentation for each module is available in its repository. Follow the links below to learn more. For changes between major versions, see [CHANGES](https://github.com/d3/d3/blob/master/CHANGES.md); see also the [release notes](https://github.com/d3/d3/releases) and the [3.x reference](https://github.com/d3/d3-3.x-api-reference/blob/master/API-Reference.md). -* [Arrays](#arrays-d3-array) ([Statistics](#statistics), [Search](#search), [Iterables](#iterables), [Sets](#sets), [Transformations](#transformations), [Histograms](#histograms)) +* [Arrays](#arrays-d3-array) ([Statistics](#statistics), [Search](#search), [Iterables](#iterables), [Sets](#sets), [Transformations](#transformations), [Histograms](#histograms), [Interning](#interning)) * [Axes](#axes-d3-axis) * [Brushes](#brushes-d3-brush) * [Chords](#chords-d3-chord) @@ -35,108 +35,113 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.9.1) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.10.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.9.1/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.10.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.9.1/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.9.1/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.9.1/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.9.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.9.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.9.1/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.9.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.9.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.9.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.9.1/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.10.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.10.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.10.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.10.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.10.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.10.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.10.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.10.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.9.1/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.9.1/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.9.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.9.1/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.9.1/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.9.1/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.9.1/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.10.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.10.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.10.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.10.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.10.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.9.1/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.9.1/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.9.1/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.9.1/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.9.1/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.9.1/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.9.1/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.9.1/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.9.1/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.9.1/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.9.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.9.1/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.9.1/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.9.1/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.9.1/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.9.1/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.9.1/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.9.1/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.9.1/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.9.1/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.9.1/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.9.1/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.9.1/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.9.1/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.9.1/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.9.1/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.9.1/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.9.1/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.9.1/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.9.1/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.9.1/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.9.1/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.9.1/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.9.1/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.10.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.10.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.10.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.10.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.10.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.10.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v2.10.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.10.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.10.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.10.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.10.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.10.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.10.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.10.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.10.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.10.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.10.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.10.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.10.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.10.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.10.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.10.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.10.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.10.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.10.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.10.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.10.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.10.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.10.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.10.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.10.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.10.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.10.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.9.1/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.9.1/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.9.1/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.10.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdSturges) - Sturges’ binning formula. + +### [Interning](https://github.com/d3/d3-array/blob/v2.10.0/README.md#interning) + +* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.10.0/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.10.0/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index 09e1d188cbd7f0..5daa709ecf4441 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,16 +3,16 @@ "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== "@babel/highlight@^7.10.4": version "7.10.4" @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@types/node@*": - version "14.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" - integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== "@types/resolve@0.0.8": version "0.0.8" @@ -66,9 +66,17 @@ buffer-from@^1.0.0: integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" chalk@^2.0.0: version "2.4.2" @@ -102,9 +110,11 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.9.1.tgz#f355cc72b46c8649b3f9212029e2d681cb5b9643" - integrity sha512-Ob7RdOtkqsjx1NWyQHMFLtCSk6/aKTxDdC4ZIolX+O+mDD2RzrsYgAyc0WGAlfYFVELLSilS7w8BtE3PKM8bHg== + version "2.10.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.10.0.tgz#dedf198fe55ea761d196ae40b15dd42e2deaf0b2" + integrity sha512-TygE7/GvpL0092Pa/cS/kcyQ4E+I8KCkw3uCpQOFc4xi4IWNE67xST56H1Tz/FTYUqABULSEAmeLrGAmuLN8Xg== + dependencies: + internmap "^1.0.0" d3-axis@2: version "2.0.0" @@ -317,7 +327,7 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -341,22 +351,25 @@ dotignore@~0.1.2: dependencies: minimatch "^3.0.4" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== +es-abstract@^1.18.0-next.1: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.0.2" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" @@ -404,6 +417,15 @@ function-bind@^1.1.1, function-bind@~1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +get-intrinsic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + glob@^7.1.3, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -426,7 +448,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== @@ -458,15 +480,29 @@ inherits@2, inherits@~2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +internmap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.0.tgz#3c6bf0944b0eae457698000412108752bbfddb56" + integrity sha512-SdoDWwNOTE2n4JWUsLn4KXZGuZPjPF9yyOGc8bnfWnBQh7BD/l80rzSznKc/r4Y0aQ7z3RTk9X+tV4tHBpu+dA== + is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" is-date-object@^1.0.1: version "1.0.2" @@ -478,7 +514,12 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-regex@^1.0.4, is-regex@^1.1.0: +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-regex@^1.0.4, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -500,9 +541,9 @@ is-symbol@^1.0.2: has-symbols "^1.0.1" jest-worker@^26.2.1: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -549,10 +590,10 @@ minimist@~1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-inspect@~1.7.0: version "1.7.0" @@ -560,27 +601,27 @@ object-inspect@~1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" once@^1.3.0: version "1.4.0" @@ -607,14 +648,22 @@ randombytes@^2.1.0: safe-buffer "^5.1.0" regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" -resolve@^1.11.1, resolve@~1.17.0: +resolve@^1.11.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -658,9 +707,9 @@ rollup-plugin-node-resolve@5: rollup-pluginutils "^2.8.1" rollup-plugin-terser@7: - version "7.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.1.tgz#df72d8272e03fcb504a76f414b9509c63c5eaf54" - integrity sha512-HL0dgzSxBYG/Ly9i/E5Sc+PuKKZ0zBzk11VmLCfdUtpqH4yYqkLclPkTqRy85FU9246yetImOClaQ/ufnj08vg== + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" jest-worker "^26.2.1" @@ -683,9 +732,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.26.8" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.8.tgz#7b02353835a73c4797f42177a5fa3fc074012713" - integrity sha512-li9WaJYc5z9WzV1jhZbPQCrsOpGNsI+Li1qyrn5n745ZNSnlkRlBtj1Hs+Z0Dc2N1+P7HT34UKAEASqN9Th8cg== + version "2.38.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.38.0.tgz#57942d5a10826cb12ed1f19c261f774efa502d2d" + integrity sha512-ay9zDiNitZK/LNE/EM2+v5CZ7drkB2xyDljvb1fQJCGnq43ZWRkhxN145oV8GmoW1YNi4sA/1Jdkr2LfawJoXw== optionalDependencies: fsevents "~2.1.2" @@ -711,7 +760,7 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -source-map-support@~0.5.12: +source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -719,35 +768,40 @@ source-map-support@~0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@~0.6.1: +source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + string.prototype.trim@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== +string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== +string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" supports-color@^5.3.0: version "5.5.0" @@ -790,13 +844,13 @@ tape@4: through "~2.3.8" terser@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.2.1.tgz#40b971b8d28b4fe98c9e8c0d073ab48e7bb96cd8" - integrity sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ== + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.19" through@~2.3.4, through@~2.3.8: version "2.3.8" From 12336e3a01bc90359d10909d22b12488bf114174 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 22 Jan 2021 10:40:08 -0800 Subject: [PATCH 087/311] 6.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d9ca0535989119..cf235edd9a61ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.3.1", + "version": "6.4.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 73110b9466ebeb2f7c2c545296a6386cd506efe4 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 24 Jan 2021 16:27:32 -0800 Subject: [PATCH 088/311] d3-array 2.11 --- API.md | 181 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 94 insertions(+), 93 deletions(-) diff --git a/API.md b/API.md index 3f2bcc42faccb2..75e0b8773c36f9 100644 --- a/API.md +++ b/API.md @@ -35,113 +35,114 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.10.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.11.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.10.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.11.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.10.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.10.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.10.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.10.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.10.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.10.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.10.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.10.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.10.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.10.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.11.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.11.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.11.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.11.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.11.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.11.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.11.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.11.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.10.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.10.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.10.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.10.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.10.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.10.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.10.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.11.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.11.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.11.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.11.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.11.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.10.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.10.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.10.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.10.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.10.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.10.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v2.10.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.10.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.10.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.10.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.10.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.10.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.10.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.10.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.10.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.10.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.10.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.10.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.10.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.10.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.10.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.10.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.10.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.10.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.10.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.10.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.10.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.10.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.10.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.10.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.10.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.10.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.10.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.10.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.11.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.11.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.11.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.11.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.11.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.11.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.11.0/README.md#groupSort) - sort keys according to grouped values. +* [d3.count](https://github.com/d3/d3-array/blob/v2.11.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.11.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.11.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.11.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.11.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.11.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.11.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.11.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.11.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.11.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.11.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.11.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.11.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.11.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.11.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.11.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.11.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.11.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.11.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.11.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.11.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.11.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.11.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.11.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.11.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.11.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.11.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.10.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.10.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.10.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.11.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v2.10.0/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v2.11.0/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.10.0/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.10.0/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.11.0/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.11.0/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index 5daa709ecf4441..2244fd84f9c6ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -110,9 +110,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.10.0.tgz#dedf198fe55ea761d196ae40b15dd42e2deaf0b2" - integrity sha512-TygE7/GvpL0092Pa/cS/kcyQ4E+I8KCkw3uCpQOFc4xi4IWNE67xST56H1Tz/FTYUqABULSEAmeLrGAmuLN8Xg== + version "2.11.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.11.0.tgz#5ed6a2869bc7d471aec8df9ff6ed9fef798facc4" + integrity sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw== dependencies: internmap "^1.0.0" From 37cd9bf680a1d7e7eb4c3141bcc34c1e480c32ba Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 24 Jan 2021 16:27:37 -0800 Subject: [PATCH 089/311] 6.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cf235edd9a61ae..7364043052dc23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.4.0", + "version": "6.5.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 11aa55286aa4df3d3807cb3ed82aca6c7e419c58 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 10 Mar 2021 12:25:09 -0800 Subject: [PATCH 090/311] update dependencies --- API.md | 506 +++++++++++++++++++++++++++--------------------------- yarn.lock | 225 ++++++++++++++---------- 2 files changed, 393 insertions(+), 338 deletions(-) diff --git a/API.md b/API.md index 75e0b8773c36f9..1f176f562bb869 100644 --- a/API.md +++ b/API.md @@ -35,133 +35,135 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.11.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.12.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.11.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.12.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.11.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.11.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.11.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.11.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.11.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#cumsum) - comute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.11.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.11.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.11.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.11.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.11.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.12.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.12.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.12.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.12.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.12.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.12.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.12.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.12.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.11.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.11.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.11.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.11.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.11.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.11.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.11.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.12.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.12.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.12.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.12.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.12.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.11.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.11.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.11.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.11.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.11.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.11.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.11.0/README.md#groupSort) - sort keys according to grouped values. -* [d3.count](https://github.com/d3/d3-array/blob/v2.11.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.11.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.11.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.11.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.11.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.11.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.11.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.11.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.11.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.11.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.11.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.11.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.11.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.11.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.11.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.11.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.11.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.11.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.11.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.11.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.11.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.11.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.11.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.11.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.11.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.11.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.11.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.11.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.12.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.12.0/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.12.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.12.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.12.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.12.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.12.0/README.md#groupSort) - sort keys according to grouped values. +* [d3.count](https://github.com/d3/d3-array/blob/v2.12.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.12.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.12.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.12.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.12.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.12.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.12.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.12.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.12.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.12.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.12.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.12.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.12.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.12.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.12.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.12.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.12.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.12.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.12.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.12.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.12.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.12.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.12.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.12.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.12.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.12.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.11.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_value)- specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.11.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.11.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.12.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v2.11.0/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v2.12.0/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.11.0/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.11.0/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.12.0/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.12.0/README.md#InternSet) - a value-interning Set. -## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.0.0) +## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.1.0) Human-readable reference marks for scales. -* [d3.axisTop](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisTop) - create a new top-oriented axis generator. -* [d3.axisRight](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisRight) - create a new right-oriented axis generator. -* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisBottom) - create a new bottom-oriented axis generator. -* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axisLeft) - create a new left-oriented axis generator. -* [*axis*](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#_axis) - generate an axis for the given selection. -* [*axis*.scale](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_scale) - set the scale. -* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_ticks) - customize how ticks are generated and formatted. -* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickArguments) - customize how ticks are generated and formatted. -* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickValues) - set the tick values explicitly. -* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickFormat) - set the tick format explicitly. -* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSize) - set the size of the ticks. -* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSizeInner) - set the size of inner ticks. -* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. -* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v2.0.0/README.md#axis_tickPadding) - set the padding between ticks and labels. +* [d3.axisTop](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisTop) - create a new top-oriented axis generator. +* [d3.axisRight](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisRight) - create a new right-oriented axis generator. +* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisBottom) - create a new bottom-oriented axis generator. +* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisLeft) - create a new left-oriented axis generator. +* [*axis*](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#_axis) - generate an axis for the given selection. +* [*axis*.scale](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_scale) - set the scale. +* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_ticks) - customize how ticks are generated and formatted. +* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickArguments) - customize how ticks are generated and formatted. +* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickValues) - set the tick values explicitly. +* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickFormat) - set the tick format explicitly. +* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSize) - set the size of the ticks. +* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeInner) - set the size of inner ticks. +* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. +* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickPadding) - set the padding between ticks and labels. +* [*axis*.offset]()https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_offset) - set the pixel offset for crisp edges. ## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v2.0.0) @@ -1110,181 +1112,183 @@ Transform the DOM by selecting elements and joining to data. * [d3.namespace](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. * [d3.namespaces](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespaces) - the built-in XML namespaces. -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v2.0.0) +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v2.1.0) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial) - create a new radial area generator. -* [*areaRadial*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_areaRadial) - generate an area for the given dataset. -* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_angle) - set the start and end angle accessors. -* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_startAngle) - set the start angle accessor. -* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_endAngle) - set the end angle accessor. -* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_radius) - set the inner and outer radius accessors. -* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_innerRadius) - set the inner radius accessor. -* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_outerRadius) - set the outer radius accessor. -* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_defined) - set the defined accessor. -* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_curve) - set the curve interpolator. -* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_context) - set the rendering context. -* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. -* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. -* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. -* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial) - create a new radial area generator. +* [*areaRadial*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_areaRadial) - generate an area for the given dataset. +* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_angle) - set the start and end angle accessors. +* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_startAngle) - set the start angle accessor. +* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_endAngle) - set the end angle accessor. +* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_radius) - set the inner and outer radius accessors. +* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_innerRadius) - set the inner radius accessor. +* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_outerRadius) - set the outer radius accessor. +* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_defined) - set the defined accessor. +* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_curve) - set the curve interpolator. +* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_context) - set the rendering context. +* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. +* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. +* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. +* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveBundle_beta) - set the bundle tension *beta*. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBundle_beta) - set the bundle tension *beta*. +* [d3.curveBumpX](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBumpX) - a cubic Bézier spline with horizontal tangents. +* [d3.curveBumpY](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBumpY) - a cubic Bézier spline with vertical tangents. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial) - create a new radial link generator. -* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial_angle) - set the point *angle* accessor. -* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#linkRadial_radius) - set the point *radius* accessor. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial) - create a new radial link generator. +* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial_angle) - set the point *angle* accessor. +* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial_radius) - set the point *radius* accessor. -### [Symbols](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbols) +### [Symbols](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_context) - set the rendering context. +* [d3.symbols](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbols) - the array of built-in symbol types. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolCircle) - a circle. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolCross) - a Greek cross with arms of equal length. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolDiamond) - a rhombus. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolSquare) - a square. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolStar) - a pentagonal star (pentagram). +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolTriangle) - an up-pointing triangle. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolWye) - a Y shape. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v2.0.0/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. +* [d3.stack](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. ## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 2244fd84f9c6ff..14ca5ef34f7ebb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,30 +3,30 @@ "@babel/code-frame@^7.10.4": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.12.13" -"@babel/helper-validator-identifier@^7.10.4": +"@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-validator-identifier" "^7.12.11" chalk "^2.0.0" js-tokens "^4.0.0" "@types/node@*": - version "14.14.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" - integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== + version "14.14.33" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.33.tgz#9e4f8c64345522e4e8ce77b334a8aaa64e2b6c78" + integrity sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g== "@types/resolve@0.0.8": version "0.0.8" @@ -110,16 +110,16 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.11.0.tgz#5ed6a2869bc7d471aec8df9ff6ed9fef798facc4" - integrity sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw== + version "2.12.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.0.tgz#68a74d153e52d6bf4608d9f6388cca48b42a4c3f" + integrity sha512-T6H/qNldyD/1OlRkJbonb3u3MPhNwju8OPxYv0YSjDb/B2RUeeBEHzIpNrYiinwpmz8+am+puMrpcrDWgY9wRg== dependencies: internmap "^1.0.0" d3-axis@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.0.0.tgz#40aebb65626ffe6d95e9441fbf9194274b328a8b" - integrity sha512-9nzB0uePtb+u9+dWir+HTuEAKJOEUYJoEwbJPsZ1B4K3iZUgzJcSENQ05Nj7S4CIfbZZ8/jQGoUzGKFznBhiiQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.1.0.tgz#978db534092711117d032fad5d733d206307f6a0" + integrity sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw== d3-brush@2: version "2.1.0" @@ -270,9 +270,9 @@ d3-selection@2: integrity sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== d3-shape@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd" - integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.1.0.tgz#3b6a82ccafbc45de55b57fcf956c584ded3b666f" + integrity sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA== dependencies: d3-path "1 - 2" @@ -351,25 +351,27 @@ dotignore@~0.1.2: dependencies: minimatch "^3.0.4" -es-abstract@^1.18.0-next.1: - version "1.18.0-next.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" - integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== +es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" - get-intrinsic "^1.0.2" + get-intrinsic "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" + has-symbols "^1.0.2" + is-callable "^1.2.3" is-negative-zero "^2.0.1" - is-regex "^1.1.1" + is-regex "^1.1.2" + is-string "^1.0.5" object-inspect "^1.9.0" object-keys "^1.1.1" object.assign "^4.1.2" - string.prototype.trimend "^1.0.3" - string.prototype.trimstart "^1.0.3" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -407,20 +409,20 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -get-intrinsic@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -438,6 +440,11 @@ glob@^7.1.3, glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +has-bigints@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -448,10 +455,10 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== has@^1.0.3, has@~1.0.3: version "1.0.3" @@ -481,9 +488,9 @@ inherits@2, inherits@~2.0.4: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internmap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.0.tgz#3c6bf0944b0eae457698000412108752bbfddb56" - integrity sha512-SdoDWwNOTE2n4JWUsLn4KXZGuZPjPF9yyOGc8bnfWnBQh7BD/l80rzSznKc/r4Y0aQ7z3RTk9X+tV4tHBpu+dA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== is-arguments@^1.0.4: version "1.1.0" @@ -492,12 +499,24 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-core-module@^2.1.0: +is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -519,11 +538,17 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== dependencies: + call-bind "^1.0.2" has-symbols "^1.0.1" is-regex@~1.0.5: @@ -533,7 +558,12 @@ is-regex@~1.0.5: dependencies: has "^1.0.3" -is-symbol@^1.0.2: +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== @@ -601,11 +631,11 @@ object-inspect@~1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: @@ -656,11 +686,11 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" resolve@^1.11.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - is-core-module "^2.1.0" + is-core-module "^2.2.0" path-parse "^1.0.6" resolve@~1.17.0: @@ -732,11 +762,11 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.38.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.38.0.tgz#57942d5a10826cb12ed1f19c261f774efa502d2d" - integrity sha512-ay9zDiNitZK/LNE/EM2+v5CZ7drkB2xyDljvb1fQJCGnq43ZWRkhxN145oV8GmoW1YNi4sA/1Jdkr2LfawJoXw== + version "2.41.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.41.0.tgz#b2a398bbabbf227738dedaef099e494aed468982" + integrity sha512-Gk76XHTggulWPH95q8V62bw6uqDH6UGvbD6LOa3QUyhuMF3eOuaeDHR7SLm1T9faitkpNrqzUAVYx47klcMnlA== optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.1" rw@1, rw@^1.3.2: version "1.3.3" @@ -779,28 +809,28 @@ source-map@~0.7.2: integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== string.prototype.trim@~1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" - integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== + version "1.2.4" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" + integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.18.0-next.2" -string.prototype.trimend@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" -string.prototype.trimstart@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" supports-color@^5.3.0: @@ -844,9 +874,9 @@ tape@4: through "~2.3.8" terser@^5.0.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -857,11 +887,32 @@ through@~2.3.4, through@~2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +unbox-primitive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" + integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.0" + has-symbols "^1.0.0" + which-boxed-primitive "^1.0.1" + vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== +which-boxed-primitive@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" From 607a60fb73f1f8ae8d642f13349517b0219996bd Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 10 Mar 2021 12:25:22 -0800 Subject: [PATCH 091/311] 6.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7364043052dc23..2c9b8f950caa36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.5.0", + "version": "6.6.0", "description": "Data-Driven Documents", "keywords": [ "dom", From b62d444a37338596cd6f0dcc2058d2599fa1eeab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20A=C3=A7=C4=B1kg=C3=B6z?= <40994272+emrez@users.noreply.github.com> Date: Tue, 16 Mar 2021 01:38:55 +0300 Subject: [PATCH 092/311] fix a typo in API.md --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index 1f176f562bb869..9993bef378fa84 100644 --- a/API.md +++ b/API.md @@ -51,7 +51,7 @@ Methods for computing basic summary statistics. * [d3.sum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sum) - compute the sum of an iterable of numbers. * [d3.mean](https://github.com/d3/d3-array/blob/v2.12.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. * [d3.median](https://github.com/d3/d3-array/blob/v2.12.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cumsum) - comute the cumulative sum of an iterable. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cumsum) - compute the cumulative sum of an iterable. * [d3.quantile](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantile) - compute a quantile for an iterable of numbers. * [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. * [d3.variance](https://github.com/d3/d3-array/blob/v2.12.0/README.md#variance) - compute the variance of an iterable of numbers. From cff66a429efa0fdf13f386bfc887b990cb39d009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Thu, 18 Mar 2021 14:42:41 +0100 Subject: [PATCH 093/311] add space --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index 9993bef378fa84..41319b7cf0277c 100644 --- a/API.md +++ b/API.md @@ -133,7 +133,7 @@ Bin discrete samples into continuous, non-overlapping intervals. * [d3.bin](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin) - create a new bin generator. * [*bin*](https://github.com/d3/d3-array/blob/v2.12.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_value)- specify a value accessor for each sample. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_value) - specify a value accessor for each sample. * [*bin*.domain](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_domain) - specify the interval of observable values. * [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_thresholds) - specify how values are divided into bins. * [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. From ff34b4c11e2240cca6b1ca0a4bad5da90844ece9 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 24 Mar 2021 09:48:57 -0700 Subject: [PATCH 094/311] d3-array 2.12.1 --- API.md | 184 +++++++++++++++++++++++++++--------------------------- yarn.lock | 24 +++---- 2 files changed, 104 insertions(+), 104 deletions(-) diff --git a/API.md b/API.md index 41319b7cf0277c..74be87206f74a6 100644 --- a/API.md +++ b/API.md @@ -35,115 +35,115 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.12.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.12.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.12.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v2.12.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.12.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.12.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.12.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.12.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.12.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.12.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.12.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.12.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.12.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.12.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v2.12.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v2.12.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v2.12.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v2.12.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v2.12.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v2.12.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v2.12.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v2.12.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.12.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.12.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.12.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.12.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.12.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.12.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.12.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v2.12.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v2.12.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v2.12.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v2.12.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v2.12.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.12.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.12.0/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.12.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.12.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.12.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.12.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.12.0/README.md#groupSort) - sort keys according to grouped values. -* [d3.count](https://github.com/d3/d3-array/blob/v2.12.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.12.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.12.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.12.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.12.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.12.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.12.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.12.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.12.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.12.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.12.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.12.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.12.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.12.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.12.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.12.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.12.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.12.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.12.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.12.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.12.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.12.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.12.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.12.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.12.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.12.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.12.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.12.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bins) +* [d3.group](https://github.com/d3/d3-array/blob/v2.12.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v2.12.1/README.md#groups) - group an iterable into a nested array. +* [d3.index](https://github.com/d3/d3-array/blob/v2.12.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v2.12.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v2.12.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v2.12.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.12.1/README.md#groupSort) - sort keys according to grouped values. +* [d3.count](https://github.com/d3/d3-array/blob/v2.12.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v2.12.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v2.12.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v2.12.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v2.12.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.12.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.12.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v2.12.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.12.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.12.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v2.12.1/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v2.12.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v2.12.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v2.12.1/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v2.12.1/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v2.12.1/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v2.12.1/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v2.12.1/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v2.12.1/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v2.12.1/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v2.12.1/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v2.12.1/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.12.1/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v2.12.1/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v2.12.1/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v2.12.1/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v2.12.1/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.12.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.12.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.12.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v2.12.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v2.12.0/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v2.12.1/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.12.0/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.12.0/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.12.1/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.12.1/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.1.0) diff --git a/yarn.lock b/yarn.lock index 14ca5ef34f7ebb..f5211322607a9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@types/node@*": - version "14.14.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.33.tgz#9e4f8c64345522e4e8ce77b334a8aaa64e2b6c78" - integrity sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g== + version "14.14.35" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" + integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== "@types/resolve@0.0.8": version "0.0.8" @@ -110,9 +110,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.0.tgz#68a74d153e52d6bf4608d9f6388cca48b42a4c3f" - integrity sha512-T6H/qNldyD/1OlRkJbonb3u3MPhNwju8OPxYv0YSjDb/B2RUeeBEHzIpNrYiinwpmz8+am+puMrpcrDWgY9wRg== + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== dependencies: internmap "^1.0.0" @@ -762,9 +762,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.41.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.41.0.tgz#b2a398bbabbf227738dedaef099e494aed468982" - integrity sha512-Gk76XHTggulWPH95q8V62bw6uqDH6UGvbD6LOa3QUyhuMF3eOuaeDHR7SLm1T9faitkpNrqzUAVYx47klcMnlA== + version "2.42.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.42.4.tgz#97c910a48bd0db6aaa4271dd48745870cbbbf970" + integrity sha512-Zqv3EvNfcllBHyyEUM754npqsZw82VIjK34cDQMwrQ1d6aqxzeYu5yFb7smGkPU4C1Bj7HupIMeT6WU7uIdnMw== optionalDependencies: fsevents "~2.3.1" @@ -874,9 +874,9 @@ tape@4: through "~2.3.8" terser@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" - integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + version "5.6.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" + integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== dependencies: commander "^2.20.0" source-map "~0.7.2" From 76c92ca5533acdd255be979ff5a3f26d1aa25da8 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 24 Mar 2021 09:49:01 -0700 Subject: [PATCH 095/311] 6.6.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2c9b8f950caa36..2e0b6b27167d69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.6.0", + "version": "6.6.1", "description": "Data-Driven Documents", "keywords": [ "dom", From 1836b64baabec6c410d83c88377d7fc9bdf06fbf Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 29 Mar 2021 09:40:48 -0700 Subject: [PATCH 096/311] update d3-scale --- API.md | 298 +++++++++++++++++++++++++++--------------------------- yarn.lock | 36 +++---- 2 files changed, 167 insertions(+), 167 deletions(-) diff --git a/API.md b/API.md index 74be87206f74a6..49252eb4f45822 100644 --- a/API.md +++ b/API.md @@ -865,173 +865,173 @@ Generate random numbers from various distributions. * [*random*.source](https://github.com/d3/d3-random/blob/v2.2.2/README.md#random_source) - set the source of randomness. * [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLcg) - a seeded pseudorandom number generator. -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.2) +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.4) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#continuous_copy) - create a copy of this scale. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#tickFormat) - format ticks for human consumption. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#symlog_constant) - set the constant of a symlog scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleIdentity) - creates an identity scale. -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleRadial) - creates a radial scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleUtc) - create a linear scale for UTC. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#tickFormat) - format ticks for human consumption. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleRadial) - creates a radial scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleUtc) - create a linear scale for UTC. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_sequential) - compute the range value corresponding to an input value. -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_domain) - set the input domain. -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_clamp) - enable clamping to the domain. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_range) - set the output range. -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_rangeRound) - set the output range and enable rounding. -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequential_copy) - create a copy of this scale. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialLog) - create a logarithmic sequential scale. -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialPow) - create a power sequential scale. -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging-scales) +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_clamp) - enable clamping to the domain. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. + +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_diverging) - compute the range value corresponding to an input value. -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_domain) - set the input domain. -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_clamp) - enable clamping to the domain or range. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_range) - set the output range. -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_rangeRound) - set the output range and enable rounding. -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_copy) - create a copy of this scale. -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#diverging_unknown) - set the output value for unknown inputs. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingLog) - create a diverging logarithmic scale. -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingPow) - create a diverging power scale. -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize-scales) +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_clamp) - enable clamping to the domain or range. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. + +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_range) - set the output range. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_range) - set the output range. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.2.2/README.md#point_copy) - create a copy of this scale. +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_copy) - create a copy of this scale. ## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index f5211322607a9d..f3b03b312b7047 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@types/node@*": - version "14.14.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" - integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== + version "14.14.37" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" + integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== "@types/resolve@0.0.8": version "0.0.8" @@ -254,9 +254,9 @@ d3-scale-chromatic@2: d3-interpolate "1 - 2" d3-scale@3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" - integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.4.tgz#13d758d7cf4e4f1fc40196a63597d01f3ed81765" + integrity sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA== dependencies: d3-array "^2.3.0" d3-format "1 - 2" @@ -440,7 +440,7 @@ glob@^7.1.3, glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -has-bigints@^1.0.0: +has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== @@ -455,7 +455,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -762,9 +762,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.42.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.42.4.tgz#97c910a48bd0db6aaa4271dd48745870cbbbf970" - integrity sha512-Zqv3EvNfcllBHyyEUM754npqsZw82VIjK34cDQMwrQ1d6aqxzeYu5yFb7smGkPU4C1Bj7HupIMeT6WU7uIdnMw== + version "2.44.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.44.0.tgz#8da324d1c4fd12beef9ae6e12f4068265b6d95eb" + integrity sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ== optionalDependencies: fsevents "~2.3.1" @@ -888,21 +888,21 @@ through@~2.3.4, through@~2.3.8: integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== dependencies: function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -which-boxed-primitive@^1.0.1: +which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== From 31d73d1fedb13ab7a99e147cf98b9d31305312d6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 29 Mar 2021 09:40:54 -0700 Subject: [PATCH 097/311] 6.6.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2e0b6b27167d69..659ac2f4a967dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.6.1", + "version": "6.6.2", "description": "Data-Driven Documents", "keywords": [ "dom", From a8ebbc5ba4c89f5b688c1ec2683f4260d9cb7963 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 15 Apr 2021 17:12:14 -0700 Subject: [PATCH 098/311] update d3-time, d3-scale --- API.md | 382 +++++++++++++++++++++++++++--------------------------- yarn.lock | 36 ++--- 2 files changed, 211 insertions(+), 207 deletions(-) diff --git a/API.md b/API.md index 49252eb4f45822..5158f771e9bc25 100644 --- a/API.md +++ b/API.md @@ -865,173 +865,173 @@ Generate random numbers from various distributions. * [*random*.source](https://github.com/d3/d3-random/blob/v2.2.2/README.md#random_source) - set the source of randomness. * [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLcg) - a seeded pseudorandom number generator. -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.2.4) +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.3.0) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#continuous_copy) - create a copy of this scale. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#tickFormat) - format ticks for human consumption. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#symlog_constant) - set the constant of a symlog scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleIdentity) - creates an identity scale. -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleRadial) - creates a radial scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleUtc) - create a linear scale for UTC. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#tickFormat) - format ticks for human consumption. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleRadial) - creates a radial scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleUtc) - create a linear scale for UTC. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_sequential) - compute the range value corresponding to an input value. -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_domain) - set the input domain. -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_clamp) - enable clamping to the domain. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_range) - set the output range. -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_rangeRound) - set the output range and enable rounding. -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequential_copy) - create a copy of this scale. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialLog) - create a logarithmic sequential scale. -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialPow) - create a power sequential scale. -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging-scales) +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_clamp) - enable clamping to the domain. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. + +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_diverging) - compute the range value corresponding to an input value. -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_domain) - set the input domain. -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_clamp) - enable clamping to the domain or range. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_range) - set the output range. -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_rangeRound) - set the output range and enable rounding. -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_copy) - create a copy of this scale. -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#diverging_unknown) - set the output value for unknown inputs. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingLog) - create a diverging logarithmic scale. -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingPow) - create a diverging power scale. -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize-scales) +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_clamp) - enable clamping to the domain or range. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. + +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_range) - set the output range. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_range) - set the output range. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.2.4/README.md#point_copy) - create a copy of this scale. +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_copy) - create a copy of this scale. ## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v2.0.0) @@ -1307,50 +1307,52 @@ Parse and format times, inspired by strptime and strftime. * [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. * [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. -## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v2.0.0) +## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v2.1.0) A calculator for humanity’s peculiar conventions of time. -* [d3.timeInterval](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeInterval) - implement a new custom time interval. -* [*interval*](https://github.com/d3/d3-time/blob/v2.0.0/README.md#_interval) - alias for *interval*.floor. -* [*interval*.floor](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_floor) - round down to the nearest boundary. -* [*interval*.round](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_round) - round to the nearest boundary. -* [*interval*.ceil](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_ceil) - round up to the nearest boundary. -* [*interval*.offset](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_offset) - offset a date by some number of intervals. -* [*interval*.range](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_range) - generate a range of dates at interval boundaries. -* [*interval*.filter](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_filter) - create a filtered subset of this interval. -* [*interval*.every](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_every) - create a filtered subset of this interval. -* [*interval*.count](https://github.com/d3/d3-time/blob/v2.0.0/README.md#interval_count) - count interval boundaries between two dates. -* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond) - the millisecond interval. -* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMillisecond) - aliases for millisecond.range. -* [d3.timeSecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond) - the second interval. -* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSecond) - aliases for second.range. -* [d3.timeMinute](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute) - the minute interval. -* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMinute) - aliases for minute.range. -* [d3.timeHour](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour) - the hour interval. -* [d3.timeHours](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeHour) - aliases for hour.range. -* [d3.timeDay](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay) - the day interval. -* [d3.timeDays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeDay) - aliases for day.range. -* [d3.timeWeek](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek) - aliases for sunday. -* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWeek) - aliases for week.range. -* [d3.timeSunday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday) - the week interval, starting on Sunday. -* [d3.timeSundays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSunday) - aliases for sunday.range. -* [d3.timeMonday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday) - the week interval, starting on Monday. -* [d3.timeMondays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonday) - aliases for monday.range. -* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday) - the week interval, starting on Tuesday. -* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeTuesday) - aliases for tuesday.range. -* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday) - the week interval, starting on Wednesday. -* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeWednesday) - aliases for wednesday.range. -* [d3.timeThursday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday) - the week interval, starting on Thursday. -* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeThursday) - aliases for thursday.range. -* [d3.timeFriday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday) - the week interval, starting on Friday. -* [d3.timeFridays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeFriday) - aliases for friday.range. -* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday) - the week interval, starting on Saturday. -* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeSaturday) - aliases for saturday.range. -* [d3.timeMonth](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth) - the month interval. -* [d3.timeMonths](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeMonth) - aliases for month.range. -* [d3.timeYear](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear) - the year interval. -* [d3.timeYears](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v2.0.0/README.md#timeYear) - aliases for year.range. +* [d3.timeInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeInterval) - implement a new custom time interval. +* [*interval*](https://github.com/d3/d3-time/blob/v2.1.0/README.md#_interval) - alias for *interval*.floor. +* [*interval*.floor](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_floor) - round down to the nearest boundary. +* [*interval*.round](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_round) - round to the nearest boundary. +* [*interval*.ceil](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_ceil) - round up to the nearest boundary. +* [*interval*.offset](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_offset) - offset a date by some number of intervals. +* [*interval*.range](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_range) - generate a range of dates at interval boundaries. +* [*interval*.filter](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_filter) - create a filtered subset of this interval. +* [*interval*.every](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_every) - create a filtered subset of this interval. +* [*interval*.count](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_count) - count interval boundaries between two dates. +* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond) - the millisecond interval. +* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond) - aliases for millisecond.range. +* [d3.timeSecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond) - the second interval. +* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond) - aliases for second.range. +* [d3.timeMinute](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute) - the minute interval. +* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute) - aliases for minute.range. +* [d3.timeHour](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour) - the hour interval. +* [d3.timeHours](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour) - aliases for hour.range. +* [d3.timeDay](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay) - the day interval. +* [d3.timeDays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay) - aliases for day.range. +* [d3.timeWeek](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek) - aliases for sunday. +* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek) - aliases for week.range. +* [d3.timeSunday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday) - the week interval, starting on Sunday. +* [d3.timeSundays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday) - aliases for sunday.range. +* [d3.timeMonday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday) - the week interval, starting on Monday. +* [d3.timeMondays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday) - aliases for monday.range. +* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday) - the week interval, starting on Tuesday. +* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday) - aliases for tuesday.range. +* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday) - the week interval, starting on Wednesday. +* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday) - aliases for wednesday.range. +* [d3.timeThursday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday) - the week interval, starting on Thursday. +* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday) - aliases for thursday.range. +* [d3.timeFriday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday) - the week interval, starting on Friday. +* [d3.timeFridays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday) - aliases for friday.range. +* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday) - the week interval, starting on Saturday. +* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday) - aliases for saturday.range. +* [d3.timeMonth](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth) - the month interval. +* [d3.timeMonths](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth) - aliases for month.range. +* [d3.timeYear](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear) - the year interval. +* [d3.timeYears](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear) - aliases for year.range. +* [d3.timeTicks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTicks), [d3.utcTicks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#utcTicks) - +* [d3.timeTickInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTickInterval), [d3.utcTickInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#utcTickInterval) - ## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v2.0.0) diff --git a/yarn.lock b/yarn.lock index f3b03b312b7047..5ca976b59ae9f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,9 +24,9 @@ js-tokens "^4.0.0" "@types/node@*": - version "14.14.37" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" - integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== + version "14.14.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" + integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g== "@types/resolve@0.0.8": version "0.0.8" @@ -48,9 +48,9 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== brace-expansion@^1.1.7: version "1.1.11" @@ -254,14 +254,14 @@ d3-scale-chromatic@2: d3-interpolate "1 - 2" d3-scale@3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.4.tgz#13d758d7cf4e4f1fc40196a63597d01f3ed81765" - integrity sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0.tgz#28c600b29f47e5b9cd2df9749c206727966203f3" + integrity sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ== dependencies: d3-array "^2.3.0" d3-format "1 - 2" d3-interpolate "1.2.0 - 2" - d3-time "1 - 2" + d3-time "^2.1.1" d3-time-format "2 - 3" d3-selection@2: @@ -283,10 +283,12 @@ d3-shape@2: dependencies: d3-time "1 - 2" -"d3-time@1 - 2", d3-time@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" - integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== +"d3-time@1 - 2", d3-time@2, d3-time@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682" + integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== + dependencies: + d3-array "2" "d3-timer@1 - 2", d3-timer@2: version "2.0.0" @@ -762,9 +764,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@2: - version "2.44.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.44.0.tgz#8da324d1c4fd12beef9ae6e12f4068265b6d95eb" - integrity sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ== + version "2.45.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48" + integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ== optionalDependencies: fsevents "~2.3.1" From 5149a2f8958f994814cb2f279338cbf381b06aa2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 15 Apr 2021 17:12:22 -0700 Subject: [PATCH 099/311] 6.7.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 659ac2f4a967dc..8cc4fdb06b2cd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.6.2", + "version": "6.7.0", "description": "Data-Driven Documents", "keywords": [ "dom", From 0f01226c2a0acb445f55139a4e7f93bc0906080f Mon Sep 17 00:00:00 2001 From: jombard Date: Thu, 13 May 2021 16:01:10 +0100 Subject: [PATCH 100/311] Fix broken markdown for link --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index 5158f771e9bc25..1346c78f360b56 100644 --- a/API.md +++ b/API.md @@ -163,7 +163,7 @@ Human-readable reference marks for scales. * [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeInner) - set the size of inner ticks. * [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. * [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickPadding) - set the padding between ticks and labels. -* [*axis*.offset]()https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_offset) - set the pixel offset for crisp edges. +* [*axis*.offset](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_offset) - set the pixel offset for crisp edges. ## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v2.0.0) From 23b0212743d22e2dea3e20163980b37e78b2a25b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 11 Jun 2021 10:50:19 -0700 Subject: [PATCH 101/311] Adopt type: module. (#3506) * remove Sublime project * adopt type=module; update dependencies * type: module * GitHub actions --- .eslintrc.json | 7 + .github/eslint.json | 18 + .github/workflows/node.js.yml | 30 + CHANGES.md | 14 +- ISSUE_TEMPLATE.md | 8 +- LICENSE | 40 +- README.md | 29 +- bundle.js | 2 + d3.sublime-project | 17 - package.json | 113 +-- rollup.config.js | 82 +- index.js => src/index.js | 1 - test/.eslintrc.json | 10 + test/d3-test.js | 25 +- test/test-exports.js | 13 - yarn.lock | 1679 +++++++++++++++++++++++---------- 16 files changed, 1406 insertions(+), 682 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .github/eslint.json create mode 100644 .github/workflows/node.js.yml create mode 100644 bundle.js delete mode 100644 d3.sublime-project rename index.js => src/index.js (95%) create mode 100644 test/.eslintrc.json delete mode 100644 test/test-exports.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000000000..2ce7cf23337070 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 8 + } +} diff --git a/.github/eslint.json b/.github/eslint.json new file mode 100644 index 00000000000000..c280fdbd53c7f6 --- /dev/null +++ b/.github/eslint.json @@ -0,0 +1,18 @@ +{ + "problemMatcher": [ + { + "owner": "eslint-compact", + "pattern": [ + { + "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5, + "code": 6 + } + ] + } + ] +} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 00000000000000..7e5ee593640e87 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,30 @@ +# https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Node.js CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [14.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: yarn --frozen-lockfile + - run: | + echo ::add-matcher::.github/eslint.json + yarn run eslint src test --format=compact + - run: yarn test diff --git a/CHANGES.md b/CHANGES.md index b55924450a5e65..8b37af8e5f2327 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,9 +1,19 @@ -# Changes in D3 6.0 +# Changes in D3 7.0 -[Released August 26, 2020.](https://github.com/d3/d3/releases/tag/v6.0.0) +[Released June 11, 2021.](https://github.com/d3/d3/releases/tag/v7.0.0) *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* +D3 now ships as pure ES modules, requiring Node.js 12 or higher. For more, please read [Sindre Sorhus’s FAQ](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c). + +[d3.bin](https://github.com/d3/d3-array/blob/main/README.md#bin) now ignores nulls. [d3.ascending](https://github.com/d3/d3-array/blob/main/README.md#ascending) and [d3.descending](https://github.com/d3/d3-array/blob/main/README.md#descending) no longer consider null comparable. + +[Ordinal scales](https://github.com/d3/d3-scale/blob/main/README.md#ordinal-scales) now use [InternMap](https://github.com/mbostock/internmap) for domains; domain values are now uniqued by coercing to a primitive value via *object*.valueOf instead of coercing to a string via *object*.toString. + +# Changes in D3 6.0 + +[Released August 26, 2020.](https://github.com/d3/d3/releases/tag/v6.0.0) + D3 now **uses native collections** (Map and Set) and **accepts iterables**. [d3.group and d3.rollup](https://observablehq.com/@d3/d3-group) are powerful new aggregation functions that replace d3.nest and work great [with d3-hierarchy](https://observablehq.com/d/9a453665f405eebf) and d3-selection. There are lots of new helpers in d3-array, too, such as [d3.greatest](https://observablehq.com/@d3/d3-least), [d3.quickselect](https://observablehq.com/@d3/d3-quickselect), and [d3.fsum](https://observablehq.com/@d3/d3-fsum). D3 now **passes events directly to listeners**, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks. diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 0b791d099a6322..e0700213b503db 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -4,9 +4,9 @@ If you ignore this message and ask for help anyway, your issue will be closed wi If you want help, please try one of the following forums instead: -Stack Overflow: https://stackoverflow.com/questions/tagged/d3.js -Slack: https://d3-slackin.herokuapp.com/ -Google Groups: https://groups.google.com/d/forum/d3-js -Observable: https://observablehq.com/@d3 +Observable: https://talk.observablehq.com/ +Stack Overflow: https://stackoverflow.com/questions/tagged/d3.js +Slack: https://d3-slackin.herokuapp.com/ +Google Groups: https://groups.google.com/d/forum/d3-js ARE YOU REPORTING A BUG, OR MAKING A FEATURE REQUEST? Please file an issue on the relevant D3 module, not here; see https://github.com/d3. Please isolate the specific methods that exhibit unexpected behavior and precisely describe how your expectations were not met. diff --git a/LICENSE b/LICENSE index 894ddc6549f17d..b0145150fd35f3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,27 +1,13 @@ -Copyright 2010-2020 Mike Bostock -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright 2010-2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/README.md b/README.md index 74058319051108..9d6e2700794a28 100644 --- a/README.md +++ b/README.md @@ -14,25 +14,42 @@ ## Installing -If you use npm, `npm install d3`. Otherwise, download the [latest release](https://github.com/d3/d3/releases/latest). The released bundle supports anonymous AMD, CommonJS, and vanilla environments. You can load directly from [d3js.org](https://d3js.org), [CDNJS](https://cdnjs.com/libraries/d3), or [unpkg](https://unpkg.com/d3/). For example: +If you use npm, `npm install d3`. You can also download the [latest release on GitHub](https://github.com/d3/d3/releases/latest). For vanilla HTML in modern browsers, import D3 from Skypack: ```html - + ``` -For the minified version: +For legacy environments, you can load D3’s UMD bundle from an npm-based CDN such as jsDelivr; a `d3` global is exported: ```html - + + ``` You can also use the standalone D3 microlibraries. For example, [d3-selection](https://github.com/d3/d3-selection): ```html - + ``` -D3 is written using [ES2015 modules](http://www.2ality.com/2014/09/es6-modules-final.html). Create a [custom bundle using Rollup](https://bl.ocks.org/mbostock/bb09af4c39c79cffcde4), Webpack, or your preferred bundler. To import D3 into an ES2015 application, either import specific symbols from specific D3 modules: +D3 is written using [ES2015 modules](http://www.2ality.com/2014/09/es6-modules-final.html). Create a custom bundle using Rollup, Webpack, or your preferred bundler. To import D3 into an ES2015 application, either import specific symbols from specific D3 modules: ```js import {scaleLinear} from "d3-scale"; diff --git a/bundle.js b/bundle.js new file mode 100644 index 00000000000000..b475ebe70e4bc2 --- /dev/null +++ b/bundle.js @@ -0,0 +1,2 @@ +export {version} from "./package.json"; +export * from "./src/index.js"; diff --git a/d3.sublime-project b/d3.sublime-project deleted file mode 100644 index 772dfa530160a4..00000000000000 --- a/d3.sublime-project +++ /dev/null @@ -1,17 +0,0 @@ -{ - "folders": [ - { - "path": ".", - "file_exclude_patterns": ["*.sublime-workspace"], - "folder_exclude_patterns": ["dist"] - } - ], - "build_systems": [ - { - "name": "yarn test", - "cmd": ["yarn", "test"], - "file_regex": "\\((...*?):([0-9]*):([0-9]*)\\)", - "working_dir": "$project_path" - } - ] -} diff --git a/package.json b/package.json index 8cc4fdb06b2cd2..28a817ecea1e16 100644 --- a/package.json +++ b/package.json @@ -2,77 +2,84 @@ "name": "d3", "version": "6.7.0", "description": "Data-Driven Documents", + "homepage": "https://d3js.org", + "repository": { + "type": "git", + "url": "https://github.com/d3/d3.git" + }, "keywords": [ + "d3", "dom", "visualization", "svg", "animation", "canvas" ], - "homepage": "https://d3js.org", - "license": "BSD-3-Clause", + "license": "ISC", "author": { "name": "Mike Bostock", "url": "https://bost.ocks.org/mike" }, - "main": "dist/d3.node.js", - "unpkg": "dist/d3.min.js", - "jsdelivr": "dist/d3.min.js", - "module": "index.js", - "repository": { - "type": "git", - "url": "https://github.com/d3/d3.git" - }, + "type": "module", "files": [ "dist/**/*.js", - "index.js" + "src/**/*.js" ], - "scripts": { - "pretest": "rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c", - "test": "tape 'test/**/*-test.js'", - "prepublishOnly": "yarn test", - "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js" + "module": "src/index.js", + "main": "src/index.js", + "jsdelivr": "dist/d3.min.js", + "unpkg": "dist/d3.min.js", + "exports": { + "umd": "./dist/d3.min.js", + "default": "./src/index.js" + }, + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "devDependencies": { - "json2module": "0.0", - "rimraf": "3", + "@rollup/plugin-json": "4", + "@rollup/plugin-node-resolve": "13", + "eslint": "7", + "mocha": "9", "rollup": "2", "rollup-plugin-ascii": "0.0", - "rollup-plugin-node-resolve": "5", - "rollup-plugin-terser": "7", - "tape": "4", - "tape-await": "0.1" + "rollup-plugin-terser": "7" }, - "dependencies": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" + "scripts": { + "test": "mocha 'test/**/*-test.js' && eslint src test", + "prepublishOnly": "rm -rf dist && yarn test && rollup -c && git push", + "postpublish": "git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd -" + }, + "engines": { + "node": ">=12" } } diff --git a/rollup.config.js b/rollup.config.js index 3a6a4ecacd45f1..eeb70e1eee7772 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,55 +1,53 @@ +import {readFileSync} from "fs"; +import json from "@rollup/plugin-json"; +import nodeResolve from "@rollup/plugin-node-resolve"; import ascii from "rollup-plugin-ascii"; -import node from "rollup-plugin-node-resolve"; import {terser} from "rollup-plugin-terser"; import * as meta from "./package.json"; -const copyright = `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`; +// Extract copyrights from the LICENSE. +const copyright = readFileSync("./LICENSE", "utf-8") + .split(/\n/g) + .filter(line => /^Copyright\s+/.test(line)) + .map(line => line.replace(/^Copyright\s+/, "")) + .join(", "); -function onwarn(message, warn) { - if (message.code === "CIRCULAR_DEPENDENCY") return; - warn(message); -} +const config = { + input: "bundle.js", + output: { + file: `dist/${meta.name}.js`, + name: "d3", + format: "umd", + indent: false, + extend: true, + banner: `// ${meta.homepage} v${meta.version} Copyright ${copyright}` + }, + plugins: [ + nodeResolve(), + json(), + ascii() + ], + onwarn(message, warn) { + if (message.code === "CIRCULAR_DEPENDENCY") return; + warn(message); + } +}; export default [ + config, { - input: "index.js", - external: Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)), + ...config, output: { - file: "dist/d3.node.js", - format: "cjs" + ...config.output, + file: `dist/${meta.name}.min.js` }, - onwarn - }, - { - input: "index.js", plugins: [ - node(), - ascii() - ], - output: { - extend: true, - banner: copyright, - file: "dist/d3.js", - format: "umd", - indent: false, - name: "d3" - }, - onwarn - }, - { - input: "index.js", - plugins: [ - node(), - ascii(), - terser({output: {preamble: copyright}}) - ], - output: { - extend: true, - file: "dist/d3.min.js", - format: "umd", - indent: false, - name: "d3" - }, - onwarn + ...config.plugins, + terser({ + output: { + preamble: config.output.banner + } + }) + ] } ]; diff --git a/index.js b/src/index.js similarity index 95% rename from index.js rename to src/index.js index 9dcf0bbdd49222..f33e31faeca82b 100644 --- a/index.js +++ b/src/index.js @@ -1,4 +1,3 @@ -export {version} from "./dist/package.js"; export * from "d3-array"; export * from "d3-axis"; export * from "d3-brush"; diff --git a/test/.eslintrc.json b/test/.eslintrc.json new file mode 100644 index 00000000000000..fa475efe36af90 --- /dev/null +++ b/test/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 11 + }, + "env": { + "mocha": true + } +} diff --git a/test/d3-test.js b/test/d3-test.js index 7589e71db8f488..ed781dc6760d48 100644 --- a/test/d3-test.js +++ b/test/d3-test.js @@ -1,12 +1,19 @@ -var tape = require("tape-await"), - d3 = require("../"), - d3Selection = require("d3-selection"), - testExports = require("./test-exports"); +import assert from "assert"; +import {readFileSync} from "fs"; +import {resolve, dirname} from "path"; +import {fileURLToPath} from "url"; +import * as d3 from "../src/index.js"; -tape("version matches package.json", function(test) { - test.equal(d3.version, require("../package.json").version); -}); +const packagePath = resolve(dirname(fileURLToPath(import.meta.url)), "../package.json"); +const packageData = JSON.parse(readFileSync(packagePath)); -for (var dependency in require("../package.json").dependencies) { - testExports(dependency); +for (const moduleName in packageData.dependencies) { + it(`d3 exports everything from ${moduleName}`, async () => { + const module = await import(moduleName); + for (const propertyName in module) { + if (propertyName !== "version") { + assert(propertyName in d3, `${moduleName} exports ${propertyName}`); + } + } + }); } diff --git a/test/test-exports.js b/test/test-exports.js deleted file mode 100644 index f7d3e33e0cfc02..00000000000000 --- a/test/test-exports.js +++ /dev/null @@ -1,13 +0,0 @@ -var tape = require("tape-await"), - d3 = require("../"); - -module.exports = function(moduleName) { - var module = require(moduleName); - tape("d3 exports everything from " + moduleName, function(test) { - for (var symbol in module) { - if (symbol !== "version") { - test.equal(symbol in d3, true, moduleName + " export " + symbol); - } - } - }); -}; diff --git a/yarn.lock b/yarn.lock index 5ca976b59ae9f3..052033f86ce808 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,44 +2,149 @@ # yarn lockfile v1 +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.10.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.12.13" + "@babel/highlight" "^7.14.5" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== -"@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@rollup/plugin-json@4": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@13": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" + integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/node@*": - version "14.14.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" - integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g== + version "15.12.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" + integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1, ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -47,11 +152,48 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -60,6 +202,18 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -70,13 +224,15 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== chalk@^2.0.0: version "2.4.2" @@ -87,6 +243,38 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -94,12 +282,29 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -commander@2, commander@^2.20.0: +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@7: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -109,302 +314,468 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" - integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - internmap "^1.0.0" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -d3-axis@2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.1.0.tgz#978db534092711117d032fad5d733d206307f6a0" - integrity sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw== +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.1.tgz#ca45c263f5bb780ab5a34a6e1d3d5883fe4a8d14" + integrity sha512-l3Bh5o8RSoC3SBm5ix6ogaFW+J6rOUm42yOtZ2sQPCEvCqUMepeX7zgrlLLGIemxgOyo9s2CsWEidnLv5PwwRw== + dependencies: + internmap "1 - 2" -d3-brush@2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.1.0.tgz#adadfbb104e8937af142e9a6e2028326f0471065" - integrity sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ== +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== dependencies: - d3-dispatch "1 - 2" - d3-drag "2" - d3-interpolate "1 - 2" - d3-selection "2" - d3-transition "2" + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" -d3-chord@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0.tgz#32491b5665391180560f738e5c1ccd1e3c47ebae" - integrity sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig== +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== dependencies: - d3-path "1 - 2" + d3-path "1 - 3" -"d3-color@1 - 2", d3-color@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" - integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== +"d3-color@1 - 3", d3-color@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.0.1.tgz#03316e595955d1fcd39d9f3610ad41bb90194d0a" + integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw== -d3-contour@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-2.0.0.tgz#80ee834988563e3bea9d99ddde72c0f8c089ea40" - integrity sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA== +d3-contour@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.1.tgz#2c64255d43059599cd0dba8fe4cc3d51ccdd9bbd" + integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ== dependencies: - d3-array "2" + d3-array "2 - 3" -d3-delaunay@5: - version "5.3.0" - resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-5.3.0.tgz#b47f05c38f854a4e7b3cea80e0bb12e57398772d" - integrity sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w== +d3-delaunay@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.2.tgz#7fd3717ad0eade2fc9939f4260acfb503f984e92" + integrity sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ== dependencies: - delaunator "4" + delaunator "5" -"d3-dispatch@1 - 2", d3-dispatch@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz#8a18e16f76dd3fcaef42163c97b926aa9b55e7cf" - integrity sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -d3-drag@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-2.0.0.tgz#9eaf046ce9ed1c25c88661911c1d5a4d8eb7ea6d" - integrity sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w== +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== dependencies: - d3-dispatch "1 - 2" - d3-selection "2" + d3-dispatch "1 - 3" + d3-selection "3" -"d3-dsv@1 - 2", d3-dsv@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0.tgz#b37b194b6df42da513a120d913ad1be22b5fe7c5" - integrity sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w== +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== dependencies: - commander "2" - iconv-lite "0.4" + commander "7" + iconv-lite "0.6" rw "1" -"d3-ease@1 - 2", d3-ease@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-2.0.0.tgz#fd1762bfca00dae4bacea504b1d628ff290ac563" - integrity sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ== +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== -d3-fetch@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-2.0.0.tgz#ecd7ef2128d9847a3b41b548fec80918d645c064" - integrity sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw== +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== dependencies: - d3-dsv "1 - 2" + d3-dsv "1 - 3" -d3-force@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.1.tgz#f20ccbf1e6c9e80add1926f09b51f686a8bc0937" - integrity sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== +d3-force@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.0.1.tgz#e41b81b2ab79277141ec1404aa5d05001da64084" + integrity sha512-hdL7+HBIohpgfolhBxr1KX47VMD6+vVD/oEFrxk5yhmzV2prk99EkFKYpXuhVkFpTgHdJ6/4bYcjdLPPXV4tIA== + +d3-geo@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.0.1.tgz#4f92362fd8685d93e3b1fae0fd97dc8980b1ed7e" + integrity sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.0.1.tgz#0365342d54972e38ca05e9143e0ab1c60846b3b5" + integrity sha512-RlLTaofEoOrMK1JoXYIGhKTkJFI/6rFrYPgxy6QlZo2BcVc4HGTqEU0rPpzuMq5T/5XcMtAzv1XiLA3zRTfygw== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +"d3-path@1 - 3", d3-path@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.0.1.tgz#f09dec0aaffd770b7995f1a399152bf93052321e" + integrity sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-scale-chromatic@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" + integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g== dependencies: - d3-dispatch "1 - 2" - d3-quadtree "1 - 2" - d3-timer "1 - 2" + d3-color "1 - 3" + d3-interpolate "1 - 3" -"d3-format@1 - 2", d3-format@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" - integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== - -d3-geo@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.1.tgz#2437fdfed3fe3aba2812bd8f30609cac83a7ee39" - integrity sha512-M6yzGbFRfxzNrVhxDJXzJqSLQ90q1cCyb3EWFZ1LF4eWOBYxFypw7I/NFVBNXKNqxv1bqLathhYvdJ6DC+th3A== +d3-scale@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.0.tgz#294377ea1d7e5a31509ee648b98d7916ac0b34e3" + integrity sha512-foHQYKpWQcyndH1CGoHdUC4PECxTxonzwwBXGT8qu+Drb1FIc6ON6dG2P5f4hRRMkLiIKeWK7iFtdznDUrnuPQ== dependencies: - d3-array ">=2.5" + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" -d3-hierarchy@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz#dab88a58ca3e7a1bc6cab390e89667fcc6d20218" - integrity sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw== +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -"d3-interpolate@1 - 2", "d3-interpolate@1.2.0 - 2", d3-interpolate@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163" - integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== +d3-shape@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.0.1.tgz#9ccdfb28fd9b0d12f2d8aec234cd5c4a9ea27931" + integrity sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw== dependencies: - d3-color "1 - 2" + d3-path "1 - 3" -"d3-path@1 - 2", d3-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8" - integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== +"d3-time-format@2 - 4", d3-time-format@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.0.0.tgz#930ded86a9de761702344760d8a25753467f28b7" + integrity sha512-nzaCwlj+ZVBIlFuVOT1RmU+6xb/7D5IcnhHzHQcBgS/aTa5K9fWZNN5LCXA27LgF5WxoSNJqKBbLcGMtM6Ca6A== + dependencies: + d3-time "1 - 3" -d3-polygon@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-2.0.0.tgz#13608ef042fbec625ba1598327564f03c0396d8e" - integrity sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ== +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975" + integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ== + dependencies: + d3-array "2 - 3" -"d3-quadtree@1 - 2", d3-quadtree@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d" - integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -d3-random@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.2.tgz#5eebd209ef4e45a2b362b019c1fb21c2c98cbb6e" - integrity sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw== +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" -d3-scale-chromatic@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz#c13f3af86685ff91323dc2f0ebd2dabbd72d8bab" - integrity sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA== +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== dependencies: - d3-color "1 - 2" - d3-interpolate "1 - 2" + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" -d3-scale@3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0.tgz#28c600b29f47e5b9cd2df9749c206727966203f3" - integrity sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ== +debug@4.3.1, debug@^4.0.1, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - d3-array "^2.3.0" - d3-format "1 - 2" - d3-interpolate "1.2.0 - 2" - d3-time "^2.1.1" - d3-time-format "2 - 3" + ms "2.1.2" -d3-selection@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0.tgz#94a11638ea2141b7565f883780dabc7ef6a61066" - integrity sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -d3-shape@2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.1.0.tgz#3b6a82ccafbc45de55b57fcf956c584ded3b666f" - integrity sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA== +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +delaunator@5: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" + integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== dependencies: - d3-path "1 - 2" + robust-predicates "^3.0.0" + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -"d3-time-format@2 - 3", d3-time-format@3: +doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" - integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - d3-time "1 - 2" + esutils "^2.0.2" -"d3-time@1 - 2", d3-time@2, d3-time@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682" - integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - d3-array "2" + ansi-colors "^4.1.1" -"d3-timer@1 - 2", d3-timer@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0.tgz#055edb1d170cfe31ab2da8968deee940b56623e6" - integrity sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -d3-transition@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0.tgz#366ef70c22ef88d1e34105f507516991a291c94c" - integrity sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog== - dependencies: - d3-color "1 - 2" - d3-dispatch "1 - 2" - d3-ease "1 - 2" - d3-interpolate "1 - 2" - d3-timer "1 - 2" +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -d3-zoom@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-2.0.0.tgz#f04d0afd05518becce879d04709c47ecd93fba54" - integrity sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw== - dependencies: - d3-dispatch "1 - 2" - d3-drag "2" - d3-interpolate "1 - 2" - d3-selection "2" - d3-transition "2" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" + esrecurse "^4.3.0" + estraverse "^4.1.1" -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - object-keys "^1.0.12" + eslint-visitor-keys "^1.1.0" -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -delaunator@4: +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@7: + version "7.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" + integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" - integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - minimatch "^3.0.4" + estraverse "^5.1.0" -es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + estraverse "^5.2.0" -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" -for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - is-callable "^1.1.3" + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== fs.realpath@^1.0.0: version "1.0.0" @@ -416,24 +787,32 @@ fsevents@~2.3.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -function-bind@^1.1.1, function-bind@~1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-parent@^5.1.2, glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" + is-glob "^4.0.1" -glob@^7.1.3, glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.1.7, glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -442,10 +821,17 @@ glob@^7.1.3, glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +globals@^13.6.0, globals@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + dependencies: + type-fest "^0.20.2" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== has-flag@^3.0.0: version "3.0.0" @@ -457,24 +843,42 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has@^1.0.3, has@~1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -iconv-lite@0.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - safer-buffer ">= 2.1.2 < 3" + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= inflight@^1.0.4: version "1.0.6" @@ -484,93 +888,76 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.4: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== +"internmap@1 - 2": + version "2.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.1.tgz#33d0fa016185397549fb1a14ea3dbe5a2949d1cd" + integrity sha512-Ujwccrj9FkGqjbY3iVoxD1VV+KdZZeENx0rphrtzmRXbFvkFO88L80BL/zeSIguX/7T+y8k04xqtgWgS5vxwxw== -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - call-bind "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-regex@^1.0.4, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-regex@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= jest-worker@^26.2.1: version "26.6.2" @@ -586,17 +973,85 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsesc@^2.2.0: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json2module@0.0: - version "0.0.3" - resolved "https://registry.yarnpkg.com/json2module/-/json2module-0.0.3.tgz#00fb5f4a9b7adfc3f0647c29cb17bcd1979be9b2" - integrity sha1-APtfSpt638PwZHwpyxe80Zeb6bI= +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - rw "^1.3.2" + yallist "^4.0.0" magic-string@^0.15.1: version "0.15.2" @@ -610,50 +1065,68 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== +mocha@9: + version "9.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.0.tgz#67ce848170cb6426f9e84c57e38376dc9017bab4" + integrity sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.23" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.4" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -object-inspect@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" +nanoid@3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== once@^1.3.0: version "1.4.0" @@ -662,15 +1135,78 @@ once@^1.3.0: dependencies: wrappy "1" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== randombytes@^2.1.0: version "2.1.0" @@ -679,15 +1215,34 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + picomatch "^2.2.1" -resolve@^1.11.1: +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.19.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -695,27 +1250,18 @@ resolve@^1.11.1: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@~1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - -rimraf@3: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +robust-predicates@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" + integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== + rollup-plugin-ascii@0.0: version "0.0.3" resolved "https://registry.yarnpkg.com/rollup-plugin-ascii/-/rollup-plugin-ascii-0.0.3.tgz#2057a6d65c00573d1ca5b2649ce4e531b042cde7" @@ -727,17 +1273,6 @@ rollup-plugin-ascii@0.0: magic-string "^0.15.1" rollup-pluginutils "^1.5.0" -rollup-plugin-node-resolve@5: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - rollup-plugin-terser@7: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -756,21 +1291,14 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - rollup@2: - version "2.45.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48" - integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ== + version "2.51.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.2.tgz#6de71e28c833089a0bd745a09671a3e2b92af6b7" + integrity sha512-ReV2eGEadA7hmXSzjxdDKs10neqH2QURf2RxJ6ayAlq93ugy6qIvXMmbc5cWMGCDh1h5T4thuWO1e2VNbMq8FA== optionalDependencies: fsevents "~2.3.1" -rw@1, rw@^1.3.2: +rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= @@ -780,11 +1308,25 @@ safe-buffer@^5.1.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +semver@^7.2.1: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -792,6 +1334,27 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -810,30 +1373,53 @@ source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -string.prototype.trim@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" - integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + ansi-regex "^3.0.0" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + ansi-regex "^5.0.0" + +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" @@ -842,80 +1428,157 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -tape-await@0.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tape-await/-/tape-await-0.1.2.tgz#41f99110a2bc4728732d8bc058278b2fbf3c0bec" - integrity sha512-Gt1bXilp9uRTVj+DecLDs37tP1XwGXfFzWVqQEfW7foO9TNacy+aN5TdT0Kv6LI5t/9l3iOE4nX2hr2SQ4+OSg== - -tape@4: - version "4.13.3" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" - integrity sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw== - dependencies: - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - function-bind "~1.1.1" - glob "~7.1.6" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.0.5" - minimist "~1.2.5" - object-inspect "~1.7.0" - resolve "~1.17.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.1" - through "~2.3.8" +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" terser@^5.0.0: - version "5.6.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.19" -through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" + is-number "^7.0.0" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workerpool@6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.4.tgz#6a972b6df82e38d50248ee2820aa98e2d0ad3090" + integrity sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From b98d63a7af47e65ea2c0caf0a269d8efa87bf1b3 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 11 Jun 2021 11:04:40 -0700 Subject: [PATCH 102/311] update API --- API.md | 2445 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 1225 insertions(+), 1220 deletions(-) diff --git a/API.md b/API.md index 1346c78f360b56..79df6ee6b0df07 100644 --- a/API.md +++ b/API.md @@ -35,1260 +35,1263 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v2.12.1) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v2.12.1/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.0.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v2.12.1/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v2.12.1/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v2.12.1/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v2.12.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v2.12.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.cumsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v2.12.1/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v2.12.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v2.12.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v2.12.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v2.12.1/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.0.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.0.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.0.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.1/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.0.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v2.12.1/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v2.12.1/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v2.12.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v2.12.1/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v2.12.1/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v2.12.1/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v2.12.1/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.0.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.0.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.group](https://github.com/d3/d3-array/blob/v2.12.1/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v2.12.1/README.md#groups) - group an iterable into a nested array. -* [d3.index](https://github.com/d3/d3-array/blob/v2.12.1/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v2.12.1/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v2.12.1/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v2.12.1/README.md#rollups) - reduce an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v2.12.1/README.md#groupSort) - sort keys according to grouped values. -* [d3.count](https://github.com/d3/d3-array/blob/v2.12.1/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v2.12.1/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v2.12.1/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v2.12.1/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v2.12.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v2.12.1/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v2.12.1/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v2.12.1/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v2.12.1/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v2.12.1/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v2.12.1/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v2.12.1/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v2.12.1/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v2.12.1/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v2.12.1/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v2.12.1/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v2.12.1/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v2.12.1/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v2.12.1/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v2.12.1/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v2.12.1/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v2.12.1/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v2.12.1/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v2.12.1/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v2.12.1/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v2.12.1/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v2.12.1/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v2.12.1/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.0.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.1/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.1/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.0.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.0.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.1/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.0.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.1/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.0.1/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.0.1/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.0.1/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.1/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.0.1/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.1/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.1/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.1/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.1/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.1/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.1/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.1/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.0.1/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v2.12.1/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v2.12.1/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v2.12.1/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.0.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v2.12.1/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.0.1/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v2.12.1/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v2.12.1/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.1/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.1/README.md#InternSet) - a value-interning Set. -## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v2.1.0) +## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) Human-readable reference marks for scales. -* [d3.axisTop](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisTop) - create a new top-oriented axis generator. -* [d3.axisRight](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisRight) - create a new right-oriented axis generator. -* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisBottom) - create a new bottom-oriented axis generator. -* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axisLeft) - create a new left-oriented axis generator. -* [*axis*](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#_axis) - generate an axis for the given selection. -* [*axis*.scale](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_scale) - set the scale. -* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_ticks) - customize how ticks are generated and formatted. -* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickArguments) - customize how ticks are generated and formatted. -* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickValues) - set the tick values explicitly. -* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickFormat) - set the tick format explicitly. -* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSize) - set the size of the ticks. -* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeInner) - set the size of inner ticks. -* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. -* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_tickPadding) - set the padding between ticks and labels. -* [*axis*.offset](https://github.com/d3/d3-axis/blob/v2.1.0/README.md#axis_offset) - set the pixel offset for crisp edges. - -## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v2.0.0) +* [d3.axisTop](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axisTop) - create a new top-oriented axis generator. +* [d3.axisRight](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axisRight) - create a new right-oriented axis generator. +* [d3.axisBottom](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axisBottom) - create a new bottom-oriented axis generator. +* [d3.axisLeft](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axisLeft) - create a new left-oriented axis generator. +* [*axis*](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#_axis) - generate an axis for the given selection. +* [*axis*.scale](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_scale) - set the scale. +* [*axis*.ticks](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_ticks) - customize how ticks are generated and formatted. +* [*axis*.tickArguments](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickArguments) - customize how ticks are generated and formatted. +* [*axis*.tickValues](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickValues) - set the tick values explicitly. +* [*axis*.tickFormat](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickFormat) - set the tick format explicitly. +* [*axis*.tickSize](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickSize) - set the size of the ticks. +* [*axis*.tickSizeInner](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickSizeInner) - set the size of inner ticks. +* [*axis*.tickSizeOuter](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickSizeOuter) - set the size of outer (extent) ticks. +* [*axis*.tickPadding](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_tickPadding) - set the padding between ticks and labels. +* [*axis*.offset](https://github.com/d3/d3-axis/blob/v3.0.0/README.md#axis_offset) - set the pixel offset for crisp edges. + +## [Brushes (d3-brush)](https://github.com/d3/d3-brush/tree/v3.0.0) Select a one- or two-dimensional region using the mouse or touch. -* [d3.brush](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush) - create a new two-dimensional brush. -* [d3.brushX](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushX) - create a brush along the *x*-dimension. -* [d3.brushY](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushY) - create a brush along the *y*-dimension. -* [*brush*](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#_brush) - apply the brush to a selection. -* [*brush*.move](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_move) - move the brush selection. -* [*brush*.clear](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_clear) - clear the brush selection. -* [*brush*.extent](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_extent) - define the brushable region. -* [*brush*.filter](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_filter) - control which input events initiate brushing. -* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_touchable) - set the touch support detector. -* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_keyModifiers) - enable or disable key interaction. -* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_handleSize) - set the size of the brush handles. -* [*brush*.on](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brush_on) - listen for brush events. -* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v2.0.0/README.md#brushSelection) - get the brush selection for a given node. - -## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v2.0.0) - -* [d3.chord](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord) - create a new chord layout. -* [*chord*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_chord) - compute the layout for the given matrix. -* [*chord*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_padAngle) - set the padding between adjacent groups. -* [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortGroups) - define the group order. -* [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortSubgroups) - define the source and target order within groups. -* [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chord_sortChords) - define the chord order across groups. -* [d3.chordDirected](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordDirected) - create a directed chord generator. -* [d3.chordTranspose](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#chordTranspose) - create a transposed chord generator. -* [d3.ribbon](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon) - create a ribbon shape generator. -* [*ribbon*](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#_ribbon) - generate a ribbon shape. -* [*ribbon*.source](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_source) - set the source accessor. -* [*ribbon*.target](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_target) - set the target accessor. -* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_radius) - set the ribbon source and target radius. -* [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_sourceRadius) - set the ribbon source radius. -* [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_targetRadius) - set the ribbon target radius. -* [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_startAngle) - set the ribbon source or target start angle. -* [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_endAngle) - set the ribbon source or target end angle. -* [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_padAngle) - set the pad angle accessor. -* [*ribbon*.context](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbon_context) - set the render context. -* [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow) - create an arrow ribbon generator. -* [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v2.0.0/README.md#ribbonArrow_headRadius) - set the arrowhead radius accessor. - -## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v2.0.0) +* [d3.brush](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush) - create a new two-dimensional brush. +* [d3.brushX](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brushX) - create a brush along the *x*-dimension. +* [d3.brushY](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brushY) - create a brush along the *y*-dimension. +* [*brush*](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#_brush) - apply the brush to a selection. +* [*brush*.move](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_move) - move the brush selection. +* [*brush*.clear](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_clear) - clear the brush selection. +* [*brush*.extent](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_extent) - define the brushable region. +* [*brush*.filter](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_filter) - control which input events initiate brushing. +* [*brush*.touchable](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_touchable) - set the touch support detector. +* [*brush*.keyModifiers](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_keyModifiers) - enable or disable key interaction. +* [*brush*.handleSize](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_handleSize) - set the size of the brush handles. +* [*brush*.on](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brush_on) - listen for brush events. +* [d3.brushSelection](https://github.com/d3/d3-brush/blob/v3.0.0/README.md#brushSelection) - get the brush selection for a given node. + +## [Chords (d3-chord)](https://github.com/d3/d3-chord/tree/v3.0.1) + +* [d3.chord](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chord) - create a new chord layout. +* [*chord*](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#_chord) - compute the layout for the given matrix. +* [*chord*.padAngle](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chord_padAngle) - set the padding between adjacent groups. +* [*chord*.sortGroups](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chord_sortGroups) - define the group order. +* [*chord*.sortSubgroups](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chord_sortSubgroups) - define the source and target order within groups. +* [*chord*.sortChords](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chord_sortChords) - define the chord order across groups. +* [d3.chordDirected](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chordDirected) - create a directed chord generator. +* [d3.chordTranspose](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#chordTranspose) - create a transposed chord generator. +* [d3.ribbon](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon) - create a ribbon shape generator. +* [*ribbon*](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#_ribbon) - generate a ribbon shape. +* [*ribbon*.source](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_source) - set the source accessor. +* [*ribbon*.target](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_target) - set the target accessor. +* [*ribbon*.radius](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_radius) - set the ribbon source and target radius. +* [*ribbon*.sourceRadius](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_sourceRadius) - set the ribbon source radius. +* [*ribbon*.targetRadius](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_targetRadius) - set the ribbon target radius. +* [*ribbon*.startAngle](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_startAngle) - set the ribbon source or target start angle. +* [*ribbon*.endAngle](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_endAngle) - set the ribbon source or target end angle. +* [*ribbon*.padAngle](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_padAngle) - set the pad angle accessor. +* [*ribbon*.context](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbon_context) - set the render context. +* [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbonArrow) - create an arrow ribbon generator. +* [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbonArrow_headRadius) - set the arrowhead radius accessor. + +## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v3.0.1) Color manipulation and color space conversion. -* [d3.color](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color) - parse the given CSS color specifier. -* [*color*.opacity](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_opacity) - the color’s opacity. -* [*color*.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_rgb) - compute the RGB equivalent of this color. -* [*color*.copy](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_copy) - return a copy of this color. -* [*color*.brighter](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_brighter) - create a brighter copy of this color. -* [*color*.darker](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_darker) - create a darker copy of this color. -* [*color*.displayable](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. -* [*color*.formatHex](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. -* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatHsl) - returns the RGB string representation of this color. -* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_formatRgb) - returns the HSL string representation of this color. -* [*color*.toString](https://github.com/d3/d3-color/blob/v2.0.0/README.md#color_toString) - returns the RGB string representation of this color. -* [d3.rgb](https://github.com/d3/d3-color/blob/v2.0.0/README.md#rgb) - create a new RGB color. -* [d3.hsl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hsl) - create a new HSL color. -* [d3.lab](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lab) - create a new Lab color. -* [d3.gray](https://github.com/d3/d3-color/blob/v2.0.0/README.md#gray) - create a new Lab gray. -* [d3.hcl](https://github.com/d3/d3-color/blob/v2.0.0/README.md#hcl) - create a new HCL color. -* [d3.lch](https://github.com/d3/d3-color/blob/v2.0.0/README.md#lch) - create a new HCL color. -* [d3.cubehelix](https://github.com/d3/d3-color/blob/v2.0.0/README.md#cubehelix) - create a new Cubehelix color. - -## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v2.0.0) +* [d3.color](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color) - parse the given CSS color specifier. +* [*color*.opacity](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_opacity) - the color’s opacity. +* [*color*.rgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.copy](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_copy) - return a copy of this color. +* [*color*.brighter](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_brighter) - create a brighter copy of this color. +* [*color*.darker](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_darker) - create a darker copy of this color. +* [*color*.displayable](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_displayable) - returns true if the color is displayable on standard hardware. +* [*color*.formatHex](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. +* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatHsl) - returns the RGB string representation of this color. +* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatRgb) - returns the HSL string representation of this color. +* [*color*.toString](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_toString) - returns the RGB string representation of this color. +* [d3.rgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#rgb) - create a new RGB color. +* [d3.hsl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#hsl) - create a new HSL color. +* [d3.lab](https://github.com/d3/d3-color/blob/v3.0.1/README.md#lab) - create a new Lab color. +* [d3.gray](https://github.com/d3/d3-color/blob/v3.0.1/README.md#gray) - create a new Lab gray. +* [d3.hcl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#hcl) - create a new HCL color. +* [d3.lch](https://github.com/d3/d3-color/blob/v3.0.1/README.md#lch) - create a new HCL color. +* [d3.cubehelix](https://github.com/d3/d3-color/blob/v3.0.1/README.md#cubehelix) - create a new Cubehelix color. + +## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v3.0.0) Color ramps and palettes for quantitative, ordinal and categorical scales. ### Categorical -* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeCategory10) - an array of ten categorical colors. -* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeAccent) - an array of eight categorical colors. -* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeDark2) - an array of eight categorical colors. -* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePaired) - an array of twelve categorical colors. -* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel1) - an array of nine categorical colors. -* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePastel2) - an array of eight categorical colors. -* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet1) - an array of nine categorical colors. -* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet2) - an array of eight categorical colors. -* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSet3) - an array of twelve categorical colors. -* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeTableau10) - an array of ten categorical colors. +* [d3.schemeCategory10](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeCategory10) - an array of ten categorical colors. +* [d3.schemeAccent](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeAccent) - an array of eight categorical colors. +* [d3.schemeDark2](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeDark2) - an array of eight categorical colors. +* [d3.schemePaired](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePaired) - an array of twelve categorical colors. +* [d3.schemePastel1](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePastel1) - an array of nine categorical colors. +* [d3.schemePastel2](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePastel2) - an array of eight categorical colors. +* [d3.schemeSet1](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeSet1) - an array of nine categorical colors. +* [d3.schemeSet2](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeSet2) - an array of eight categorical colors. +* [d3.schemeSet3](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeSet3) - an array of twelve categorical colors. +* [d3.schemeTableau10](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeTableau10) - an array of ten categorical colors. ### Diverging -* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBrBG) - ColorBrewer BrBG interpolator. -* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePiYG) - ColorBrewer PiYG interpolator. -* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePRGn) - ColorBrewer PRGn interpolator. -* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuOr) - ColorBrewer PuOr interpolator. -* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdBu) - ColorBrewer RdBu interpolator. -* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdGy) - ColorBrewer RdGy interpolator. -* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlBu) - ColorBrewer RdYlBu interpolator. -* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdYlGn) - ColorBrewer RdYlGn interpolator. -* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSpectral) - ColorBrewer spectral interpolator. -* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBrBG) - ColorBrewer BrBG scheme. -* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePiYG) - ColorBrewer PiYG scheme. -* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePRGn) - ColorBrewer PRGn scheme. -* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuOr) - ColorBrewer PuOr scheme. -* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdBu) - ColorBrewer RdBu scheme. -* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdGy) - ColorBrewer RdGy scheme. -* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlBu) - ColorBrewer RdYlBu scheme. -* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdYlGn) - ColorBrewer RdYlGn scheme. -* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeSpectral) - ColorBrewer spectral scheme. +* [d3.interpolateBrBG](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateBrBG) - ColorBrewer BrBG interpolator. +* [d3.interpolatePiYG](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePiYG) - ColorBrewer PiYG interpolator. +* [d3.interpolatePRGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePRGn) - ColorBrewer PRGn interpolator. +* [d3.interpolatePuOr](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePuOr) - ColorBrewer PuOr interpolator. +* [d3.interpolateRdBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRdBu) - ColorBrewer RdBu interpolator. +* [d3.interpolateRdGy](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRdGy) - ColorBrewer RdGy interpolator. +* [d3.interpolateRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRdYlBu) - ColorBrewer RdYlBu interpolator. +* [d3.interpolateRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRdYlGn) - ColorBrewer RdYlGn interpolator. +* [d3.interpolateSpectral](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateSpectral) - ColorBrewer spectral interpolator. +* [d3.schemeBrBG](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeBrBG) - ColorBrewer BrBG scheme. +* [d3.schemePiYG](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePiYG) - ColorBrewer PiYG scheme. +* [d3.schemePRGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePRGn) - ColorBrewer PRGn scheme. +* [d3.schemePuOr](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePuOr) - ColorBrewer PuOr scheme. +* [d3.schemeRdBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeRdBu) - ColorBrewer RdBu scheme. +* [d3.schemeRdGy](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeRdGy) - ColorBrewer RdGy scheme. +* [d3.schemeRdYlBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeRdYlBu) - ColorBrewer RdYlBu scheme. +* [d3.schemeRdYlGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeRdYlGn) - ColorBrewer RdYlGn scheme. +* [d3.schemeSpectral](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeSpectral) - ColorBrewer spectral scheme. ### Sequential (Single Hue) -* [d3.interpolateBlues](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBlues) - -* [d3.interpolateGreens](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGreens) - -* [d3.interpolateGreys](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGreys) - -* [d3.interpolateOranges](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOranges) - -* [d3.interpolatePurples](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePurples) - -* [d3.interpolateReds](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateReds) - -* [d3.schemeBlues](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBlues) - -* [d3.schemeGreens](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGreens) - -* [d3.schemeGreys](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGreys) - -* [d3.schemeOranges](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOranges) - -* [d3.schemePurples](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePurples) - -* [d3.schemeReds](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeReds) - +* [d3.interpolateBlues](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateBlues) - +* [d3.interpolateGreens](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateGreens) - +* [d3.interpolateGreys](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateGreys) - +* [d3.interpolateOranges](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateOranges) - +* [d3.interpolatePurples](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePurples) - +* [d3.interpolateReds](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateReds) - +* [d3.schemeBlues](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeBlues) - +* [d3.schemeGreens](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeGreens) - +* [d3.schemeGreys](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeGreys) - +* [d3.schemeOranges](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeOranges) - +* [d3.schemePurples](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePurples) - +* [d3.schemeReds](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeReds) - ### Sequential (Multi-Hue) -* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuGn) - ColorBrewer BuGn interpolator. -* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateBuPu) - ColorBrewer BuPu interpolator. -* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCividis) - cividis interpolator. -* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCool) - cool interpolator. -* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateCubehelixDefault) - cubehelix interpolator. -* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateGnBu) - ColorBrewer GnBu interpolator. -* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateInferno) - inferno interpolator. -* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateMagma) - magma interpolator. -* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateOrRd) - ColorBrewer OrRd interpolator. -* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePlasma) - plasma interpolator. -* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBu) - ColorBrewer PuBu interpolator. -* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuBuGn) - ColorBrewer PuBuGn interpolator. -* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolatePuRd) - ColorBrewer PuRd interpolator. -* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRdPu) - ColorBrewer RdPu interpolator. -* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateTurbo) - turbo interpolator. -* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateViridis) - viridis interpolator. -* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateWarm) - warm interpolator. -* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGn) - ColorBrewer YlGn interpolator. -* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlGnBu) - ColorBrewer YlGnBu interpolator. -* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrBr) - ColorBrewer YlOrBr interpolator. -* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateYlOrRd) - ColorBrewer YlOrRd interpolator. -* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuGn) - ColorBrewer BuGn scheme. -* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeBuPu) - ColorBrewer BuPu scheme. -* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeGnBu) - ColorBrewer GnBu scheme. -* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeOrRd) - ColorBrewer OrRd scheme. -* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBu) - ColorBrewer PuBu scheme. -* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuBuGn) - ColorBrewer PuBuGn scheme. -* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemePuRd) - ColorBrewer PuRd scheme. -* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeRdPu) - ColorBrewer RdPu scheme. -* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGn) - ColorBrewer YlGn scheme. -* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlGnBu) - ColorBrewer YlGnBu scheme. -* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrBr) - ColorBrewer YlOrBr scheme. -* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#schemeYlOrRd) - ColorBrewer YlOrRd scheme. +* [d3.interpolateBuGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateBuGn) - ColorBrewer BuGn interpolator. +* [d3.interpolateBuPu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateBuPu) - ColorBrewer BuPu interpolator. +* [d3.interpolateCividis](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateCividis) - cividis interpolator. +* [d3.interpolateCool](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateCool) - cool interpolator. +* [d3.interpolateCubehelixDefault](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateCubehelixDefault) - cubehelix interpolator. +* [d3.interpolateGnBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateGnBu) - ColorBrewer GnBu interpolator. +* [d3.interpolateInferno](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateInferno) - inferno interpolator. +* [d3.interpolateMagma](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateMagma) - magma interpolator. +* [d3.interpolateOrRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateOrRd) - ColorBrewer OrRd interpolator. +* [d3.interpolatePlasma](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePlasma) - plasma interpolator. +* [d3.interpolatePuBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePuBu) - ColorBrewer PuBu interpolator. +* [d3.interpolatePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePuBuGn) - ColorBrewer PuBuGn interpolator. +* [d3.interpolatePuRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolatePuRd) - ColorBrewer PuRd interpolator. +* [d3.interpolateRdPu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRdPu) - ColorBrewer RdPu interpolator. +* [d3.interpolateTurbo](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateTurbo) - turbo interpolator. +* [d3.interpolateViridis](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateViridis) - viridis interpolator. +* [d3.interpolateWarm](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateWarm) - warm interpolator. +* [d3.interpolateYlGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateYlGn) - ColorBrewer YlGn interpolator. +* [d3.interpolateYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateYlGnBu) - ColorBrewer YlGnBu interpolator. +* [d3.interpolateYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateYlOrBr) - ColorBrewer YlOrBr interpolator. +* [d3.interpolateYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateYlOrRd) - ColorBrewer YlOrRd interpolator. +* [d3.schemeBuGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeBuGn) - ColorBrewer BuGn scheme. +* [d3.schemeBuPu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeBuPu) - ColorBrewer BuPu scheme. +* [d3.schemeGnBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeGnBu) - ColorBrewer GnBu scheme. +* [d3.schemeOrRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeOrRd) - ColorBrewer OrRd scheme. +* [d3.schemePuBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePuBu) - ColorBrewer PuBu scheme. +* [d3.schemePuBuGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePuBuGn) - ColorBrewer PuBuGn scheme. +* [d3.schemePuRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemePuRd) - ColorBrewer PuRd scheme. +* [d3.schemeRdPu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeRdPu) - ColorBrewer RdPu scheme. +* [d3.schemeYlGn](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeYlGn) - ColorBrewer YlGn scheme. +* [d3.schemeYlGnBu](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeYlGnBu) - ColorBrewer YlGnBu scheme. +* [d3.schemeYlOrBr](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeYlOrBr) - ColorBrewer YlOrBr scheme. +* [d3.schemeYlOrRd](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#schemeYlOrRd) - ColorBrewer YlOrRd scheme. ### Cyclical -* [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow -* [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v2.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow +* [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow +* [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow -## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v2.0.0) +## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.0.1) Compute contour polygons using marching squares. -* [d3.contours](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours) - create a new contour generator. -* [*contours*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_contours) - compute the contours for a given grid of values. -* [*contours*.contour](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_contour) - compute a contour for a given value. -* [*contours*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_size) - set the size of a contour generator. -* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_smooth) - set whether or not the generated contours are smoothed. -* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contours_thresholds) - set the thresholds of a contour generator. -* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#contourDensity) - create a new density estimator. -* [*density*](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#_density) - estimate the density of a given array of samples. -* [*density*.x](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_x) - set the *x* accessor of the density estimator. -* [*density*.y](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_y) - set the *y* accessor of the density estimator. -* [*density*.weight](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_weight) - set the *weight* accessor of the density estimator. -* [*density*.size](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_size) - set the size of the density estimator. -* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_cellSize) - set the cell size of the density estimator. -* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_thresholds) - set the thresholds of the density estimator. -* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v2.0.0/README.md#density_bandwidth) - set the bandwidth of the density estimator. - -## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v5.3.0) +* [d3.contours](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours) - create a new contour generator. +* [*contours*](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#_contours) - compute the contours for a given grid of values. +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_contour) - compute a contour for a given value. +* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_size) - set the size of a contour generator. +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_smooth) - set whether or not the generated contours are smoothed. +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_thresholds) - set the thresholds of a contour generator. +* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contourDensity) - create a new density estimator. +* [*density*](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#_density) - estimate the density of a given array of samples. +* [*density*.x](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_x) - set the *x* accessor of the density estimator. +* [*density*.y](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_y) - set the *y* accessor of the density estimator. +* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_weight) - set the *weight* accessor of the density estimator. +* [*density*.size](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_size) - set the size of the density estimator. +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_cellSize) - set the cell size of the density estimator. +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_thresholds) - set the thresholds of the density estimator. +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_bandwidth) - set the bandwidth of the density estimator. + +## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v6.0.2) Compute the Voronoi diagram of a set of two-dimensional points. -* [new Delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#new_Delaunay) - create a delaunay triangulation for an array of point coordinates. -* [Delaunay.from](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_from) - create a delaunay triangulation for an iterable of points. -* [*delaunay*.points](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_points) - the coordinates of the points. -* [*delaunay*.halfedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_halfedges) - the delaunay halfedges. -* [*delaunay*.hull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hull) - the convex hull as point indices. -* [*delaunay*.triangles](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_triangles) - the delaunay triangles. -* [*delaunay*.inedges](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_inedges) - the delaunay inedges -* [*delaunay*.find](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_find) - find the closest point in the delaunay triangulation. -* [*delaunay*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_neighbors) - the neighbors of a point in the delaunay triangulation. -* [*delaunay*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_render) - render the edges of the delaunay triangulation. -* [*delaunay*.renderHull](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderHull) - render the convex hull. -* [*delaunay*.renderTriangle](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderTriangle) - render a triangle. -* [*delaunay*.renderPoints](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_renderPoints) - render the points. -* [*delaunay*.hullPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_hullPolygon) - the closed convex hull as point coordinates. -* [*delaunay*.trianglePolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygons) - iterate over all the triangles as polygons. -* [*delaunay*.trianglePolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_trianglePolygon) - return a triangle as a polygon. -* [*delaunay*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_update) - update a delaunay triangulation in place. -* [*delaunay*.voronoi](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#delaunay_voronoi) - compute the voronoi diagram associated with a delaunay triangulation. -* [*voronoi*.delaunay](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_delaunay) - the voronoi diagram’s source delaunay triangulation. -* [*voronoi*.circumcenters](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_circumcenters) - the triangles’ circumcenters. -* [*voronoi*.vectors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_vectors) - directions for the outer (infinite) cells of the voronoi diagram. -* [*voronoi*.xmin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmin) - set the *xmin* bound of the extent. -* [*voronoi*.ymin](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymin) - set the *ymin* bound of the extent. -* [*voronoi*.xmax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_xmax) - set the *xmax* bound of the extent. -* [*voronoi*.ymax](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_ymax) - set the *ymax* bound of the extent. -* [*voronoi*.contains](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_contains) - test whether a point is inside a voronoi cell. -* [*voronoi*.neighbors](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_neighbors) - the neighbors of a point in the voronoi diagram. -* [*voronoi*.render](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_render) - render the mesh of voronoi cells. -* [*voronoi*.renderBounds](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderBounds) - render the extent. -* [*voronoi*.renderCell](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_renderCell) - render a voronoi cell. -* [*voronoi*.cellPolygons](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygons) - iterate over all the cells as polygons. -* [*voronoi*.cellPolygon](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_cellPolygon) - return a cell as a polygon. -* [*voronoi*.update](https://github.com/d3/d3-delaunay/blob/v5.3.0/README.md#voronoi_update) - update a voronoi diagram in place. - -## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v2.0.0) +* [new Delaunay](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#new_Delaunay) - create a delaunay triangulation for an array of point coordinates. +* [Delaunay.from](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_from) - create a delaunay triangulation for an iterable of points. +* [*delaunay*.points](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_points) - the coordinates of the points. +* [*delaunay*.halfedges](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_halfedges) - the delaunay halfedges. +* [*delaunay*.hull](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_hull) - the convex hull as point indices. +* [*delaunay*.triangles](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_triangles) - the delaunay triangles. +* [*delaunay*.inedges](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_inedges) - the delaunay inedges +* [*delaunay*.find](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_find) - find the closest point in the delaunay triangulation. +* [*delaunay*.neighbors](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_neighbors) - the neighbors of a point in the delaunay triangulation. +* [*delaunay*.render](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_render) - render the edges of the delaunay triangulation. +* [*delaunay*.renderHull](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_renderHull) - render the convex hull. +* [*delaunay*.renderTriangle](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_renderTriangle) - render a triangle. +* [*delaunay*.renderPoints](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_renderPoints) - render the points. +* [*delaunay*.hullPolygon](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_hullPolygon) - the closed convex hull as point coordinates. +* [*delaunay*.trianglePolygons](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_trianglePolygons) - iterate over all the triangles as polygons. +* [*delaunay*.trianglePolygon](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_trianglePolygon) - return a triangle as a polygon. +* [*delaunay*.update](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_update) - update a delaunay triangulation in place. +* [*delaunay*.voronoi](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#delaunay_voronoi) - compute the voronoi diagram associated with a delaunay triangulation. +* [*voronoi*.delaunay](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_delaunay) - the voronoi diagram’s source delaunay triangulation. +* [*voronoi*.circumcenters](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_circumcenters) - the triangles’ circumcenters. +* [*voronoi*.vectors](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_vectors) - directions for the outer (infinite) cells of the voronoi diagram. +* [*voronoi*.xmin](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_xmin) - set the *xmin* bound of the extent. +* [*voronoi*.ymin](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_ymin) - set the *ymin* bound of the extent. +* [*voronoi*.xmax](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_xmax) - set the *xmax* bound of the extent. +* [*voronoi*.ymax](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_ymax) - set the *ymax* bound of the extent. +* [*voronoi*.contains](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_contains) - test whether a point is inside a voronoi cell. +* [*voronoi*.neighbors](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_neighbors) - the neighbors of a point in the voronoi diagram. +* [*voronoi*.render](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_render) - render the mesh of voronoi cells. +* [*voronoi*.renderBounds](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_renderBounds) - render the extent. +* [*voronoi*.renderCell](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_renderCell) - render a voronoi cell. +* [*voronoi*.cellPolygons](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_cellPolygons) - iterate over all the cells as polygons. +* [*voronoi*.cellPolygon](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_cellPolygon) - return a cell as a polygon. +* [*voronoi*.update](https://github.com/d3/d3-delaunay/blob/v6.0.2/README.md#voronoi_update) - update a voronoi diagram in place. + +## [Dispatches (d3-dispatch)](https://github.com/d3/d3-dispatch/tree/v3.0.1) Separate concerns using named callbacks. -* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch) - create a custom event dispatcher. -* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_on) - register or unregister an event listener. -* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_copy) - create a copy of a dispatcher. -* [*dispatch*.call](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_call) - dispatch an event to registered listeners. -* [*dispatch*.apply](https://github.com/d3/d3-dispatch/blob/v2.0.0/README.md#dispatch_apply) - dispatch an event to registered listeners. +* [d3.dispatch](https://github.com/d3/d3-dispatch/blob/v3.0.1/README.md#dispatch) - create a custom event dispatcher. +* [*dispatch*.on](https://github.com/d3/d3-dispatch/blob/v3.0.1/README.md#dispatch_on) - register or unregister an event listener. +* [*dispatch*.copy](https://github.com/d3/d3-dispatch/blob/v3.0.1/README.md#dispatch_copy) - create a copy of a dispatcher. +* [*dispatch*.call](https://github.com/d3/d3-dispatch/blob/v3.0.1/README.md#dispatch_call) - dispatch an event to registered listeners. +* [*dispatch*.apply](https://github.com/d3/d3-dispatch/blob/v3.0.1/README.md#dispatch_apply) - dispatch an event to registered listeners. -## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v2.0.0) +## [Dragging (d3-drag)](https://github.com/d3/d3-drag/tree/v3.0.0) Drag and drop SVG, HTML or Canvas using mouse or touch input. -* [d3.drag](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag) - create a drag behavior. -* [*drag*](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#_drag) - apply the drag behavior to a selection. -* [*drag*.container](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_container) - set the coordinate system. -* [*drag*.filter](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_filter) - ignore some initiating input events. -* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_touchable) - set the touch support detector. -* [*drag*.subject](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_subject) - set the thing being dragged. -* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_clickDistance) - set the click distance threshold. -* [*drag*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#drag_on) - listen for drag events. -* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragDisable) - prevent native drag-and-drop and text selection. -* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#dragEnable) - enable native drag-and-drop and text selection. -* [*event*.on](https://github.com/d3/d3-drag/blob/v2.0.0/README.md#event_on) - listen for drag events on the current gesture. +* [d3.drag](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag) - create a drag behavior. +* [*drag*](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#_drag) - apply the drag behavior to a selection. +* [*drag*.container](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_container) - set the coordinate system. +* [*drag*.filter](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_filter) - ignore some initiating input events. +* [*drag*.touchable](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_touchable) - set the touch support detector. +* [*drag*.subject](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_subject) - set the thing being dragged. +* [*drag*.clickDistance](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_clickDistance) - set the click distance threshold. +* [*drag*.on](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#drag_on) - listen for drag events. +* [d3.dragDisable](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#dragDisable) - prevent native drag-and-drop and text selection. +* [d3.dragEnable](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#dragEnable) - enable native drag-and-drop and text selection. +* [*event*.on](https://github.com/d3/d3-drag/blob/v3.0.0/README.md#event_on) - listen for drag events on the current gesture. -## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v2.0.0) +## [Delimiter-Separated Values (d3-dsv)](https://github.com/d3/d3-dsv/tree/v3.0.1) Parse and format delimiter-separated values, most commonly CSV and TSV. -* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParse) - parse the given CSV string, returning an array of objects. -* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. -* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormat) - format the given array of objects as CSV. -* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatBody) - format the given array of objects as CSV. -* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatRows) - format the given array of rows as CSV. -* [d3.csvFormatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatRow) - format the given row as CSV. -* [d3.csvFormatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#csvFormatValue) - format the given value as CSV. -* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvParse) - parse the given TSV string, returning an array of objects. -* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. -* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormat) - format the given array of objects as TSV. -* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatBody) - format the given array of objects as TSV. -* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRows) - format the given array of rows as TSV. -* [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatRow) - format the given row as TSV. -* [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#tsvFormatValue) - format the given value as TSV. -* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. -* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parse) - parse the given string, returning an array of objects. -* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_parseRows) - parse the given string, returning an array of rows. -* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_format) - format the given array of objects. -* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatBody) - format the given array of objects. -* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRows) - format the given array of rows. -* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatRow) - format the given row. -* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#dsv_formatValue) - format the given value. -* [d3.autoType](https://github.com/d3/d3-dsv/blob/v2.0.0/README.md#autoType) - automatically infer value types for the given object. - -## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v2.0.0) +* [d3.csvParse](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvParse) - parse the given CSV string, returning an array of objects. +* [d3.csvParseRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvParseRows) - parse the given CSV string, returning an array of rows. +* [d3.csvFormat](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvFormat) - format the given array of objects as CSV. +* [d3.csvFormatBody](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvFormatBody) - format the given array of objects as CSV. +* [d3.csvFormatRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvFormatRows) - format the given array of rows as CSV. +* [d3.csvFormatRow](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvFormatRow) - format the given row as CSV. +* [d3.csvFormatValue](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#csvFormatValue) - format the given value as CSV. +* [d3.tsvParse](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvParse) - parse the given TSV string, returning an array of objects. +* [d3.tsvParseRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvParseRows) - parse the given TSV string, returning an array of rows. +* [d3.tsvFormat](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvFormat) - format the given array of objects as TSV. +* [d3.tsvFormatBody](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvFormatBody) - format the given array of objects as TSV. +* [d3.tsvFormatRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvFormatRows) - format the given array of rows as TSV. +* [d3.tsvFormatRow](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvFormatRow) - format the given row as TSV. +* [d3.tsvFormatValue](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#tsvFormatValue) - format the given value as TSV. +* [d3.dsvFormat](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsvFormat) - create a new parser and formatter for the given delimiter. +* [*dsv*.parse](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_parse) - parse the given string, returning an array of objects. +* [*dsv*.parseRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_parseRows) - parse the given string, returning an array of rows. +* [*dsv*.format](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_format) - format the given array of objects. +* [*dsv*.formatBody](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_formatBody) - format the given array of objects. +* [*dsv*.formatRows](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_formatRows) - format the given array of rows. +* [*dsv*.formatRow](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_formatRow) - format the given row. +* [*dsv*.formatValue](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#dsv_formatValue) - format the given value. +* [d3.autoType](https://github.com/d3/d3-dsv/blob/v3.0.1/README.md#autoType) - automatically infer value types for the given object. + +## [Easings (d3-ease)](https://github.com/d3/d3-ease/tree/v3.0.1) Easing functions for smooth animation. -* [*ease*](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#_ease) - ease the given normalized time. -* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeLinear) - linear easing; the identity function. -* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyIn) - polynomial easing; raises time to the given power. -* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyOut) - reverse polynomial easing. -* [d3.easePoly](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePoly) - an alias for easePolyInOut. -* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easePolyInOut) - symmetric polynomial easing. -* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#poly_exponent) - specify the polynomial exponent. -* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadIn) - quadratic easing; squares time. -* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadOut) - reverse quadratic easing. -* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuad) - an alias for easeQuadInOut. -* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeQuadInOut) - symmetric quadratic easing. -* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicIn) - cubic easing; cubes time. -* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicOut) - reverse cubic easing. -* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubic) - an alias for easeCubicInOut. -* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCubicInOut) - symmetric cubic easing. -* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinIn) - sinusoidal easing. -* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinOut) - reverse sinusoidal easing. -* [d3.easeSin](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSin) - an alias for easeSinInOut. -* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeSinInOut) - symmetric sinusoidal easing. -* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpIn) - exponential easing. -* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpOut) - reverse exponential easing. -* [d3.easeExp](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExp) - an alias for easeExpInOut. -* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeExpInOut) - symmetric exponential easing. -* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleIn) - circular easing. -* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleOut) - reverse circular easing. -* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircle) - an alias for easeCircleInOut. -* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeCircleInOut) - symmetric circular easing. -* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticIn) - elastic easing, like a rubber band. -* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElastic) - an alias for easeElasticOut. -* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticOut) - reverse elastic easing. -* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeElasticInOut) - symmetric elastic easing. -* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_amplitude) - specify the elastic amplitude. -* [*elastic*.period](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#elastic_period) - specify the elastic period. -* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. -* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackOut) - reverse anticipatory easing. -* [d3.easeBack](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBack) - an alias for easeBackInOut. -* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBackInOut) - symmetric anticipatory easing. -* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#back_overshoot) - specify the amount of overshoot. -* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceIn) - bounce easing, like a rubber ball. -* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounce) - an alias for easeBounceOut. -* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceOut) - reverse bounce easing. -* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v2.0.0/README.md#easeBounceInOut) - symmetric bounce easing. - -## [Fetches (d3-fetch)](https://github.com/d3/d3-fetch/tree/v2.0.0) +* [*ease*](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#_ease) - ease the given normalized time. +* [d3.easeLinear](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeLinear) - linear easing; the identity function. +* [d3.easePolyIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easePolyIn) - polynomial easing; raises time to the given power. +* [d3.easePolyOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easePolyOut) - reverse polynomial easing. +* [d3.easePoly](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easePoly) - an alias for easePolyInOut. +* [d3.easePolyInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easePolyInOut) - symmetric polynomial easing. +* [*poly*.exponent](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#poly_exponent) - specify the polynomial exponent. +* [d3.easeQuadIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeQuadIn) - quadratic easing; squares time. +* [d3.easeQuadOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeQuadOut) - reverse quadratic easing. +* [d3.easeQuad](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeQuad) - an alias for easeQuadInOut. +* [d3.easeQuadInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeQuadInOut) - symmetric quadratic easing. +* [d3.easeCubicIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCubicIn) - cubic easing; cubes time. +* [d3.easeCubicOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCubicOut) - reverse cubic easing. +* [d3.easeCubic](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCubic) - an alias for easeCubicInOut. +* [d3.easeCubicInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCubicInOut) - symmetric cubic easing. +* [d3.easeSinIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeSinIn) - sinusoidal easing. +* [d3.easeSinOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeSinOut) - reverse sinusoidal easing. +* [d3.easeSin](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeSin) - an alias for easeSinInOut. +* [d3.easeSinInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeSinInOut) - symmetric sinusoidal easing. +* [d3.easeExpIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeExpIn) - exponential easing. +* [d3.easeExpOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeExpOut) - reverse exponential easing. +* [d3.easeExp](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeExp) - an alias for easeExpInOut. +* [d3.easeExpInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeExpInOut) - symmetric exponential easing. +* [d3.easeCircleIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCircleIn) - circular easing. +* [d3.easeCircleOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCircleOut) - reverse circular easing. +* [d3.easeCircle](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCircle) - an alias for easeCircleInOut. +* [d3.easeCircleInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeCircleInOut) - symmetric circular easing. +* [d3.easeElasticIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeElasticIn) - elastic easing, like a rubber band. +* [d3.easeElastic](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeElastic) - an alias for easeElasticOut. +* [d3.easeElasticOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeElasticOut) - reverse elastic easing. +* [d3.easeElasticInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeElasticInOut) - symmetric elastic easing. +* [*elastic*.amplitude](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#elastic_amplitude) - specify the elastic amplitude. +* [*elastic*.period](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#elastic_period) - specify the elastic period. +* [d3.easeBackIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBackIn) - anticipatory easing, like a dancer bending his knees before jumping. +* [d3.easeBackOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBackOut) - reverse anticipatory easing. +* [d3.easeBack](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBack) - an alias for easeBackInOut. +* [d3.easeBackInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBackInOut) - symmetric anticipatory easing. +* [*back*.overshoot](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#back_overshoot) - specify the amount of overshoot. +* [d3.easeBounceIn](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBounceIn) - bounce easing, like a rubber ball. +* [d3.easeBounce](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBounce) - an alias for easeBounceOut. +* [d3.easeBounceOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBounceOut) - reverse bounce easing. +* [d3.easeBounceInOut](https://github.com/d3/d3-ease/blob/v3.0.1/README.md#easeBounceInOut) - symmetric bounce easing. + +## [Fetches (d3-fetch)](https://github.com/d3/d3-fetch/tree/v3.0.1) Convenience methods on top of the Fetch API. -* [d3.blob](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#blob) - get a file as a blob. -* [d3.buffer](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#buffer) - get a file as an array buffer. -* [d3.csv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#csv) - get a comma-separated values (CSV) file. -* [d3.dsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#dsv) - get a delimiter-separated values (CSV) file. -* [d3.html](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#html) - get an HTML file. -* [d3.image](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#image) - get an image. -* [d3.json](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#json) - get a JSON file. -* [d3.svg](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#svg) - get an SVG file. -* [d3.text](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#text) - get a plain text file. -* [d3.tsv](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#tsv) - get a tab-separated values (TSV) file. -* [d3.xml](https://github.com/d3/d3-fetch/blob/v2.0.0/README.md#xml) - get an XML file. +* [d3.blob](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#blob) - get a file as a blob. +* [d3.buffer](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#buffer) - get a file as an array buffer. +* [d3.csv](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#csv) - get a comma-separated values (CSV) file. +* [d3.dsv](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#dsv) - get a delimiter-separated values (CSV) file. +* [d3.html](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#html) - get an HTML file. +* [d3.image](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#image) - get an image. +* [d3.json](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#json) - get a JSON file. +* [d3.svg](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#svg) - get an SVG file. +* [d3.text](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#text) - get a plain text file. +* [d3.tsv](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#tsv) - get a tab-separated values (TSV) file. +* [d3.xml](https://github.com/d3/d3-fetch/blob/v3.0.1/README.md#xml) - get an XML file. -## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v2.1.1) +## [Forces (d3-force)](https://github.com/d3/d3-force/tree/v3.0.0) Force-directed graph layout using velocity Verlet integration. -* [d3.forceSimulation](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceSimulation) - create a new force simulation. -* [*simulation*.restart](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_restart) - reheat and restart the simulation’s timer. -* [*simulation*.stop](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_stop) - stop the simulation’s timer. -* [*simulation*.tick](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_tick) - advance the simulation one step. -* [*simulation*.nodes](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_nodes) - set the simulation’s nodes. -* [*simulation*.alpha](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alpha) - set the current alpha. -* [*simulation*.alphaMin](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaMin) - set the minimum alpha threshold. -* [*simulation*.alphaDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaDecay) - set the alpha exponential decay rate. -* [*simulation*.alphaTarget](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_alphaTarget) - set the target alpha. -* [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_velocityDecay) - set the velocity decay rate. -* [*simulation*.force](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_force) - add or remove a force. -* [*simulation*.find](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_find) - find the closest node to the given position. -* [*simulation*.randomSource](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_randomSource) - set the simulation’s random source. -* [*simulation*.on](https://github.com/d3/d3-force/blob/v2.1.1/README.md#simulation_on) - add or remove an event listener. -* [*force*](https://github.com/d3/d3-force/blob/v2.1.1/README.md#_force) - apply the force. -* [*force*.initialize](https://github.com/d3/d3-force/blob/v2.1.1/README.md#force_initialize) - initialize the force with the given nodes. -* [d3.forceCenter](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCenter) - create a centering force. -* [*center*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_x) - set the center *x*-coordinate. -* [*center*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_y) - set the center *y*-coordinate. -* [*center*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#center_strength) - set the strength of the centering force. -* [d3.forceCollide](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceCollide) - create a circle collision force. -* [*collide*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_radius) - set the circle radius. -* [*collide*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_strength) - set the collision resolution strength. -* [*collide*.iterations](https://github.com/d3/d3-force/blob/v2.1.1/README.md#collide_iterations) - set the number of iterations. -* [d3.forceLink](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceLink) - create a link force. -* [*link*.links](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_links) - set the array of links. -* [*link*.id](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_id) - link nodes by numeric index or string identifier. -* [*link*.distance](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_distance) - set the link distance. -* [*link*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_strength) - set the link strength. -* [*link*.iterations](https://github.com/d3/d3-force/blob/v2.1.1/README.md#link_iterations) - set the number of iterations. -* [d3.forceManyBody](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceManyBody) - create a many-body force. -* [*manyBody*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_strength) - set the force strength. -* [*manyBody*.theta](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_theta) - set the Barnes–Hut approximation accuracy. -* [*manyBody*.distanceMin](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_distanceMin) - limit the force when nodes are close. -* [*manyBody*.distanceMax](https://github.com/d3/d3-force/blob/v2.1.1/README.md#manyBody_distanceMax) - limit the force when nodes are far. -* [d3.forceX](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceX) - create an *x*-positioning force. -* [*x*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#x_strength) - set the force strength. -* [*x*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#x_x) - set the target *x*-coordinate. -* [d3.forceY](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceY) - create an *y*-positioning force. -* [*y*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#y_strength) - set the force strength. -* [*y*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#y_y) - set the target *y*-coordinate. -* [d3.forceRadial](https://github.com/d3/d3-force/blob/v2.1.1/README.md#forceRadial) - create a radial positioning force. -* [*radial*.strength](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_strength) - set the force strength. -* [*radial*.radius](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_radius) - set the target radius. -* [*radial*.x](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_x) - set the target center *x*-coordinate. -* [*radial*.y](https://github.com/d3/d3-force/blob/v2.1.1/README.md#radial_y) - set the target center *y*-coordinate. - -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v2.0.0) +* [d3.forceSimulation](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceSimulation) - create a new force simulation. +* [*simulation*.restart](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_restart) - reheat and restart the simulation’s timer. +* [*simulation*.stop](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_stop) - stop the simulation’s timer. +* [*simulation*.tick](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_tick) - advance the simulation one step. +* [*simulation*.nodes](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_nodes) - set the simulation’s nodes. +* [*simulation*.alpha](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_alpha) - set the current alpha. +* [*simulation*.alphaMin](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_alphaMin) - set the minimum alpha threshold. +* [*simulation*.alphaDecay](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_alphaDecay) - set the alpha exponential decay rate. +* [*simulation*.alphaTarget](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_alphaTarget) - set the target alpha. +* [*simulation*.velocityDecay](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_velocityDecay) - set the velocity decay rate. +* [*simulation*.force](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_force) - add or remove a force. +* [*simulation*.find](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_find) - find the closest node to the given position. +* [*simulation*.randomSource](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_randomSource) - set the simulation’s random source. +* [*simulation*.on](https://github.com/d3/d3-force/blob/v3.0.0/README.md#simulation_on) - add or remove an event listener. +* [*force*](https://github.com/d3/d3-force/blob/v3.0.0/README.md#_force) - apply the force. +* [*force*.initialize](https://github.com/d3/d3-force/blob/v3.0.0/README.md#force_initialize) - initialize the force with the given nodes. +* [d3.forceCenter](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceCenter) - create a centering force. +* [*center*.x](https://github.com/d3/d3-force/blob/v3.0.0/README.md#center_x) - set the center *x*-coordinate. +* [*center*.y](https://github.com/d3/d3-force/blob/v3.0.0/README.md#center_y) - set the center *y*-coordinate. +* [*center*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#center_strength) - set the strength of the centering force. +* [d3.forceCollide](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceCollide) - create a circle collision force. +* [*collide*.radius](https://github.com/d3/d3-force/blob/v3.0.0/README.md#collide_radius) - set the circle radius. +* [*collide*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#collide_strength) - set the collision resolution strength. +* [*collide*.iterations](https://github.com/d3/d3-force/blob/v3.0.0/README.md#collide_iterations) - set the number of iterations. +* [d3.forceLink](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceLink) - create a link force. +* [*link*.links](https://github.com/d3/d3-force/blob/v3.0.0/README.md#link_links) - set the array of links. +* [*link*.id](https://github.com/d3/d3-force/blob/v3.0.0/README.md#link_id) - link nodes by numeric index or string identifier. +* [*link*.distance](https://github.com/d3/d3-force/blob/v3.0.0/README.md#link_distance) - set the link distance. +* [*link*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#link_strength) - set the link strength. +* [*link*.iterations](https://github.com/d3/d3-force/blob/v3.0.0/README.md#link_iterations) - set the number of iterations. +* [d3.forceManyBody](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceManyBody) - create a many-body force. +* [*manyBody*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#manyBody_strength) - set the force strength. +* [*manyBody*.theta](https://github.com/d3/d3-force/blob/v3.0.0/README.md#manyBody_theta) - set the Barnes–Hut approximation accuracy. +* [*manyBody*.distanceMin](https://github.com/d3/d3-force/blob/v3.0.0/README.md#manyBody_distanceMin) - limit the force when nodes are close. +* [*manyBody*.distanceMax](https://github.com/d3/d3-force/blob/v3.0.0/README.md#manyBody_distanceMax) - limit the force when nodes are far. +* [d3.forceX](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceX) - create an *x*-positioning force. +* [*x*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#x_strength) - set the force strength. +* [*x*.x](https://github.com/d3/d3-force/blob/v3.0.0/README.md#x_x) - set the target *x*-coordinate. +* [d3.forceY](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceY) - create an *y*-positioning force. +* [*y*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#y_strength) - set the force strength. +* [*y*.y](https://github.com/d3/d3-force/blob/v3.0.0/README.md#y_y) - set the target *y*-coordinate. +* [d3.forceRadial](https://github.com/d3/d3-force/blob/v3.0.0/README.md#forceRadial) - create a radial positioning force. +* [*radial*.strength](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_strength) - set the force strength. +* [*radial*.radius](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_radius) - set the target radius. +* [*radial*.x](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_x) - set the target center *x*-coordinate. +* [*radial*.y](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_y) - set the target center *y*-coordinate. + +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v3.0.1) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatSpecifier) - parse a number format specifier. -* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v2.0.0/README.md#FormatSpecifier) - augments a number format specifier object. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v2.0.0/README.md#precisionRound) - compute significant digits for rounded notation. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v2.0.0/README.md#formatDefaultLocale) - define the default locale. +* [d3.format](https://github.com/d3/d3-format/blob/v3.0.1/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v3.0.1/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatSpecifier) - parse a number format specifier. +* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v3.0.1/README.md#FormatSpecifier) - augments a number format specifier object. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatDefaultLocale) - define the default locale. -## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v2.0.0) +## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v3.0.1) Geographic projections, shapes and math. -### [Paths](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#paths) - -* [d3.geoPath](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoPath) - create a new geographic path generator. -* [*path*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_path) - project and render the specified feature. -* [*path*.area](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_area) - compute the projected planar area of a given feature. -* [*path*.bounds](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_bounds) - compute the projected planar bounding box of a given feature. -* [*path*.centroid](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_centroid) - compute the projected planar centroid of a given feature. -* [*path*.measure](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_measure) - compute the projected planar length of a given feature. -* [*path*.projection](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_projection) - set the geographic projection. -* [*path*.context](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_context) - set the render context. -* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#path_pointRadius) - set the radius to display point features. - -### [Projections](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projections) - -* [*projection*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_projection) - project the specified point from the sphere to the plane. -* [*projection*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_invert) - unproject the specified point from the plane to the sphere. -* [*projection*.stream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_stream) - wrap the specified stream to project geometry. -* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_preclip) - set the projection’s spherical clipping function. -* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_postclip) - set the projection’s cartesian clipping function. -* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipAngle) - set the radius of the clip circle. -* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. -* [*projection*.scale](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_scale) - set the scale factor. -* [*projection*.translate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_translate) - set the translation offset. -* [*projection*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_center) - set the center point. -* [*projection*.angle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_angle) - set the post-projection rotation. -* [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectX) - reflect the *x*-dimension. -* [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_reflectY) - reflect the *y*-dimension. -* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_rotate) - set the three-axis spherical rotation angles. -* [*projection*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_precision) - set the precision threshold for adaptive sampling. -* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. -* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. -* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. -* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. -* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. -* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. -* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonic) - the gnomonic projection. -* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGnomonicRaw) - the raw gnomonic projection. -* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographic) - the azimuthal orthographic projection. -* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. -* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographic) - the azimuthal stereographic projection. -* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. -* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarth) - the Equal Earth projection. -* [d3.geoEqualEarthRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEqualEarthRaw) - the raw Equal Earth projection. -* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbersUsa) - a composite Albers projection for the United States. -* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#conic_parallels) - set the two standard parallels. -* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoAlbers) - the Albers equal-area conic projection. -* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformal) - the conic conformal projection. -* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicConformalRaw) - the raw conic conformal projection. -* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. -* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. -* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistant) - the conic equidistant projection. -* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. -* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. -* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. -* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercator) - the spherical Mercator projection. -* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoMercatorRaw) - the raw Mercator projection. -* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. -* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. -* [d3.geoNaturalEarth1](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1) - the Equal Earth projection, version 1. -* [d3.geoNaturalEarth1Raw](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoNaturalEarth1Raw) - the raw Equal Earth projection, version 1 - -### [Raw projections](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#raw-projections) - -* [*project*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_project) - project the specified point from the sphere to the plane. -* [*project*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#project_invert) - unproject the specified point from the plane to the sphere. -* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjection) - create a custom projection. -* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoProjectionMutator) - create a custom configurable projection. - -### [Spherical Math](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#spherical-math) - -* [d3.geoArea](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoArea) - compute the spherical area of a given feature. -* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. -* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoCentroid) - compute the spherical centroid of a given feature. -* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoDistance) - compute the great-arc distance between two points. -* [d3.geoLength](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. -* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoInterpolate) - interpolate between two points along a great arc. -* [d3.geoContains](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoContains) - test whether a point is inside a given feature. -* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoRotation) - create a rotation function for the specified angles. -* [*rotation*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_rotation) - rotate the given point around the sphere. -* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#rotation_invert) - unrotate the given point around the sphere. - -### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#spherical-shapes) - -* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoCircle) - create a circle generator. -* [*circle*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_circle) - generate a piecewise circle as a Polygon. -* [*circle*.center](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_center) - specify the circle center in latitude and longitude. -* [*circle*.radius](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_radius) - specify the angular radius in degrees. -* [*circle*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#circle_precision) - specify the precision of the piecewise circle. -* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGraticule) - create a graticule generator. -* [*graticule*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#_graticule) - generate a MultiLineString of meridians and parallels. -* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. -* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. -* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extent) - get or set the major & minor extents. -* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extentMajor) - get or set the major extent. -* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_extentMinor) - get or set the minor extent. -* [*graticule*.step](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_step) - get or set the major & minor step intervals. -* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_stepMajor) - get or set the major step intervals. -* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_stepMinor) - get or set the minor step intervals. -* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#graticule_precision) - get or set the latitudinal precision. -* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoGraticule10) - generate the default 10° global graticule. - -### [Streams](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#streams) - -* [d3.geoStream](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoStream) - convert a GeoJSON object to a geometry stream. -* [*stream*.point](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_point) - indicates a point with the specified coordinates. -* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_lineStart) - indicates the start of a line or ring. -* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_lineEnd) - indicates the end of a line or ring. -* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_polygonStart) - indicates the start of a polygon. -* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_polygonEnd) - indicates the end of a polygon. -* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#stream_sphere) - indicates the sphere. - -### [Transforms](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#transforms) - -* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoTransform) - define a custom geometry transform. -* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoIdentity) - scale, translate or clip planar geometry. - -### [Clipping](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#clipping) - -* [*preclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#preclip) - pre-clipping in geographic coordinates. -* [*postclip*](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#postclip) - post-clipping in planar coordinates. -* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. -* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipCircle) - clips spherical geometries to a small circle. -* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v2.0.0/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. - -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v2.0.0) +### [Paths](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#paths) + +* [d3.geoPath](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoPath) - create a new geographic path generator. +* [*path*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_path) - project and render the specified feature. +* [*path*.area](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_area) - compute the projected planar area of a given feature. +* [*path*.bounds](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_bounds) - compute the projected planar bounding box of a given feature. +* [*path*.centroid](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_centroid) - compute the projected planar centroid of a given feature. +* [*path*.measure](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_measure) - compute the projected planar length of a given feature. +* [*path*.projection](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_projection) - set the geographic projection. +* [*path*.context](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_context) - set the render context. +* [*path*.pointRadius](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#path_pointRadius) - set the radius to display point features. + +### [Projections](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projections) + +* [*projection*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_projection) - project the specified point from the sphere to the plane. +* [*projection*.invert](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_invert) - unproject the specified point from the plane to the sphere. +* [*projection*.stream](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_stream) - wrap the specified stream to project geometry. +* [*projection*.preclip](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_preclip) - set the projection’s spherical clipping function. +* [*projection*.postclip](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_postclip) - set the projection’s cartesian clipping function. +* [*projection*.clipAngle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_clipAngle) - set the radius of the clip circle. +* [*projection*.clipExtent](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_clipExtent) - set the viewport clip extent, in pixels. +* [*projection*.scale](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_scale) - set the scale factor. +* [*projection*.translate](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_translate) - set the translation offset. +* [*projection*.center](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_center) - set the center point. +* [*projection*.angle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_angle) - set the post-projection rotation. +* [*projection*.reflectX](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_reflectX) - reflect the *x*-dimension. +* [*projection*.reflectY](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_reflectY) - reflect the *y*-dimension. +* [*projection*.rotate](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_rotate) - set the three-axis spherical rotation angles. +* [*projection*.precision](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_precision) - set the precision threshold for adaptive sampling. +* [*projection*.fitExtent](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_fitExtent) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitSize](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_fitSize) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitWidth](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_fitWidth) - set the scale and translate to fit a GeoJSON object. +* [*projection*.fitHeight](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#projection_fitHeight) - set the scale and translate to fit a GeoJSON object. +* [d3.geoAzimuthalEqualArea](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAzimuthalEqualArea) - the azimuthal equal-area projection. +* [d3.geoAzimuthalEqualAreaRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAzimuthalEqualAreaRaw) - the raw azimuthal equal-area projection. +* [d3.geoAzimuthalEquidistant](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAzimuthalEquidistant) - the azimuthal equidistant projection. +* [d3.geoAzimuthalEquidistantRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAzimuthalEquidistantRaw) - the raw azimuthal equidistant projection. +* [d3.geoGnomonic](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoGnomonic) - the gnomonic projection. +* [d3.geoGnomonicRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoGnomonicRaw) - the raw gnomonic projection. +* [d3.geoOrthographic](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoOrthographic) - the azimuthal orthographic projection. +* [d3.geoOrthographicRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoOrthographicRaw) - the raw azimuthal orthographic projection. +* [d3.geoStereographic](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoStereographic) - the azimuthal stereographic projection. +* [d3.geoStereographicRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoStereographicRaw) - the raw azimuthal stereographic projection. +* [d3.geoEqualEarth](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoEqualEarth) - the Equal Earth projection. +* [d3.geoEqualEarthRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoEqualEarthRaw) - the raw Equal Earth projection. +* [d3.geoAlbersUsa](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAlbersUsa) - a composite Albers projection for the United States. +* [*conic*.parallels](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#conic_parallels) - set the two standard parallels. +* [d3.geoAlbers](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoAlbers) - the Albers equal-area conic projection. +* [d3.geoConicConformal](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicConformal) - the conic conformal projection. +* [d3.geoConicConformalRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicConformalRaw) - the raw conic conformal projection. +* [d3.geoConicEqualArea](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicEqualArea) - the conic equal-area (Albers) projection. +* [d3.geoConicEqualAreaRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicEqualAreaRaw) - the raw conic equal-area (Albers) projection. +* [d3.geoConicEquidistant](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicEquidistant) - the conic equidistant projection. +* [d3.geoConicEquidistantRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoConicEquidistantRaw) - the raw conic equidistant projection. +* [d3.geoEquirectangular](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoEquirectangular) - the equirectangular (plate carreé) projection. +* [d3.geoEquirectangularRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoEquirectangularRaw) - the raw equirectangular (plate carreé) projection. +* [d3.geoMercator](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoMercator) - the spherical Mercator projection. +* [d3.geoMercatorRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoMercatorRaw) - the raw Mercator projection. +* [d3.geoTransverseMercator](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoTransverseMercator) - the transverse spherical Mercator projection. +* [d3.geoTransverseMercatorRaw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoTransverseMercatorRaw) - the raw transverse spherical Mercator projection. +* [d3.geoNaturalEarth1](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoNaturalEarth1) - the Equal Earth projection, version 1. +* [d3.geoNaturalEarth1Raw](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoNaturalEarth1Raw) - the raw Equal Earth projection, version 1 + +### [Raw projections](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#raw-projections) + +* [*project*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_project) - project the specified point from the sphere to the plane. +* [*project*.invert](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#project_invert) - unproject the specified point from the plane to the sphere. +* [d3.geoProjection](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoProjection) - create a custom projection. +* [d3.geoProjectionMutator](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoProjectionMutator) - create a custom configurable projection. + +### [Spherical Math](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#spherical-math) + +* [d3.geoArea](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoArea) - compute the spherical area of a given feature. +* [d3.geoBounds](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoBounds) - compute the latitude-longitude bounding box for a given feature. +* [d3.geoCentroid](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoCentroid) - compute the spherical centroid of a given feature. +* [d3.geoDistance](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoDistance) - compute the great-arc distance between two points. +* [d3.geoLength](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoLength) - compute the length of a line string or the perimeter of a polygon. +* [d3.geoInterpolate](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoInterpolate) - interpolate between two points along a great arc. +* [d3.geoContains](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoContains) - test whether a point is inside a given feature. +* [d3.geoRotation](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoRotation) - create a rotation function for the specified angles. +* [*rotation*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_rotation) - rotate the given point around the sphere. +* [*rotation*.invert](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#rotation_invert) - unrotate the given point around the sphere. + +### [Spherical Shapes](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#spherical-shapes) + +* [d3.geoCircle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoCircle) - create a circle generator. +* [*circle*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_circle) - generate a piecewise circle as a Polygon. +* [*circle*.center](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#circle_center) - specify the circle center in latitude and longitude. +* [*circle*.radius](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#circle_radius) - specify the angular radius in degrees. +* [*circle*.precision](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#circle_precision) - specify the precision of the piecewise circle. +* [d3.geoGraticule](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoGraticule) - create a graticule generator. +* [*graticule*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#_graticule) - generate a MultiLineString of meridians and parallels. +* [*graticule*.lines](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_lines) - generate an array of LineStrings of meridians and parallels. +* [*graticule*.outline](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_outline) - generate a Polygon of the graticule’s extent. +* [*graticule*.extent](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_extent) - get or set the major & minor extents. +* [*graticule*.extentMajor](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_extentMajor) - get or set the major extent. +* [*graticule*.extentMinor](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_extentMinor) - get or set the minor extent. +* [*graticule*.step](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_step) - get or set the major & minor step intervals. +* [*graticule*.stepMajor](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_stepMajor) - get or set the major step intervals. +* [*graticule*.stepMinor](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_stepMinor) - get or set the minor step intervals. +* [*graticule*.precision](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#graticule_precision) - get or set the latitudinal precision. +* [d3.geoGraticule10](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoGraticule10) - generate the default 10° global graticule. + +### [Streams](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#streams) + +* [d3.geoStream](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoStream) - convert a GeoJSON object to a geometry stream. +* [*stream*.point](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_point) - indicates a point with the specified coordinates. +* [*stream*.lineStart](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_lineStart) - indicates the start of a line or ring. +* [*stream*.lineEnd](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_lineEnd) - indicates the end of a line or ring. +* [*stream*.polygonStart](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_polygonStart) - indicates the start of a polygon. +* [*stream*.polygonEnd](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_polygonEnd) - indicates the end of a polygon. +* [*stream*.sphere](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#stream_sphere) - indicates the sphere. + +### [Transforms](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#transforms) + +* [d3.geoTransform](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoTransform) - define a custom geometry transform. +* [d3.geoIdentity](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoIdentity) - scale, translate or clip planar geometry. + +### [Clipping](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#clipping) + +* [*preclip*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#preclip) - pre-clipping in geographic coordinates. +* [*postclip*](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#postclip) - post-clipping in planar coordinates. +* [d3.geoClipAntimeridian](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipAntimeridian) - cuts spherical geometries that cross the antimeridian. +* [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipCircle) - clips spherical geometries to a small circle. +* [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. + +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.0.1) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_leaves) - generate an array of leaves. -* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_find) - find a node in the hierarchy. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_count) - count the number of leaves. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_sort) - sort all descendant siblings. -* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_iterator) - iterate on a hierarchy. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#stratify_parentId) - set the parent node id accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v2.0.0/README.md#packEnclose) - enclose the specified array of circles. +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_leaves) - generate an array of leaves. +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_find) - find a node in the hierarchy. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_count) - count the number of leaves. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_sort) - sort all descendant siblings. +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_iterator) - iterate on a hierarchy. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify_parentId) - set the parent node id accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packEnclose) - enclose the specified array of circles. ## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v2.0.1) Interpolate numbers, colors, strings, arrays, objects, whatever! -* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate) - interpolate arbitrary values. -* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumber) - interpolate numbers. -* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRound) - interpolate integers. -* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateString) - interpolate strings with embedded numbers. -* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDate) - interpolate dates. -* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateArray) - interpolate arrays of arbitrary values. -* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateNumberArray) - interpolate arrays of numbers. -* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateObject) - interpolate arbitrary objects. -* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. -* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. -* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateZoom) - zoom and pan between two views. -* [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_rho) - set the curvature *rho* of the zoom interpolator. -* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. -* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. -* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgb) - interpolate RGB colors. -* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. -* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. -* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHsl) - interpolate HSL colors. -* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHslLong) - interpolate HSL colors, the long way. -* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateLab) - interpolate Lab colors. -* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHcl) - interpolate HCL colors. -* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHclLong) - interpolate HCL colors, the long way. -* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateCubehelix) - interpolate Cubehelix colors. -* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. -* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolate_gamma) - apply gamma correction during interpolation. -* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateHue) - interpolate a hue angle. -* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasis) - generate a B-spline through a set of values. -* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. -* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v2.0.1/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. - -## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v2.0.0) +* [d3.interpolate](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolate) - interpolate arbitrary values. +* [d3.interpolateNumber](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateNumber) - interpolate numbers. +* [d3.interpolateRound](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateRound) - interpolate integers. +* [d3.interpolateString](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateString) - interpolate strings with embedded numbers. +* [d3.interpolateDate](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateDate) - interpolate dates. +* [d3.interpolateArray](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateArray) - interpolate arrays of arbitrary values. +* [d3.interpolateNumberArray](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateNumberArray) - interpolate arrays of numbers. +* [d3.interpolateObject](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateObject) - interpolate arbitrary objects. +* [d3.interpolateTransformCss](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateTransformCss) - interpolate 2D CSS transforms. +* [d3.interpolateTransformSvg](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateTransformSvg) - interpolate 2D SVG transforms. +* [d3.interpolateZoom](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateZoom) - zoom and pan between two views. +* [*interpolateZoom*.rho](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolate_rho) - set the curvature *rho* of the zoom interpolator. +* [d3.interpolateDiscrete](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateDiscrete) - generate a discrete interpolator from a set of values. +* [d3.quantize](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#quantize) - generate uniformly-spaced samples from an interpolator. +* [d3.interpolateRgb](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateRgb) - interpolate RGB colors. +* [d3.interpolateRgbBasis](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateRgbBasis) - generate a B-spline through a set of colors. +* [d3.interpolateRgbBasisClosed](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateRgbBasisClosed) - generate a closed B-spline through a set of colors. +* [d3.interpolateHsl](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateHsl) - interpolate HSL colors. +* [d3.interpolateHslLong](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateHslLong) - interpolate HSL colors, the long way. +* [d3.interpolateLab](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateLab) - interpolate Lab colors. +* [d3.interpolateHcl](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateHcl) - interpolate HCL colors. +* [d3.interpolateHclLong](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateHclLong) - interpolate HCL colors, the long way. +* [d3.interpolateCubehelix](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateCubehelix) - interpolate Cubehelix colors. +* [d3.interpolateCubehelixLong](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateCubehelixLong) - interpolate Cubehelix colors, the long way. +* [*interpolate*.gamma](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolate_gamma) - apply gamma correction during interpolation. +* [d3.interpolateHue](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateHue) - interpolate a hue angle. +* [d3.interpolateBasis](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateBasis) - generate a B-spline through a set of values. +* [d3.interpolateBasisClosed](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#interpolateBasisClosed) - generate a closed B-spline through a set of values. +* [d3.piecewise](https://github.com/d3/d3-interpolate/blob/v3.0.1/README.md#piecewise) - generate a piecewise linear interpolator from a set of values. + +## [Paths (d3-path)](https://github.com/d3/d3-path/tree/v3.0.1) Serialize Canvas path commands to SVG. -* [d3.path](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path) - create a new path serializer. -* [*path*.moveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_moveTo) - move to the given point. -* [*path*.closePath](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_closePath) - close the current subpath. -* [*path*.lineTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_lineTo) - draw a straight line segment. -* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. -* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. -* [*path*.arcTo](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_arcTo) - draw a circular arc segment. -* [*path*.arc](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_arc) - draw a circular arc segment. -* [*path*.rect](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_rect) - draw a rectangle. -* [*path*.toString](https://github.com/d3/d3-path/blob/v2.0.0/README.md#path_toString) - serialize to an SVG path data string. +* [d3.path](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path) - create a new path serializer. +* [*path*.moveTo](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_moveTo) - move to the given point. +* [*path*.closePath](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_closePath) - close the current subpath. +* [*path*.lineTo](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_lineTo) - draw a straight line segment. +* [*path*.quadraticCurveTo](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_quadraticCurveTo) - draw a quadratic Bézier segment. +* [*path*.bezierCurveTo](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_bezierCurveTo) - draw a cubic Bézier segment. +* [*path*.arcTo](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_arcTo) - draw a circular arc segment. +* [*path*.arc](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_arc) - draw a circular arc segment. +* [*path*.rect](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_rect) - draw a rectangle. +* [*path*.toString](https://github.com/d3/d3-path/blob/v3.0.1/README.md#path_toString) - serialize to an SVG path data string. -## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v2.0.0) +## [Polygons (d3-polygon)](https://github.com/d3/d3-polygon/tree/v3.0.1) Geometric operations for two-dimensional polygons. -* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonArea) - compute the area of the given polygon. -* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonCentroid) - compute the centroid of the given polygon. -* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonHull) - compute the convex hull of the given points. -* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonContains) - test whether a point is inside a polygon. -* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v2.0.0/README.md#polygonLength) - compute the length of the given polygon’s perimeter. +* [d3.polygonArea](https://github.com/d3/d3-polygon/blob/v3.0.1/README.md#polygonArea) - compute the area of the given polygon. +* [d3.polygonCentroid](https://github.com/d3/d3-polygon/blob/v3.0.1/README.md#polygonCentroid) - compute the centroid of the given polygon. +* [d3.polygonHull](https://github.com/d3/d3-polygon/blob/v3.0.1/README.md#polygonHull) - compute the convex hull of the given points. +* [d3.polygonContains](https://github.com/d3/d3-polygon/blob/v3.0.1/README.md#polygonContains) - test whether a point is inside a polygon. +* [d3.polygonLength](https://github.com/d3/d3-polygon/blob/v3.0.1/README.md#polygonLength) - compute the length of the given polygon’s perimeter. -## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v2.0.0) +## [Quadtrees (d3-quadtree)](https://github.com/d3/d3-quadtree/tree/v3.0.1) Two-dimensional recursive spatial subdivision. -* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree) - create a new, empty quadtree. -* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_x) - set the *x* accessor. -* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_y) - set the *y* accessor. -* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_extent) - extend the quadtree to cover an extent. -* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_cover) - extend the quadtree to cover a point. -* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_add) - add a datum to a quadtree. -* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_addAll) - add an array of data to a quadtree. -* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_remove) - remove a datum from a quadtree. -* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_removeAll) - remove an array of data from a quadtree. -* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_copy) - create a copy of a quadtree. -* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_root) - get the quadtree’s root node. -* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_data) - retrieve all data from the quadtree. -* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_size) - count the number of data in the quadtree. -* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_find) - quickly find the closest datum in a quadtree. -* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visit) - selectively visit nodes in a quadtree. -* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v2.0.0/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. - -## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v2.2.2) +* [d3.quadtree](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree) - create a new, empty quadtree. +* [*quadtree*.x](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_x) - set the *x* accessor. +* [*quadtree*.y](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_y) - set the *y* accessor. +* [*quadtree*.extent](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_extent) - extend the quadtree to cover an extent. +* [*quadtree*.cover](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_cover) - extend the quadtree to cover a point. +* [*quadtree*.add](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_add) - add a datum to a quadtree. +* [*quadtree*.addAll](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_addAll) - add an array of data to a quadtree. +* [*quadtree*.remove](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_remove) - remove a datum from a quadtree. +* [*quadtree*.removeAll](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_removeAll) - remove an array of data from a quadtree. +* [*quadtree*.copy](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_copy) - create a copy of a quadtree. +* [*quadtree*.root](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_root) - get the quadtree’s root node. +* [*quadtree*.data](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_data) - retrieve all data from the quadtree. +* [*quadtree*.size](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_size) - count the number of data in the quadtree. +* [*quadtree*.find](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_find) - quickly find the closest datum in a quadtree. +* [*quadtree*.visit](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_visit) - selectively visit nodes in a quadtree. +* [*quadtree*.visitAfter](https://github.com/d3/d3-quadtree/blob/v3.0.1/README.md#quadtree_visitAfter) - visit all nodes in a quadtree. + +## [Random Numbers (d3-random)](https://github.com/d3/d3-random/tree/v3.0.1) Generate random numbers from various distributions. -* [d3.randomUniform](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomUniform) - from a uniform distribution. -* [d3.randomInt](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomInt) - from a uniform integer distribution. -* [d3.randomNormal](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomNormal) - from a normal distribution. -* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLogNormal) - from a log-normal distribution. -* [d3.randomBates](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBates) - from a Bates distribution. -* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomIrwinHall) - from an Irwin–Hall distribution. -* [d3.randomExponential](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomExponential) - from an exponential distribution. -* [d3.randomPareto](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomPareto) - from a Pareto distribution. -* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBernoulli) - from a Bernoulli distribution. -* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomGeometric) - from a geometric distribution. -* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBinomial) - from a binomial distribution. -* [d3.randomGamma](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomGamma) - from a gamma distribution. -* [d3.randomBeta](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomBeta) - from a beta distribution. -* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomWeibull) - from a Weibull, Gumbel or Fréchet distribution. -* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomCauchy) - from a Cauchy distribution. -* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLogistic) - from a logistic distribution. -* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomPoisson) - from a Poisson distribution. -* [*random*.source](https://github.com/d3/d3-random/blob/v2.2.2/README.md#random_source) - set the source of randomness. -* [d3.randomLcg](https://github.com/d3/d3-random/blob/v2.2.2/README.md#randomLcg) - a seeded pseudorandom number generator. - -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v3.3.0) +* [d3.randomUniform](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomUniform) - from a uniform distribution. +* [d3.randomInt](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomInt) - from a uniform integer distribution. +* [d3.randomNormal](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomNormal) - from a normal distribution. +* [d3.randomLogNormal](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomLogNormal) - from a log-normal distribution. +* [d3.randomBates](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomBates) - from a Bates distribution. +* [d3.randomIrwinHall](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomIrwinHall) - from an Irwin–Hall distribution. +* [d3.randomExponential](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomExponential) - from an exponential distribution. +* [d3.randomPareto](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomPareto) - from a Pareto distribution. +* [d3.randomBernoulli](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomBernoulli) - from a Bernoulli distribution. +* [d3.randomGeometric](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomGeometric) - from a geometric distribution. +* [d3.randomBinomial](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomBinomial) - from a binomial distribution. +* [d3.randomGamma](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomGamma) - from a gamma distribution. +* [d3.randomBeta](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomBeta) - from a beta distribution. +* [d3.randomWeibull](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomWeibull) - from a Weibull, Gumbel or Fréchet distribution. +* [d3.randomCauchy](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomCauchy) - from a Cauchy distribution. +* [d3.randomLogistic](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomLogistic) - from a logistic distribution. +* [d3.randomPoisson](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomPoisson) - from a Poisson distribution. +* [*random*.source](https://github.com/d3/d3-random/blob/v3.0.1/README.md#random_source) - set the source of randomness. +* [d3.randomLcg](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomLcg) - a seeded pseudorandom number generator. + +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v4.0.0) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#continuous_copy) - create a copy of this scale. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#tickFormat) - format ticks for human consumption. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#symlog_constant) - set the constant of a symlog scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleIdentity) - creates an identity scale. -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleRadial) - creates a radial scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleUtc) - create a linear scale for UTC. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#tickFormat) - format ticks for human consumption. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleRadial) - creates a radial scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleUtc) - create a linear scale for UTC. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_sequential) - compute the range value corresponding to an input value. -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_domain) - set the input domain. -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_clamp) - enable clamping to the domain. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_range) - set the output range. -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_rangeRound) - set the output range and enable rounding. -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequential_copy) - create a copy of this scale. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialLog) - create a logarithmic sequential scale. -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialPow) - create a power sequential scale. -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging-scales) +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_clamp) - enable clamping to the domain. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. + +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_diverging) - compute the range value corresponding to an input value. -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_domain) - set the input domain. -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_clamp) - enable clamping to the domain or range. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_range) - set the output range. -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_rangeRound) - set the output range and enable rounding. -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_copy) - create a copy of this scale. -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#diverging_unknown) - set the output value for unknown inputs. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingLog) - create a diverging logarithmic scale. -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingPow) - create a diverging power scale. -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize-scales) +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_clamp) - enable clamping to the domain or range. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. + +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_range) - set the output range. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_range) - set the output range. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v3.3.0/README.md#point_copy) - create a copy of this scale. - -## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v2.0.0) +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_copy) - create a copy of this scale. + +## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v3.0.0) Transform the DOM by selecting elements and joining to data. -### [Selecting Elements](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selecting-elements) - -* [d3.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection) - select the root document element. -* [d3.select](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#select) - select an element from the document. -* [d3.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectAll) - select multiple elements from the document. -* [*selection*.select](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_select) - select a descendant element for each selected element. -* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectAll) - select multiple descendants for each selected element. -* [*selection*.filter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_filter) - filter elements based on data. -* [*selection*.merge](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_merge) - merge this selection with another. -* [*selection*.selectChild](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChild) - select a child element for each selected element. -* [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selectChildren) - select the children elements for each selected element. -* [*selection*.selection](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_selection) - return the selection. -* [d3.matcher](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#matcher) - test whether an element matches a selector. -* [d3.selector](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selector) - select an element. -* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selectorAll) - select elements. -* [d3.window](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#window) - get a node’s owner window. -* [d3.style](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#style) - get a node’s current style value. - -### [Modifying Elements](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#modifying-elements) - -* [*selection*.attr](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_attr) - get or set an attribute. -* [*selection*.classed](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_classed) - get, add or remove CSS classes. -* [*selection*.style](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_style) - get or set a style property. -* [*selection*.property](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_property) - get or set a (raw) property. -* [*selection*.text](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_text) - get or set the text content. -* [*selection*.html](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_html) - get or set the inner HTML. -* [*selection*.append](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_append) - create, append and select new elements. -* [*selection*.insert](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_insert) - create, insert and select new elements. -* [*selection*.remove](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_remove) - remove elements from the document. -* [*selection*.clone](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_clone) - insert clones of selected elements. -* [*selection*.sort](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_sort) - sort elements in the document based on data. -* [*selection*.order](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_order) - reorders elements in the document to match the selection. -* [*selection*.raise](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_raise) - reorders each element as the last child of its parent. -* [*selection*.lower](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_lower) - reorders each element as the first child of its parent. -* [d3.create](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#create) - create and select a detached element. -* [d3.creator](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#creator) - create an element by name. - -### [Joining Data](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#joining-data) - -* [*selection*.data](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_data) - bind elements to data. -* [*selection*.join](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_join) - enter, update or exit elements based on data. -* [*selection*.enter](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_enter) - get the enter selection (data missing elements). -* [*selection*.exit](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_exit) - get the exit selection (elements missing data). -* [*selection*.datum](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_datum) - get or set element data (without joining). - -### [Handling Events](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#handling-events) - -* [*selection*.on](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_on) - add or remove event listeners. -* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_dispatch) - dispatch a custom event. -* [d3.pointer](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointer) - get the pointer’s position of an event. -* [d3.pointers](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#pointers) - get the pointers’ positions of an event. - -### [Control Flow](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#control-flow) - -* [*selection*.each](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_each) - call a function for each element. -* [*selection*.call](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_call) - call a function with this selection. -* [*selection*.empty](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_empty) - returns true if this selection is empty. -* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_nodes) - returns an array of all selected elements. -* [*selection*.node](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_node) - returns the first (non-null) element. -* [*selection*.size](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_size) - returns the count of elements. -* [*selection*[Symbol.iterator]](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#selection_iterator) - iterate over the selection’s nodes. - -### [Local Variables](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local-variables) - -* [d3.local](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local) - declares a new local variable. -* [*local*.set](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_set) - set a local variable’s value. -* [*local*.get](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_get) - get a local variable’s value. -* [*local*.remove](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_remove) - delete a local variable. -* [*local*.toString](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#local_toString) - get the property identifier of a local variable. - -### [Namespaces](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespaces) - -* [d3.namespace](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. -* [d3.namespaces](https://github.com/d3/d3-selection/blob/v2.0.0/README.md#namespaces) - the built-in XML namespaces. - -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v2.1.0) +### [Selecting Elements](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selecting-elements) + +* [d3.selection](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection) - select the root document element. +* [d3.select](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#select) - select an element from the document. +* [d3.selectAll](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selectAll) - select multiple elements from the document. +* [*selection*.select](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_select) - select a descendant element for each selected element. +* [*selection*.selectAll](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_selectAll) - select multiple descendants for each selected element. +* [*selection*.filter](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_filter) - filter elements based on data. +* [*selection*.merge](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_merge) - merge this selection with another. +* [*selection*.selectChild](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_selectChild) - select a child element for each selected element. +* [*selection*.selectChildren](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_selectChildren) - select the children elements for each selected element. +* [*selection*.selection](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_selection) - return the selection. +* [d3.matcher](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#matcher) - test whether an element matches a selector. +* [d3.selector](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selector) - select an element. +* [d3.selectorAll](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selectorAll) - select elements. +* [d3.window](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#window) - get a node’s owner window. +* [d3.style](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#style) - get a node’s current style value. + +### [Modifying Elements](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#modifying-elements) + +* [*selection*.attr](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_attr) - get or set an attribute. +* [*selection*.classed](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_classed) - get, add or remove CSS classes. +* [*selection*.style](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_style) - get or set a style property. +* [*selection*.property](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_property) - get or set a (raw) property. +* [*selection*.text](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_text) - get or set the text content. +* [*selection*.html](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_html) - get or set the inner HTML. +* [*selection*.append](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_append) - create, append and select new elements. +* [*selection*.insert](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_insert) - create, insert and select new elements. +* [*selection*.remove](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_remove) - remove elements from the document. +* [*selection*.clone](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_clone) - insert clones of selected elements. +* [*selection*.sort](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_sort) - sort elements in the document based on data. +* [*selection*.order](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_order) - reorders elements in the document to match the selection. +* [*selection*.raise](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_raise) - reorders each element as the last child of its parent. +* [*selection*.lower](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_lower) - reorders each element as the first child of its parent. +* [d3.create](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#create) - create and select a detached element. +* [d3.creator](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#creator) - create an element by name. + +### [Joining Data](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#joining-data) + +* [*selection*.data](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_data) - bind elements to data. +* [*selection*.join](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_join) - enter, update or exit elements based on data. +* [*selection*.enter](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_enter) - get the enter selection (data missing elements). +* [*selection*.exit](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_exit) - get the exit selection (elements missing data). +* [*selection*.datum](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_datum) - get or set element data (without joining). + +### [Handling Events](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#handling-events) + +* [*selection*.on](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_on) - add or remove event listeners. +* [*selection*.dispatch](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_dispatch) - dispatch a custom event. +* [d3.pointer](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#pointer) - get the pointer’s position of an event. +* [d3.pointers](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#pointers) - get the pointers’ positions of an event. + +### [Control Flow](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#control-flow) + +* [*selection*.each](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_each) - call a function for each element. +* [*selection*.call](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_call) - call a function with this selection. +* [*selection*.empty](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_empty) - returns true if this selection is empty. +* [*selection*.nodes](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_nodes) - returns an array of all selected elements. +* [*selection*.node](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_node) - returns the first (non-null) element. +* [*selection*.size](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_size) - returns the count of elements. +* [*selection*[Symbol.iterator]](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#selection_iterator) - iterate over the selection’s nodes. + +### [Local Variables](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local-variables) + +* [d3.local](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local) - declares a new local variable. +* [*local*.set](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local_set) - set a local variable’s value. +* [*local*.get](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local_get) - get a local variable’s value. +* [*local*.remove](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local_remove) - delete a local variable. +* [*local*.toString](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#local_toString) - get the property identifier of a local variable. + +### [Namespaces](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#namespaces) + +* [d3.namespace](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. +* [d3.namespaces](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#namespaces) - the built-in XML namespaces. + +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v3.0.1) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial) - create a new radial area generator. -* [*areaRadial*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_areaRadial) - generate an area for the given dataset. -* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_angle) - set the start and end angle accessors. -* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_startAngle) - set the start angle accessor. -* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_endAngle) - set the end angle accessor. -* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_radius) - set the inner and outer radius accessors. -* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_innerRadius) - set the inner radius accessor. -* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_outerRadius) - set the outer radius accessor. -* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_defined) - set the defined accessor. -* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_curve) - set the curve interpolator. -* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_context) - set the rendering context. -* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. -* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. -* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. -* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial) - create a new radial area generator. +* [*areaRadial*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_areaRadial) - generate an area for the given dataset. +* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_angle) - set the start and end angle accessors. +* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_startAngle) - set the start angle accessor. +* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_endAngle) - set the end angle accessor. +* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_radius) - set the inner and outer radius accessors. +* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_innerRadius) - set the inner radius accessor. +* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_outerRadius) - set the outer radius accessor. +* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_defined) - set the defined accessor. +* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_curve) - set the curve interpolator. +* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_context) - set the rendering context. +* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. +* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. +* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. +* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBundle_beta) - set the bundle tension *beta*. -* [d3.curveBumpX](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBumpX) - a cubic Bézier spline with horizontal tangents. -* [d3.curveBumpY](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveBumpY) - a cubic Bézier spline with vertical tangents. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBundle_beta) - set the bundle tension *beta*. +* [d3.curveBumpX](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBumpX) - a cubic Bézier spline with horizontal tangents. +* [d3.curveBumpY](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBumpY) - a cubic Bézier spline with vertical tangents. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial) - create a new radial link generator. -* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial_angle) - set the point *angle* accessor. -* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#linkRadial_radius) - set the point *radius* accessor. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial) - create a new radial link generator. +* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial_angle) - set the point *angle* accessor. +* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial_radius) - set the point *radius* accessor. -### [Symbols](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbols) +### [Symbols](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_context) - set the rendering context. +* [d3.symbols](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbols) - the array of built-in symbol types. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolCircle) - a circle. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolCross) - a Greek cross with arms of equal length. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolDiamond) - a rhombus. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolSquare) - a square. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolStar) - a pentagonal star (pentagram). +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolTriangle) - an up-pointing triangle. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolWye) - a Y shape. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pointRadial) - relative coordinates of a point given an angle and radius. +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v2.1.0/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. +* [d3.stack](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. ## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v3.0.0) @@ -1307,134 +1310,136 @@ Parse and format times, inspired by strptime and strftime. * [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. * [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. -## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v2.1.0) +## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v3.0.0) A calculator for humanity’s peculiar conventions of time. -* [d3.timeInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeInterval) - implement a new custom time interval. -* [*interval*](https://github.com/d3/d3-time/blob/v2.1.0/README.md#_interval) - alias for *interval*.floor. -* [*interval*.floor](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_floor) - round down to the nearest boundary. -* [*interval*.round](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_round) - round to the nearest boundary. -* [*interval*.ceil](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_ceil) - round up to the nearest boundary. -* [*interval*.offset](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_offset) - offset a date by some number of intervals. -* [*interval*.range](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_range) - generate a range of dates at interval boundaries. -* [*interval*.filter](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_filter) - create a filtered subset of this interval. -* [*interval*.every](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_every) - create a filtered subset of this interval. -* [*interval*.count](https://github.com/d3/d3-time/blob/v2.1.0/README.md#interval_count) - count interval boundaries between two dates. -* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond) - the millisecond interval. -* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMillisecond) - aliases for millisecond.range. -* [d3.timeSecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond) - the second interval. -* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSecond) - aliases for second.range. -* [d3.timeMinute](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute) - the minute interval. -* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMinute) - aliases for minute.range. -* [d3.timeHour](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour) - the hour interval. -* [d3.timeHours](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeHour) - aliases for hour.range. -* [d3.timeDay](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay) - the day interval. -* [d3.timeDays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeDay) - aliases for day.range. -* [d3.timeWeek](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek) - aliases for sunday. -* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWeek) - aliases for week.range. -* [d3.timeSunday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday) - the week interval, starting on Sunday. -* [d3.timeSundays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSunday) - aliases for sunday.range. -* [d3.timeMonday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday) - the week interval, starting on Monday. -* [d3.timeMondays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonday) - aliases for monday.range. -* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday) - the week interval, starting on Tuesday. -* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTuesday) - aliases for tuesday.range. -* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday) - the week interval, starting on Wednesday. -* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeWednesday) - aliases for wednesday.range. -* [d3.timeThursday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday) - the week interval, starting on Thursday. -* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeThursday) - aliases for thursday.range. -* [d3.timeFriday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday) - the week interval, starting on Friday. -* [d3.timeFridays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeFriday) - aliases for friday.range. -* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday) - the week interval, starting on Saturday. -* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeSaturday) - aliases for saturday.range. -* [d3.timeMonth](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth) - the month interval. -* [d3.timeMonths](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeMonth) - aliases for month.range. -* [d3.timeYear](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear) - the year interval. -* [d3.timeYears](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeYear) - aliases for year.range. -* [d3.timeTicks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTicks), [d3.utcTicks](https://github.com/d3/d3-time/blob/v2.1.0/README.md#utcTicks) - -* [d3.timeTickInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#timeTickInterval), [d3.utcTickInterval](https://github.com/d3/d3-time/blob/v2.1.0/README.md#utcTickInterval) - - -## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v2.0.0) +* [d3.timeInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeInterval) - implement a new custom time interval. +* [*interval*](https://github.com/d3/d3-time/blob/v3.0.0/README.md#_interval) - alias for *interval*.floor. +* [*interval*.floor](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_floor) - round down to the nearest boundary. +* [*interval*.round](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_round) - round to the nearest boundary. +* [*interval*.ceil](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_ceil) - round up to the nearest boundary. +* [*interval*.offset](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_offset) - offset a date by some number of intervals. +* [*interval*.range](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_range) - generate a range of dates at interval boundaries. +* [*interval*.filter](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_filter) - create a filtered subset of this interval. +* [*interval*.every](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_every) - create a filtered subset of this interval. +* [*interval*.count](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_count) - count interval boundaries between two dates. +* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond) - the millisecond interval. +* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond) - aliases for millisecond.range. +* [d3.timeSecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond) - the second interval. +* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond) - aliases for second.range. +* [d3.timeMinute](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute) - the minute interval. +* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute) - aliases for minute.range. +* [d3.timeHour](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour) - the hour interval. +* [d3.timeHours](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour) - aliases for hour.range. +* [d3.timeDay](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay) - the day interval. +* [d3.timeDays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay) - aliases for day.range. +* [d3.timeWeek](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek) - aliases for sunday. +* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek) - aliases for week.range. +* [d3.timeSunday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday) - the week interval, starting on Sunday. +* [d3.timeSundays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday) - aliases for sunday.range. +* [d3.timeMonday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday) - the week interval, starting on Monday. +* [d3.timeMondays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday) - aliases for monday.range. +* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday) - the week interval, starting on Tuesday. +* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday) - aliases for tuesday.range. +* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday) - the week interval, starting on Wednesday. +* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday) - aliases for wednesday.range. +* [d3.timeThursday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday) - the week interval, starting on Thursday. +* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday) - aliases for thursday.range. +* [d3.timeFriday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday) - the week interval, starting on Friday. +* [d3.timeFridays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday) - aliases for friday.range. +* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday) - the week interval, starting on Saturday. +* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday) - aliases for saturday.range. +* [d3.timeMonth](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth) - the month interval. +* [d3.timeMonths](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth) - aliases for month.range. +* [d3.timeYear](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear) - the year interval. +* [d3.timeYears](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear) - aliases for year.range. +* [d3.timeTicks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTicks), [d3.utcTicks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#utcTicks) - +* [d3.timeTickInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTickInterval), [d3.utcTickInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#utcTickInterval) - + +## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v3.0.1) An efficient queue for managing thousands of concurrent animations. -* [d3.now](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#now) - get the current high-resolution time. -* [d3.timer](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer) - schedule a new timer. -* [*timer*.restart](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer_restart) - reset the timer’s start time and callback. -* [*timer*.stop](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timer_stop) - stop the timer. -* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timerFlush) - immediately execute any eligible timers. -* [d3.timeout](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#timeout) - schedule a timer that stops on its first callback. -* [d3.interval](https://github.com/d3/d3-timer/blob/v2.0.0/README.md#interval) - schedule a timer that is called with a configurable period. +* [d3.now](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#now) - get the current high-resolution time. +* [d3.timer](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#timer) - schedule a new timer. +* [*timer*.restart](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#timer_restart) - reset the timer’s start time and callback. +* [*timer*.stop](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#timer_stop) - stop the timer. +* [d3.timerFlush](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#timerFlush) - immediately execute any eligible timers. +* [d3.timeout](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#timeout) - schedule a timer that stops on its first callback. +* [d3.interval](https://github.com/d3/d3-timer/blob/v3.0.1/README.md#interval) - schedule a timer that is called with a configurable period. -## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v2.0.0) +## [Transitions (d3-transition)](https://github.com/d3/d3-transition/tree/v3.0.1) Animated transitions for [selections](#selections). -* [*selection*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_transition) - schedule a transition for the selected elements. -* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. -* [d3.interrupt](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#interrupt) - interrupt the active transition for a given node. -* [d3.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition) - schedule a transition on the root document element. -* [*transition*.select](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_select) - schedule a transition on the selected elements. -* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selectAll) - schedule a transition on the selected elements. -* [*transition*.filter](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_filter) - filter elements based on data. -* [*transition*.merge](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_merge) - merge this transition with another. -* [*transition*.transition](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_transition) - schedule a new transition following this one. -* [*transition*.selection](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_selection) - returns a selection for this transition. -* [d3.active](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#active) - select the active transition for a given node. -* [*transition*.attr](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attr) - tween the given attribute using the default interpolator. -* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. -* [*transition*.style](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_style) - tween the given style property using the default interpolator. -* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. -* [*transition*.text](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_text) - set the text content when the transition starts. -* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_textTween) - tween the text using a custom interpolator. -* [*transition*.remove](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_remove) - remove the selected elements when the transition ends. -* [*transition*.tween](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_tween) - run custom code during the transition. -* [*transition*.delay](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_delay) - specify per-element delay in milliseconds. -* [*transition*.duration](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_duration) - specify per-element duration in milliseconds. -* [*transition*.ease](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_ease) - specify the easing function. -* [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_easeVarying) - specify an easing function factory. -* [*transition*.end](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_end) - a promise that resolves when a transition ends. -* [*transition*.on](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_on) - await the end of a transition. -* [*transition*.each](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_each) - call a function for each element. -* [*transition*.call](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_call) - call a function with this transition. -* [*transition*.empty](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_empty) - returns true if this transition is empty. -* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_nodes) - returns an array of all selected elements. -* [*transition*.node](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_node) - returns the first (non-null) element. -* [*transition*.size](https://github.com/d3/d3-transition/blob/v2.0.0/README.md#transition_size) - returns the count of elements. - -## [Zooming (d3-zoom)](https://github.com/d3/d3-zoom/tree/v2.0.0) +* [*selection*.transition](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#selection_transition) - schedule a transition for the selected elements. +* [*selection*.interrupt](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#selection_interrupt) - interrupt and cancel transitions on the selected elements. +* [d3.interrupt](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#interrupt) - interrupt the active transition for a given node. +* [d3.transition](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition) - schedule a transition on the root document element. +* [*transition*.select](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_select) - schedule a transition on the selected elements. +* [*transition*.selectAll](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_selectAll) - schedule a transition on the selected elements. +* [*transition*.selectChild](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_selectChild) - select a child element for each selected element. +* [*transition*.selectChildren](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_selectChildren) - select the children elements for each selected element. +* [*transition*.selection](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_selection) - returns a selection for this transition. +* [*transition*.filter](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_filter) - filter elements based on data. +* [*transition*.merge](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_merge) - merge this transition with another. +* [*transition*.transition](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_transition) - schedule a new transition following this one. +* [d3.active](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#active) - select the active transition for a given node. +* [*transition*.attr](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_attr) - tween the given attribute using the default interpolator. +* [*transition*.attrTween](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_attrTween) - tween the given attribute using a custom interpolator. +* [*transition*.style](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_style) - tween the given style property using the default interpolator. +* [*transition*.styleTween](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_styleTween) - tween the given style property using a custom interpolator. +* [*transition*.text](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_text) - set the text content when the transition starts. +* [*transition*.textTween](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_textTween) - tween the text using a custom interpolator. +* [*transition*.remove](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_remove) - remove the selected elements when the transition ends. +* [*transition*.tween](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_tween) - run custom code during the transition. +* [*transition*.delay](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_delay) - specify per-element delay in milliseconds. +* [*transition*.duration](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_duration) - specify per-element duration in milliseconds. +* [*transition*.ease](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_ease) - specify the easing function. +* [*transition*.easeVarying](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_easeVarying) - specify an easing function factory. +* [*transition*.end](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_end) - a promise that resolves when a transition ends. +* [*transition*.on](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_on) - await the end of a transition. +* [*transition*.each](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_each) - call a function for each element. +* [*transition*.call](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_call) - call a function with this transition. +* [*transition*.empty](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_empty) - returns true if this transition is empty. +* [*transition*.nodes](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_nodes) - returns an array of all selected elements. +* [*transition*.node](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_node) - returns the first (non-null) element. +* [*transition*.size](https://github.com/d3/d3-transition/blob/v3.0.0/README.md#transition_size) - returns the count of elements. + +## [Zooming (d3-zoom)](https://github.com/d3/d3-zoom/tree/v3.0.0) Pan and zoom SVG, HTML or Canvas using mouse or touch input. -* [d3.zoom](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom) - create a zoom behavior. -* [*zoom*](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#_zoom) - apply the zoom behavior to the selected elements. -* [*zoom*.transform](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_transform) - change the transform for the selected elements. -* [*zoom*.translateBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateBy) - translate the transform for the selected elements. -* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateTo) - translate the transform for the selected elements. -* [*zoom*.scaleBy](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleBy) - scale the transform for the selected elements. -* [*zoom*.scaleTo](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleTo) - scale the transform for the selected elements. -* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_constrain) - override the transform constraint logic. -* [*zoom*.filter](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_filter) - control which input events initiate zooming. -* [*zoom*.touchable](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_touchable) - set the touch support detector. -* [*zoom*.wheelDelta](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_wheelDelta) - override scaling for wheel events. -* [*zoom*.extent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_extent) - set the extent of the viewport. -* [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_scaleExtent) - set the allowed scale range. -* [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_translateExtent) - set the extent of the zoomable world. -* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_clickDistance) - set the click distance threshold. -* [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_tapDistance) - set the tap distance threshold. -* [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_duration) - set the duration of zoom transitions. -* [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_interpolate) - control the interpolation of zoom transitions. -* [*zoom*.on](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoom_on) - listen for zoom events. -* [d3.zoomTransform](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoomTransform) - get the zoom transform for a given element. -* [*transform*.scale](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_scale) - scale a transform by the specified amount. -* [*transform*.translate](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_translate) - translate a transform by the specified amount. -* [*transform*.apply](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_apply) - apply the transform to the given point. -* [*transform*.applyX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_applyX) - apply the transform to the given *x*-coordinate. -* [*transform*.applyY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_applyY) - apply the transform to the given *y*-coordinate. -* [*transform*.invert](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invert) - unapply the transform to the given point. -* [*transform*.invertX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invertX) - unapply the transform to the given *x*-coordinate. -* [*transform*.invertY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_invertY) - unapply the transform to the given *y*-coordinate. -* [*transform*.rescaleX](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_rescaleX) - apply the transform to an *x*-scale’s domain. -* [*transform*.rescaleY](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_rescaleY) - apply the transform to a *y*-scale’s domain. -* [*transform*.toString](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#transform_toString) - format the transform as an SVG transform string. -* [d3.zoomIdentity](https://github.com/d3/d3-zoom/blob/v2.0.0/README.md#zoomIdentity) - the identity transform. +* [d3.zoom](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom) - create a zoom behavior. +* [*zoom*](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#_zoom) - apply the zoom behavior to the selected elements. +* [*zoom*.transform](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_transform) - change the transform for the selected elements. +* [*zoom*.translateBy](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_translateBy) - translate the transform for the selected elements. +* [*zoom*.translateTo](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_translateTo) - translate the transform for the selected elements. +* [*zoom*.scaleBy](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_scaleBy) - scale the transform for the selected elements. +* [*zoom*.scaleTo](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_scaleTo) - scale the transform for the selected elements. +* [*zoom*.constrain](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_constrain) - override the transform constraint logic. +* [*zoom*.filter](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_filter) - control which input events initiate zooming. +* [*zoom*.touchable](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_touchable) - set the touch support detector. +* [*zoom*.wheelDelta](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_wheelDelta) - override scaling for wheel events. +* [*zoom*.extent](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_extent) - set the extent of the viewport. +* [*zoom*.scaleExtent](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_scaleExtent) - set the allowed scale range. +* [*zoom*.translateExtent](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_translateExtent) - set the extent of the zoomable world. +* [*zoom*.clickDistance](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_clickDistance) - set the click distance threshold. +* [*zoom*.tapDistance](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_tapDistance) - set the tap distance threshold. +* [*zoom*.duration](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_duration) - set the duration of zoom transitions. +* [*zoom*.interpolate](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_interpolate) - control the interpolation of zoom transitions. +* [*zoom*.on](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_on) - listen for zoom events. +* [d3.zoomTransform](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoomTransform) - get the zoom transform for a given element. +* [*transform*.scale](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_scale) - scale a transform by the specified amount. +* [*transform*.translate](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_translate) - translate a transform by the specified amount. +* [*transform*.apply](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_apply) - apply the transform to the given point. +* [*transform*.applyX](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_applyX) - apply the transform to the given *x*-coordinate. +* [*transform*.applyY](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_applyY) - apply the transform to the given *y*-coordinate. +* [*transform*.invert](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_invert) - unapply the transform to the given point. +* [*transform*.invertX](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_invertX) - unapply the transform to the given *x*-coordinate. +* [*transform*.invertY](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_invertY) - unapply the transform to the given *y*-coordinate. +* [*transform*.rescaleX](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_rescaleX) - apply the transform to an *x*-scale’s domain. +* [*transform*.rescaleY](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_rescaleY) - apply the transform to a *y*-scale’s domain. +* [*transform*.toString](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#transform_toString) - format the transform as an SVG transform string. +* [d3.zoomIdentity](https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoomIdentity) - the identity transform. From 1b8bada730e1b38f75cef155cf7ae81ebfe08eeb Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 11 Jun 2021 11:10:19 -0700 Subject: [PATCH 103/311] 7.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 28a817ecea1e16..3c1a76e694a7b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "6.7.0", + "version": "7.0.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 40ec4002dfb3da5e56a6e7593139cfc4708a221e Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 11 Jun 2021 11:16:10 -0700 Subject: [PATCH 104/311] update CHANGES --- CHANGES.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 8b37af8e5f2327..d8a20ee8b99ad6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,12 +4,14 @@ *This document covers only major changes. For minor and patch changes, please see the [release notes](https://github.com/d3/d3/releases).* -D3 now ships as pure ES modules, requiring Node.js 12 or higher. For more, please read [Sindre Sorhus’s FAQ](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c). +D3 now ships as pure ES modules and requires Node.js 12 or higher. For more, please read [Sindre Sorhus’s FAQ](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c). [d3.bin](https://github.com/d3/d3-array/blob/main/README.md#bin) now ignores nulls. [d3.ascending](https://github.com/d3/d3-array/blob/main/README.md#ascending) and [d3.descending](https://github.com/d3/d3-array/blob/main/README.md#descending) no longer consider null comparable. [Ordinal scales](https://github.com/d3/d3-scale/blob/main/README.md#ordinal-scales) now use [InternMap](https://github.com/mbostock/internmap) for domains; domain values are now uniqued by coercing to a primitive value via *object*.valueOf instead of coercing to a string via *object*.toString. +Array-likes (*e.g.*, a live NodeList such as *element*.childNodes) are converted to arrays in [d3.selectAll](https://github.com/d3/d3-selection/blob/main/README.md#selectAll) and [*selection*.selectAll](https://github.com/d3/d3-selection/blob/main/README.md#selection_selectAll). + # Changes in D3 6.0 [Released August 26, 2020.](https://github.com/d3/d3/releases/tag/v6.0.0) From 13460d0330e0b730adf67a3e6e24b5a8f01ae19e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Fri, 11 Jun 2021 21:05:28 +0200 Subject: [PATCH 105/311] d3-interpolate 3.0.1 --- API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API.md b/API.md index 79df6ee6b0df07..83f23c24581f4a 100644 --- a/API.md +++ b/API.md @@ -764,7 +764,7 @@ Layout algorithms for visualizing hierarchical data. * [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packSiblings) - pack the specified array of circles. * [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packEnclose) - enclose the specified array of circles. -## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v2.0.1) +## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v3.0.1) Interpolate numbers, colors, strings, arrays, objects, whatever! From 558b4139953a41c34c13df98017b8bc10fb5d6a2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 4 Jul 2021 13:09:58 -0400 Subject: [PATCH 106/311] Update README.md --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9d6e2700794a28..3cb166efa7f762 100644 --- a/README.md +++ b/README.md @@ -61,14 +61,18 @@ Or import everything into a namespace (here, `d3`): import * as d3 from "d3"; ``` -In Node: +Or using dynamic import: ```js -const d3 = require("d3"); +const d3 = await import("d3"); ``` -You can also require individual modules and combine them into a `d3` object using [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign): +You can also import individual modules and combine them into a `d3` object using [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign): ```js -const d3 = Object.assign({}, require("d3-format"), require("d3-geo"), require("d3-geo-projection")); +const d3 = await Promise.all([ + import("d3-format"), + import("d3-geo"), + import("d3-geo-projection") +]).then(d3 => Object.assign({}, ...d3)); ``` From e93d04b1bf14ac16ab78a25dcf063fcc4f102530 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 16 Aug 2021 13:00:43 -0700 Subject: [PATCH 107/311] d3-array 3.0.2 --- API.md | 188 ++++++++++++++++++++++++++--------------------------- yarn.lock | 190 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 200 insertions(+), 178 deletions(-) diff --git a/API.md b/API.md index 83f23c24581f4a..415c08f6874401 100644 --- a/API.md +++ b/API.md @@ -39,114 +39,114 @@ D3 uses [semantic versioning](http://semver.org/). The current version is expose Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.0.1/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.0.2/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.0.1/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.0.1/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.1/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.0.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.1/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.1/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.0.1/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.0.2/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.0.2/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.2/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.2/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.0.2/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.2/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.2/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.2/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.0.2/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.0.1/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.1/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.1/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.1/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.1/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.0.1/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.0.2/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.2/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.2/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.2/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.0.2/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.0.1/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.1/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.1/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.0.1/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.1/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.1/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.1/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.0.1/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.1/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.1/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.1/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.1/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.1/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.1/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.1/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.1/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.1/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.0.1/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.1/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.1/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.0.1/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.0.1/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.0.1/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.1/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.0.1/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.1/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.1/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.0.1/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.1/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.1/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.1/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.1/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.1/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.0.1/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.0.2/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.2/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.2/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.0.2/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.2/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.2/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.0.2/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.2/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.2/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.2/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.2/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.2/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.2/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.2/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.2/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.2/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.2/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.0.2/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.2/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.2/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.0.2/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.0.2/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.0.2/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.2/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.0.2/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.2/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.2/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.2/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.2/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.2/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.2/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.2/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.0.2/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.0.1/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.1/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.1/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.0.2/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.0.1/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.0.2/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.1/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.1/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.2/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.2/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 052033f86ce808..90c2992c2e4e7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,9 +17,9 @@ "@babel/highlight" "^7.14.5" "@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" @@ -30,10 +30,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -45,6 +45,20 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + "@rollup/plugin-json@4": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -53,9 +67,9 @@ "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" - integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== + version "13.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz#b10222f4145a019740acb7738402130d848660c0" + integrity sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -79,9 +93,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "15.12.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" - integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== + version "16.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61" + integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw== "@types/resolve@1.17.1": version "1.17.1" @@ -96,9 +110,9 @@ integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^3.2.0: version "3.3.0" @@ -121,9 +135,9 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" - integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== + version "8.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" + integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -159,7 +173,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@~3.1.1: +anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -215,9 +229,9 @@ browser-stdout@1.3.1: integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== builtin-modules@^3.1.0: version "3.2.0" @@ -244,27 +258,27 @@ chalk@^2.0.0: supports-color "^5.3.0" chalk@^4.0.0, chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" cliui@^7.0.2: version "7.0.4" @@ -324,9 +338,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.1.tgz#ca45c263f5bb780ab5a34a6e1d3d5883fe4a8d14" - integrity sha512-l3Bh5o8RSoC3SBm5ix6ogaFW+J6rOUm42yOtZ2sQPCEvCqUMepeX7zgrlLLGIemxgOyo9s2CsWEidnLv5PwwRw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.2.tgz#7a65593784cfc0150eee1aba8d3e69a6fe73be7b" + integrity sha512-nTN4OC6ufZueotlexbxBd2z8xmG1eIfhvP2m1auH2ONps0L+AZn1r0JWuzMXZ6XgOj1VBOp7GGZmEs9NUFEBbA== dependencies: internmap "1 - 2" @@ -531,13 +545,20 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -debug@4.3.1, debug@^4.0.1, debug@^4.1.1: +debug@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" +debug@^4.0.1, debug@^4.1.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -625,12 +646,13 @@ eslint-visitor-keys@^2.0.0: integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint@7: - version "7.28.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" - integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -773,16 +795,16 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + version "3.2.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" + integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -802,7 +824,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -glob-parent@^5.1.2, glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -822,9 +844,9 @@ glob@7.1.7, glob@^7.1.3: path-is-absolute "^1.0.0" globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + version "13.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" + integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== dependencies: type-fest "^0.20.2" @@ -906,9 +928,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== dependencies: has "^1.0.3" @@ -1073,14 +1095,14 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: brace-expansion "^1.1.7" mocha@9: - version "9.0.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.0.tgz#67ce848170cb6426f9e84c57e38376dc9017bab4" - integrity sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g== + version "9.0.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.3.tgz#128cd6bbd3ee0adcdaef715f357f76ec1e6227c7" + integrity sha512-hnYFrSefHxYS2XFGtN01x8un0EwNu2bzKvhpRFhgoybIvMaOkkL60IVPmkb5h6XDmUl4IMSB+rT5cIO4/4bJgg== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.1" + chokidar "3.5.2" debug "4.3.1" diff "5.0.0" escape-string-regexp "4.0.0" @@ -1093,12 +1115,12 @@ mocha@9: minimatch "3.0.4" ms "2.1.3" nanoid "3.1.23" - serialize-javascript "5.0.1" + serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" wide-align "1.1.3" - workerpool "6.1.4" + workerpool "6.1.5" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -1215,17 +1237,17 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== require-directory@^2.1.1: version "2.1.1" @@ -1292,11 +1314,11 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.51.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.2.tgz#6de71e28c833089a0bd745a09671a3e2b92af6b7" - integrity sha512-ReV2eGEadA7hmXSzjxdDKs10neqH2QURf2RxJ6ayAlq93ugy6qIvXMmbc5cWMGCDh1h5T4thuWO1e2VNbMq8FA== + version "2.56.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.2.tgz#a045ff3f6af53ee009b5f5016ca3da0329e5470f" + integrity sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ== optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" rw@1: version "1.3.3" @@ -1320,10 +1342,10 @@ semver@^7.2.1: dependencies: lru-cache "^6.0.0" -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -1448,9 +1470,9 @@ table@^6.0.9: strip-ansi "^6.0.0" terser@^5.0.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== + version "5.7.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.1.tgz#2dc7a61009b66bb638305cb2a824763b116bf784" + integrity sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -1516,10 +1538,10 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.4.tgz#6a972b6df82e38d50248ee2820aa98e2d0ad3090" - integrity sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g== +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== wrap-ansi@^7.0.0: version "7.0.0" @@ -1551,9 +1573,9 @@ yargs-parser@20.2.4: integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" From 0baee7d3f89dce3977d4f8e7f82139472b7fa314 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 16 Aug 2021 13:01:24 -0700 Subject: [PATCH 108/311] 7.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c1a76e694a7b5..55980fd15f71f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.0.0", + "version": "7.0.1", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From ba3eb33f524dfa939624f866e0b6f94b54b3519d Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 19 Sep 2021 11:33:03 -0700 Subject: [PATCH 109/311] d3-array 3.0.3, d3-scale 4.0.1 --- API.md | 488 +++++++++++++++++++++++++++--------------------------- yarn.lock | 82 ++++----- 2 files changed, 285 insertions(+), 285 deletions(-) diff --git a/API.md b/API.md index 415c08f6874401..01104850a04799 100644 --- a/API.md +++ b/API.md @@ -35,118 +35,118 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.1) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.3) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.0.2/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.0.3/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.0.2/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.0.2/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.2/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.2/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.0.2/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.2/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.2/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.2/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.2/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.2/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.0.2/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.0.3/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.0.3/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.3/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.3/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.0.3/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.3/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.3/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.3/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.0.3/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.0.2/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.2/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.2/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.2/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.2/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.2/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.0.2/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.0.3/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.3/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.3/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.3/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.0.3/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.0.2/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.2/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.2/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.0.2/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.2/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.2/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.2/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.0.2/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.2/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.2/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.2/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.2/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.2/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.2/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.2/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.2/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.2/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.2/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.0.2/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.2/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.2/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.0.2/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.0.2/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.0.2/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.2/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.0.2/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.2/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.2/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.0.2/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.2/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.2/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.2/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.2/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.2/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.0.2/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.0.3/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.3/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.3/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.0.3/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.3/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.3/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.0.3/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.3/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.3/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.3/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.3/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.3/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.3/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.3/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.3/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.3/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.3/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.0.3/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.3/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.3/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.0.3/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.0.3/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.0.3/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.3/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.0.3/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.3/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.3/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.3/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.3/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.3/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.3/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.3/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.0.3/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.0.2/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.2/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.2/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.0.3/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.0.2/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.0.3/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.2/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.2/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.3/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.3/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) @@ -868,173 +868,173 @@ Generate random numbers from various distributions. * [*random*.source](https://github.com/d3/d3-random/blob/v3.0.1/README.md#random_source) - set the source of randomness. * [d3.randomLcg](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomLcg) - a seeded pseudorandom number generator. -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v4.0.0) +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v4.0.1) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#continuous_copy) - create a copy of this scale. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#tickFormat) - format ticks for human consumption. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#symlog_constant) - set the constant of a symlog scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleIdentity) - creates an identity scale. -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleRadial) - creates a radial scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleUtc) - create a linear scale for UTC. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#tickFormat) - format ticks for human consumption. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleRadial) - creates a radial scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleUtc) - create a linear scale for UTC. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_sequential) - compute the range value corresponding to an input value. -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_domain) - set the input domain. -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_clamp) - enable clamping to the domain. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_range) - set the output range. -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_rangeRound) - set the output range and enable rounding. -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequential_copy) - create a copy of this scale. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialLog) - create a logarithmic sequential scale. -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialPow) - create a power sequential scale. -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging-scales) +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_clamp) - enable clamping to the domain. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. + +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_diverging) - compute the range value corresponding to an input value. -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_domain) - set the input domain. -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_clamp) - enable clamping to the domain or range. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_range) - set the output range. -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_rangeRound) - set the output range and enable rounding. -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_copy) - create a copy of this scale. -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#diverging_unknown) - set the output value for unknown inputs. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingLog) - create a diverging logarithmic scale. -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingPow) - create a diverging power scale. -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize-scales) +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_clamp) - enable clamping to the domain or range. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. + +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_range) - set the output range. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_range) - set the output range. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v4.0.0/README.md#point_copy) - create a copy of this scale. +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_copy) - create a copy of this scale. ## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 90c2992c2e4e7c..3756eeed481166 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,9 +17,9 @@ "@babel/highlight" "^7.14.5" "@babel/helper-validator-identifier@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" @@ -93,9 +93,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.6.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61" - integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw== + version "16.9.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.4.tgz#a12f0ee7847cf17a97f6fdf1093cb7a9af23cca4" + integrity sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA== "@types/resolve@1.17.1": version "1.17.1" @@ -135,9 +135,9 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -155,9 +155,9 @@ ansi-regex@^3.0.0: integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" @@ -338,9 +338,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.2.tgz#7a65593784cfc0150eee1aba8d3e69a6fe73be7b" - integrity sha512-nTN4OC6ufZueotlexbxBd2z8xmG1eIfhvP2m1auH2ONps0L+AZn1r0JWuzMXZ6XgOj1VBOp7GGZmEs9NUFEBbA== + version "3.0.3" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.3.tgz#ab42baeeb4718591966db05bd7140ae2a36ac0c4" + integrity sha512-mGU5ultTdQmCg57Bsz5MacfpcgOWjoetJSCh0Q3Azr6gX9s2PE8KAA/3S8ipwH6kmGPACHr+eyTq4MG9DnGPjA== dependencies: internmap "1 - 2" @@ -482,9 +482,9 @@ d3-scale-chromatic@3: d3-interpolate "1 - 3" d3-scale@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.0.tgz#294377ea1d7e5a31509ee648b98d7916ac0b34e3" - integrity sha512-foHQYKpWQcyndH1CGoHdUC4PECxTxonzwwBXGT8qu+Drb1FIc6ON6dG2P5f4hRRMkLiIKeWK7iFtdznDUrnuPQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.1.tgz#c65aa7a357e4f58954a66e1edacc712bab4b1034" + integrity sha512-akUAsUujCFnw6Sf1dF7y/FXTxz+VvEIOB3ValKtLhNrzFp8q5wPO3VCAmsbCLJWRTxyJCZDoooodjOI1plFqlw== dependencies: d3-array "2.10.0 - 3" d3-format "1 - 3" @@ -565,9 +565,9 @@ decamelize@^4.0.0: integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.2.2" @@ -916,9 +916,9 @@ inherits@2: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== "internmap@1 - 2": - version "2.0.1" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.1.tgz#33d0fa016185397549fb1a14ea3dbe5a2949d1cd" - integrity sha512-Ujwccrj9FkGqjbY3iVoxD1VV+KdZZeENx0rphrtzmRXbFvkFO88L80BL/zeSIguX/7T+y8k04xqtgWgS5vxwxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.2.tgz#3efa1165209cc56133df1400df9c34a73e0dad93" + integrity sha512-6O4dJQZN4+83kg9agi21fbasiAn7V2JRvLv29/YT1Kz8f+ngakB1hMG+AP0mYquLOtjWhNO8CvKhhXT/7Tla/g== is-binary-path@~2.1.0: version "2.1.0" @@ -928,9 +928,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== dependencies: has "^1.0.3" @@ -1095,9 +1095,9 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: brace-expansion "^1.1.7" mocha@9: - version "9.0.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.3.tgz#128cd6bbd3ee0adcdaef715f357f76ec1e6227c7" - integrity sha512-hnYFrSefHxYS2XFGtN01x8un0EwNu2bzKvhpRFhgoybIvMaOkkL60IVPmkb5h6XDmUl4IMSB+rT5cIO4/4bJgg== + version "9.1.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.1.tgz#33df2eb9c6262434630510c5f4283b36efda9b61" + integrity sha512-0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" @@ -1314,9 +1314,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.56.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.2.tgz#a045ff3f6af53ee009b5f5016ca3da0329e5470f" - integrity sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ== + version "2.56.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" + integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== optionalDependencies: fsevents "~2.3.2" @@ -1377,10 +1377,10 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +source-map-support@~0.5.20: + version "0.5.20" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -1470,13 +1470,13 @@ table@^6.0.9: strip-ansi "^6.0.0" terser@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.1.tgz#2dc7a61009b66bb638305cb2a824763b116bf784" - integrity sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg== + version "5.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947" + integrity sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A== dependencies: commander "^2.20.0" source-map "~0.7.2" - source-map-support "~0.5.19" + source-map-support "~0.5.20" text-table@^0.2.0: version "0.2.0" From 70383cda88cc324534a1b3f0e724f34497ef2c1c Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 19 Sep 2021 11:33:19 -0700 Subject: [PATCH 110/311] 7.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55980fd15f71f2..db52d061fbfa0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.0.1", + "version": "7.0.2", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 90a5f2fb1ad38d66621762e1fcda5180fa5869c2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 19 Sep 2021 20:16:39 -0700 Subject: [PATCH 111/311] d3-array 3.0.4 --- API.md | 190 +++++++++++++++++++++++------------------------ rollup.config.js | 6 ++ yarn.lock | 12 +-- 3 files changed, 107 insertions(+), 101 deletions(-) diff --git a/API.md b/API.md index 01104850a04799..fb082b0a16c2ac 100644 --- a/API.md +++ b/API.md @@ -35,118 +35,118 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.3) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.4) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.0.3/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.0.4/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.0.3/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.0.3/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.3/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.3/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.0.3/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.3/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.3/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.3/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.3/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.3/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.0.3/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.0.4/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.0.4/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.4/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.4/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.0.4/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.4/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.4/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.4/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.0.4/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.0.3/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.3/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.3/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.3/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.3/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.3/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.0.3/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.0.4/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.4/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.4/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.4/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.0.4/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.0.3/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.3/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.3/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.0.3/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.3/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.3/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.3/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.0.3/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.3/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.3/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.3/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.3/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.3/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.3/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.3/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.3/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.3/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.3/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.0.3/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.3/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.3/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.0.3/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.0.3/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.0.3/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.3/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.0.3/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.3/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.3/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.0.3/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.3/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.3/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.3/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.3/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.3/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.0.3/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.0.4/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.4/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.4/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.0.4/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.4/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.4/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.0.4/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.4/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.4/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.4/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.4/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.4/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.4/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.4/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.4/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.4/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.4/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.0.4/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.4/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.4/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.0.4/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.0.4/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.0.4/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.4/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.0.4/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.4/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.4/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.4/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.4/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.4/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.4/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.4/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.0.4/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.0.3/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.3/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.3/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.0.4/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.0.3/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.0.4/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.3/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.3/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.4/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.4/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/rollup.config.js b/rollup.config.js index eeb70e1eee7772..d46fb6f0e0e9d8 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -46,6 +46,12 @@ export default [ terser({ output: { preamble: config.output.banner + }, + mangle: { + reserved: [ + "InternMap", + "InternSet" + ] } }) ] diff --git a/yarn.lock b/yarn.lock index 3756eeed481166..7fbce58768f48e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -338,9 +338,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.3.tgz#ab42baeeb4718591966db05bd7140ae2a36ac0c4" - integrity sha512-mGU5ultTdQmCg57Bsz5MacfpcgOWjoetJSCh0Q3Azr6gX9s2PE8KAA/3S8ipwH6kmGPACHr+eyTq4MG9DnGPjA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.4.tgz#60550bcc9818be9ace88d269ccd97038fc399b55" + integrity sha512-ShFl90cxNqDaSynDF/Bik/kTzISqePqU3qo2fv6kSJEvF7y7tDCDpcU6WiT01rPO6zngZnrvJ/0j4q6Qg+5EQg== dependencies: internmap "1 - 2" @@ -916,9 +916,9 @@ inherits@2: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== "internmap@1 - 2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.2.tgz#3efa1165209cc56133df1400df9c34a73e0dad93" - integrity sha512-6O4dJQZN4+83kg9agi21fbasiAn7V2JRvLv29/YT1Kz8f+ngakB1hMG+AP0mYquLOtjWhNO8CvKhhXT/7Tla/g== + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== is-binary-path@~2.1.0: version "2.1.0" From 156352444d2faa87aee1c0b4fa52bed5061bbea8 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 19 Sep 2021 20:16:43 -0700 Subject: [PATCH 112/311] 7.0.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db52d061fbfa0d..9ebf1d6961955d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.0.2", + "version": "7.0.3", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From f7bf837264062cdd55ac8432e247fc7276010374 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 24 Sep 2021 10:45:48 -0700 Subject: [PATCH 113/311] update d3-scale --- API.md | 298 +++++++++++++++++++++++++++--------------------------- yarn.lock | 64 +++++++----- 2 files changed, 187 insertions(+), 175 deletions(-) diff --git a/API.md b/API.md index fb082b0a16c2ac..6389f70b0145ab 100644 --- a/API.md +++ b/API.md @@ -868,173 +868,173 @@ Generate random numbers from various distributions. * [*random*.source](https://github.com/d3/d3-random/blob/v3.0.1/README.md#random_source) - set the source of randomness. * [d3.randomLcg](https://github.com/d3/d3-random/blob/v3.0.1/README.md#randomLcg) - a seeded pseudorandom number generator. -## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v4.0.1) +## [Scales (d3-scale)](https://github.com/d3/d3-scale/tree/v4.0.2) Encodings that map abstract data to visual representation. -### [Continuous Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous-scales) +### [Continuous Scales](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous-scales) Map a continuous, quantitative domain to a continuous range. -* [*continuous*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_continuous) - compute the range value corresponding to a given domain value. -* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_invert) - compute the domain value corresponding to a given range value. -* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_domain) - set the input domain. -* [*continuous*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_range) - set the output range. -* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_rangeRound) - set the output range and enable rounding. -* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_clamp) - enable clamping to the domain or range. -* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_unknown) - set the output value for unknown inputs. -* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_interpolate) - set the output interpolator. -* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_ticks) - compute representative values from the domain. -* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_tickFormat) - format ticks for human consumption. -* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_nice) - extend the domain to nice round numbers. -* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#continuous_copy) - create a copy of this scale. -* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#tickFormat) - format ticks for human consumption. -* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleLinear) - create a quantitative linear scale. -* [d3.scalePow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scalePow) - create a quantitative power scale. -* [*pow*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_pow) - compute the range value corresponding to a given domain value. -* [*pow*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_invert) - compute the domain value corresponding to a given range value. -* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_exponent) - set the power exponent. -* [*pow*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_domain) - set the input domain. -* [*pow*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_range) - set the output range. -* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_rangeRound) - set the output range and enable rounding. -* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_clamp) - enable clamping to the domain or range. -* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_interpolate) - set the output interpolator. -* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_ticks) - compute representative values from the domain. -* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_tickFormat) - format ticks for human consumption. -* [*pow*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_nice) - extend the domain to nice round numbers. -* [*pow*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#pow_copy) - create a copy of this scale. -* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. -* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleLog) - create a quantitative logarithmic scale. -* [*log*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_log) - compute the range value corresponding to a given domain value. -* [*log*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_invert) - compute the domain value corresponding to a given range value. -* [*log*.base](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_base) - set the logarithm base. -* [*log*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_domain) - set the input domain. -* [*log*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_range) - set the output range. -* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_rangeRound) - set the output range and enable rounding. -* [*log*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_clamp) - enable clamping to the domain or range. -* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_interpolate) - set the output interpolator. -* [*log*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_ticks) - compute representative values from the domain. -* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_tickFormat) - format ticks for human consumption. -* [*log*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_nice) - extend the domain to nice round numbers. -* [*log*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#log_copy) - create a copy of this scale. -* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSymlog) - create a symmetric logarithmic scale. -* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#symlog_constant) - set the constant of a symlog scale. -* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleIdentity) - creates an identity scale. -* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleRadial) - creates a radial scale. -* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleTime) - create a linear scale for time. -* [*time*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_time) - compute the range value corresponding to a given domain value. -* [*time*.invert](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_invert) - compute the domain value corresponding to a given range value. -* [*time*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_domain) - set the input domain. -* [*time*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_range) - set the output range. -* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_rangeRound) - set the output range and enable rounding. -* [*time*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_clamp) - enable clamping to the domain or range. -* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_interpolate) - set the output interpolator. -* [*time*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_ticks) - compute representative values from the domain. -* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_tickFormat) - format ticks for human consumption. -* [*time*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_nice) - extend the domain to nice round times. -* [*time*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#time_copy) - create a copy of this scale. -* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleUtc) - create a linear scale for UTC. - -### [Sequential Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential-scales) +* [*continuous*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_continuous) - compute the range value corresponding to a given domain value. +* [*continuous*.invert](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_invert) - compute the domain value corresponding to a given range value. +* [*continuous*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_domain) - set the input domain. +* [*continuous*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_range) - set the output range. +* [*continuous*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_rangeRound) - set the output range and enable rounding. +* [*continuous*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_clamp) - enable clamping to the domain or range. +* [*continuous*.unknown](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_unknown) - set the output value for unknown inputs. +* [*continuous*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_interpolate) - set the output interpolator. +* [*continuous*.ticks](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_ticks) - compute representative values from the domain. +* [*continuous*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_tickFormat) - format ticks for human consumption. +* [*continuous*.nice](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_nice) - extend the domain to nice round numbers. +* [*continuous*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#continuous_copy) - create a copy of this scale. +* [d3.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#tickFormat) - format ticks for human consumption. +* [d3.scaleLinear](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleLinear) - create a quantitative linear scale. +* [d3.scalePow](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scalePow) - create a quantitative power scale. +* [*pow*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_pow) - compute the range value corresponding to a given domain value. +* [*pow*.invert](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_invert) - compute the domain value corresponding to a given range value. +* [*pow*.exponent](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_exponent) - set the power exponent. +* [*pow*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_domain) - set the input domain. +* [*pow*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_range) - set the output range. +* [*pow*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_rangeRound) - set the output range and enable rounding. +* [*pow*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_clamp) - enable clamping to the domain or range. +* [*pow*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_interpolate) - set the output interpolator. +* [*pow*.ticks](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_ticks) - compute representative values from the domain. +* [*pow*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_tickFormat) - format ticks for human consumption. +* [*pow*.nice](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_nice) - extend the domain to nice round numbers. +* [*pow*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#pow_copy) - create a copy of this scale. +* [d3.scaleSqrt](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSqrt) - create a quantitative power scale with exponent 0.5. +* [d3.scaleLog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleLog) - create a quantitative logarithmic scale. +* [*log*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_log) - compute the range value corresponding to a given domain value. +* [*log*.invert](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_invert) - compute the domain value corresponding to a given range value. +* [*log*.base](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_base) - set the logarithm base. +* [*log*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_domain) - set the input domain. +* [*log*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_range) - set the output range. +* [*log*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_rangeRound) - set the output range and enable rounding. +* [*log*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_clamp) - enable clamping to the domain or range. +* [*log*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_interpolate) - set the output interpolator. +* [*log*.ticks](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_ticks) - compute representative values from the domain. +* [*log*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_tickFormat) - format ticks for human consumption. +* [*log*.nice](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_nice) - extend the domain to nice round numbers. +* [*log*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#log_copy) - create a copy of this scale. +* [d3.scaleSymlog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSymlog) - create a symmetric logarithmic scale. +* [*symlog*.constant](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#symlog_constant) - set the constant of a symlog scale. +* [d3.scaleIdentity](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleIdentity) - creates an identity scale. +* [d3.scaleRadial](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleRadial) - creates a radial scale. +* [d3.scaleTime](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleTime) - create a linear scale for time. +* [*time*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_time) - compute the range value corresponding to a given domain value. +* [*time*.invert](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_invert) - compute the domain value corresponding to a given range value. +* [*time*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_domain) - set the input domain. +* [*time*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_range) - set the output range. +* [*time*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_rangeRound) - set the output range and enable rounding. +* [*time*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_clamp) - enable clamping to the domain or range. +* [*time*.interpolate](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_interpolate) - set the output interpolator. +* [*time*.ticks](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_ticks) - compute representative values from the domain. +* [*time*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_tickFormat) - format ticks for human consumption. +* [*time*.nice](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_nice) - extend the domain to nice round times. +* [*time*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#time_copy) - create a copy of this scale. +* [d3.scaleUtc](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleUtc) - create a linear scale for UTC. + +### [Sequential Scales](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequential) - create a sequential scale. -* [*sequential*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_sequential) - compute the range value corresponding to an input value. -* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_domain) - set the input domain. -* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_clamp) - enable clamping to the domain. -* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_interpolator) - set the scale’s output interpolator. -* [*sequential*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_range) - set the output range. -* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_rangeRound) - set the output range and enable rounding. -* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequential_copy) - create a copy of this scale. -* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialLog) - create a logarithmic sequential scale. -* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialPow) - create a power sequential scale. -* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. -* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. -* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. -* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. - -### [Diverging Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging-scales) +* [d3.scaleSequential](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequential) - create a sequential scale. +* [*sequential*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_sequential) - compute the range value corresponding to an input value. +* [*sequential*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_domain) - set the input domain. +* [*sequential*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_clamp) - enable clamping to the domain. +* [*sequential*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_interpolator) - set the scale’s output interpolator. +* [*sequential*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_range) - set the output range. +* [*sequential*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_rangeRound) - set the output range and enable rounding. +* [*sequential*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequential_copy) - create a copy of this scale. +* [d3.scaleSequentialLog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequentialLog) - create a logarithmic sequential scale. +* [d3.scaleSequentialPow](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequentialPow) - create a power sequential scale. +* [d3.scaleSequentialSqrt](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequentialSqrt) - create a power sequential scale with exponent 0.5. +* [d3.scaleSequentialSymlog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequentialSymlog) - create a symmetric logarithmic sequential scale. +* [d3.scaleSequentialQuantile](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleSequentialQuantile) - create a sequential scale using a *p*-quantile transform. +* [*sequentialQuantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#sequentialQuantile_quantiles) - return the scale’s quantiles. + +### [Diverging Scales](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging-scales) Map a continuous, quantitative domain to a continuous, fixed interpolator. -* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDiverging) - create a diverging scale. -* [*diverging*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_diverging) - compute the range value corresponding to an input value. -* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_domain) - set the input domain. -* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_clamp) - enable clamping to the domain or range. -* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_interpolator) - set the scale’s output interpolator. -* [*diverging*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_range) - set the output range. -* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_rangeRound) - set the output range and enable rounding. -* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_copy) - create a copy of this scale. -* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#diverging_unknown) - set the output value for unknown inputs. -* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingLog) - create a diverging logarithmic scale. -* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingPow) - create a diverging power scale. -* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. -* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. - -### [Quantize Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize-scales) +* [d3.scaleDiverging](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleDiverging) - create a diverging scale. +* [*diverging*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_diverging) - compute the range value corresponding to an input value. +* [*diverging*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_domain) - set the input domain. +* [*diverging*.clamp](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_clamp) - enable clamping to the domain or range. +* [*diverging*.interpolator](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_interpolator) - set the scale’s output interpolator. +* [*diverging*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_range) - set the output range. +* [*diverging*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_rangeRound) - set the output range and enable rounding. +* [*diverging*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_copy) - create a copy of this scale. +* [*diverging*.unknown](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#diverging_unknown) - set the output value for unknown inputs. +* [d3.scaleDivergingLog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleDivergingLog) - create a diverging logarithmic scale. +* [d3.scaleDivergingPow](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleDivergingPow) - create a diverging power scale. +* [d3.scaleDivergingSqrt](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleDivergingSqrt) - create a diverging power scale with exponent 0.5. +* [d3.scaleDivergingSymlog](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleDivergingSymlog) - create a diverging symmetric logarithmic scale. + +### [Quantize Scales](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize-scales) Map a continuous, quantitative domain to a discrete range. -* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleQuantize) - create a uniform quantizing linear scale. -* [*quantize*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_quantize) - compute the range value corresponding to a given domain value. -* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_domain) - set the input domain. -* [*quantize*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_range) - set the output range. -* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_ticks) - compute representative values from the domain. -* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_tickFormat) - format ticks for human consumption. -* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_nice) - extend the domain to nice round numbers. -* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. -* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantize_copy) - create a copy of this scale. -* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleQuantile) - create a quantile quantizing linear scale. -* [*quantile*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_quantile) - compute the range value corresponding to a given domain value. -* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. -* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_domain) - set the input domain. -* [*quantile*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_range) - set the output range. -* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_quantiles) - get the quantile thresholds. -* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#quantile_copy) - create a copy of this scale. -* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. -* [*threshold*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_threshold) - compute the range value corresponding to a given domain value. -* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. -* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_domain) - set the input domain. -* [*threshold*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_range) - set the output range. -* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#threshold_copy) - create a copy of this scale. - -### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal-scales) +* [d3.scaleQuantize](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleQuantize) - create a uniform quantizing linear scale. +* [*quantize*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_quantize) - compute the range value corresponding to a given domain value. +* [*quantize*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantize*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_domain) - set the input domain. +* [*quantize*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_range) - set the output range. +* [*quantize*.ticks](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_ticks) - compute representative values from the domain. +* [*quantize*.tickFormat](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_tickFormat) - format ticks for human consumption. +* [*quantize*.nice](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_nice) - extend the domain to nice round numbers. +* [*quantize*.thresholds](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_thresholds) - return the array of computed thresholds within the domain. +* [*quantize*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantize_copy) - create a copy of this scale. +* [d3.scaleQuantile](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleQuantile) - create a quantile quantizing linear scale. +* [*quantile*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_quantile) - compute the range value corresponding to a given domain value. +* [*quantile*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantile_invertExtent) - compute the domain values corresponding to a given range value. +* [*quantile*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantile_domain) - set the input domain. +* [*quantile*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantile_range) - set the output range. +* [*quantile*.quantiles](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantile_quantiles) - get the quantile thresholds. +* [*quantile*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#quantile_copy) - create a copy of this scale. +* [d3.scaleThreshold](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleThreshold) - create an arbitrary quantizing linear scale. +* [*threshold*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_threshold) - compute the range value corresponding to a given domain value. +* [*threshold*.invertExtent](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#threshold_invertExtent) - compute the domain values corresponding to a given range value. +* [*threshold*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#threshold_domain) - set the input domain. +* [*threshold*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#threshold_range) - set the output range. +* [*threshold*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#threshold_copy) - create a copy of this scale. + +### [Ordinal Scales](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#ordinal-scales) Map a discrete domain to a discrete range. -* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleOrdinal) - create an ordinal scale. -* [*ordinal*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_ordinal) - compute the range value corresponding to a given domain value. -* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_domain) - set the input domain. -* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_range) - set the output range. -* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_unknown) - set the output value for unknown inputs. -* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#ordinal_copy) - create a copy of this scale. -* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleImplicit) - a special unknown value for implicit domains. -* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scaleBand) - create an ordinal band scale. -* [*band*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_band) - compute the band start corresponding to a given domain value. -* [*band*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_domain) - set the input domain. -* [*band*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_range) - set the output range. -* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_rangeRound) - set the output range and enable rounding. -* [*band*.round](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_round) - enable rounding. -* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_paddingInner) - set padding between bands. -* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_paddingOuter) - set padding outside the first and last bands. -* [*band*.padding](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_padding) - set padding outside and between bands. -* [*band*.align](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_align) - set band alignment, if there is extra space. -* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_bandwidth) - get the width of each band. -* [*band*.step](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_step) - get the distance between the starts of adjacent bands. -* [*band*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#band_copy) - create a copy of this scale. -* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#scalePoint) - create an ordinal point scale. -* [*point*](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#_point) - compute the point corresponding to a given domain value. -* [*point*.domain](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_domain) - set the input domain. -* [*point*.range](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_range) - set the output range. -* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_rangeRound) - set the output range and enable rounding. -* [*point*.round](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_round) - enable rounding. -* [*point*.padding](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_padding) - set padding outside the first and last point. -* [*point*.align](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_align) - set point alignment, if there is extra space. -* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_bandwidth) - returns zero. -* [*point*.step](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_step) - get the distance between the starts of adjacent points. -* [*point*.copy](https://github.com/d3/d3-scale/blob/v4.0.1/README.md#point_copy) - create a copy of this scale. +* [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleOrdinal) - create an ordinal scale. +* [*ordinal*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_ordinal) - compute the range value corresponding to a given domain value. +* [*ordinal*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#ordinal_domain) - set the input domain. +* [*ordinal*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#ordinal_range) - set the output range. +* [*ordinal*.unknown](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#ordinal_unknown) - set the output value for unknown inputs. +* [*ordinal*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#ordinal_copy) - create a copy of this scale. +* [d3.scaleImplicit](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleImplicit) - a special unknown value for implicit domains. +* [d3.scaleBand](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scaleBand) - create an ordinal band scale. +* [*band*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_band) - compute the band start corresponding to a given domain value. +* [*band*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_domain) - set the input domain. +* [*band*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_range) - set the output range. +* [*band*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_rangeRound) - set the output range and enable rounding. +* [*band*.round](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_round) - enable rounding. +* [*band*.paddingInner](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_paddingInner) - set padding between bands. +* [*band*.paddingOuter](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_paddingOuter) - set padding outside the first and last bands. +* [*band*.padding](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_padding) - set padding outside and between bands. +* [*band*.align](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_align) - set band alignment, if there is extra space. +* [*band*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_bandwidth) - get the width of each band. +* [*band*.step](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_step) - get the distance between the starts of adjacent bands. +* [*band*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#band_copy) - create a copy of this scale. +* [d3.scalePoint](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#scalePoint) - create an ordinal point scale. +* [*point*](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#_point) - compute the point corresponding to a given domain value. +* [*point*.domain](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_domain) - set the input domain. +* [*point*.range](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_range) - set the output range. +* [*point*.rangeRound](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_rangeRound) - set the output range and enable rounding. +* [*point*.round](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_round) - enable rounding. +* [*point*.padding](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_padding) - set padding outside the first and last point. +* [*point*.align](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_align) - set point alignment, if there is extra space. +* [*point*.bandwidth](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_bandwidth) - returns zero. +* [*point*.step](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_step) - get the distance between the starts of adjacent points. +* [*point*.copy](https://github.com/d3/d3-scale/blob/v4.0.2/README.md#point_copy) - create a copy of this scale. ## [Selections (d3-selection)](https://github.com/d3/d3-selection/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 7fbce58768f48e..fc5955039a6a5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -67,9 +67,9 @@ "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz#b10222f4145a019740acb7738402130d848660c0" - integrity sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w== + version "13.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz#016abe58796a4ff544d6beac7818921e3d3777fc" + integrity sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -93,9 +93,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.9.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.4.tgz#a12f0ee7847cf17a97f6fdf1093cb7a9af23cca4" - integrity sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA== + version "16.9.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.6.tgz#040a64d7faf9e5d9e940357125f0963012e66f04" + integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ== "@types/resolve@1.17.1": version "1.17.1" @@ -154,7 +154,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^5.0.0: +ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -482,9 +482,9 @@ d3-scale-chromatic@3: d3-interpolate "1 - 3" d3-scale@4: - version "4.0.1" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.1.tgz#c65aa7a357e4f58954a66e1edacc712bab4b1034" - integrity sha512-akUAsUujCFnw6Sf1dF7y/FXTxz+VvEIOB3ValKtLhNrzFp8q5wPO3VCAmsbCLJWRTxyJCZDoooodjOI1plFqlw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== dependencies: d3-array "2.10.0 - 3" d3-format "1 - 3" @@ -831,7 +831,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.1.7, glob@^7.1.3: +glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -843,6 +843,18 @@ glob@7.1.7, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^13.6.0, globals@^13.9.0: version "13.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" @@ -1314,9 +1326,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.56.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" - integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== + version "2.57.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.57.0.tgz#c1694475eb22e1022477c0f4635fd0ac80713173" + integrity sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg== optionalDependencies: fsevents "~2.3.2" @@ -1409,13 +1421,13 @@ sprintf-js@~1.0.2: strip-ansi "^4.0.0" string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" strip-ansi@^4.0.0: version "4.0.0" @@ -1424,12 +1436,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" @@ -1470,9 +1482,9 @@ table@^6.0.9: strip-ansi "^6.0.0" terser@^5.0.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947" - integrity sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A== + version "5.9.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" + integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== dependencies: commander "^2.20.0" source-map "~0.7.2" From 978036b1eda8492fb4d88239516bc3f2d3f54842 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 24 Sep 2021 10:46:10 -0700 Subject: [PATCH 114/311] 7.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9ebf1d6961955d..c7e53306f801f9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.0.3", + "version": "7.0.4", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From f62ec745dbe4a6f22c6e64725934fb88d76c1a08 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 1 Oct 2021 08:14:25 -0700 Subject: [PATCH 115/311] d3-array 3.1.0 --- API.md | 191 +++++++++++++++++++++++++++--------------------------- yarn.lock | 102 +++++++++-------------------- 2 files changed, 127 insertions(+), 166 deletions(-) diff --git a/API.md b/API.md index 6389f70b0145ab..449982d967ee3f 100644 --- a/API.md +++ b/API.md @@ -35,118 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.0.4) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.0.4/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.0.4/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.0.4/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.0.4/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.0.4/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.0.4/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.0.4/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.0.4/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.0.4/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.0.4/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.0.4/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.0.4/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.0/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.0.4/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.0.4/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.0.4/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.0.4/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.0.4/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.0.4/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.0.4/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.0.4/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.0.4/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.0.4/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.0.4/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.0.4/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.0.4/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.0.4/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.0.4/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.0.4/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.0.4/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.0.4/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.0.4/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.0.4/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.0.4/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.0.4/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.0.4/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.0.4/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.0.4/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.0.4/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.0.4/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.0.4/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.0.4/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.0.4/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.0.4/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.0.4/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.0.4/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.0.4/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.0.4/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.0.4/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.0.4/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.0.4/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.0.4/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.0.4/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.0.4/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.0.4/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.0/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.0/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.0.4/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.0.4/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.0.4/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.0.4/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.0/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.0.4/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.0.4/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.0/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.0/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index fc5955039a6a5d..715eae20dbd6fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -93,9 +93,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.9.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.6.tgz#040a64d7faf9e5d9e940357125f0963012e66f04" - integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ== + version "16.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" + integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== "@types/resolve@1.17.1": version "1.17.1" @@ -149,11 +149,6 @@ ansi-colors@4.1.1, ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -338,9 +333,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.0.4.tgz#60550bcc9818be9ace88d269ccd97038fc399b55" - integrity sha512-ShFl90cxNqDaSynDF/Bik/kTzISqePqU3qo2fv6kSJEvF7y7tDCDpcU6WiT01rPO6zngZnrvJ/0j4q6Qg+5EQg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.0.tgz#7e43a906c08a43c51a6a90692a03e9894c8fd041" + integrity sha512-XsImOCdTgRJoP3CIdgqw69++Nau4kPeNkD73HE5GrpKxL6WlUi+QHhQAO19vlMOuJiEMgN97ZC4zyc0dcaqEhQ== dependencies: internmap "1 - 2" @@ -545,14 +540,7 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@^4.0.1, debug@^4.1.1: +debug@4.3.2, debug@^4.0.1, debug@^4.1.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -940,9 +928,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== + version "2.7.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" + integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== dependencies: has "^1.0.3" @@ -951,20 +939,15 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -1107,15 +1090,15 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: brace-expansion "^1.1.7" mocha@9: - version "9.1.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.1.tgz#33df2eb9c6262434630510c5f4283b36efda9b61" - integrity sha512-0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA== + version "9.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.2.tgz#93f53175b0f0dc4014bd2d612218fccfcf3534d3" + integrity sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.2" - debug "4.3.1" + debug "4.3.2" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" @@ -1126,12 +1109,11 @@ mocha@9: log-symbols "4.1.0" minimatch "3.0.4" ms "2.1.3" - nanoid "3.1.23" + nanoid "3.1.25" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" - wide-align "1.1.3" workerpool "6.1.5" yargs "16.2.0" yargs-parser "20.2.4" @@ -1147,10 +1129,10 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== +nanoid@3.1.25: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== natural-compare@^1.4.0: version "1.4.0" @@ -1326,9 +1308,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.57.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.57.0.tgz#c1694475eb22e1022477c0f4635fd0ac80713173" - integrity sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg== + version "2.58.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" + integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== optionalDependencies: fsevents "~2.3.2" @@ -1412,15 +1394,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1429,13 +1403,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1470,16 +1437,16 @@ supports-color@^7.0.0, supports-color@^7.1.0: has-flag "^4.0.0" table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + version "6.7.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" + integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== dependencies: ajv "^8.0.1" lodash.clonedeep "^4.5.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" terser@^5.0.0: version "5.9.0" @@ -1538,13 +1505,6 @@ which@2.0.2, which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" From 75669e2aa80991bc5388c9caf7b1deb48e482e6a Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 1 Oct 2021 08:14:35 -0700 Subject: [PATCH 116/311] 7.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c7e53306f801f9..f7667132eb771c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.0.4", + "version": "7.1.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 31aef2c5b02824f771c73a7f5fa5e097218857df Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 2 Oct 2021 20:18:50 -0700 Subject: [PATCH 117/311] d3-array 3.1.1 --- API.md | 192 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 99 insertions(+), 99 deletions(-) diff --git a/API.md b/API.md index 449982d967ee3f..d1c895be0e1e99 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.0/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.1/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.0/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.0/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.1/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.1/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.1/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.1/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.1/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.1/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.1/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.1/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.1/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.1/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.1/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.1/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.1/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.1/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.1/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.1/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.1/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.0/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.1/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.0/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.0/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.1/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.1/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 715eae20dbd6fc..eb8832709ef577 100644 --- a/yarn.lock +++ b/yarn.lock @@ -333,9 +333,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.0.tgz#7e43a906c08a43c51a6a90692a03e9894c8fd041" - integrity sha512-XsImOCdTgRJoP3CIdgqw69++Nau4kPeNkD73HE5GrpKxL6WlUi+QHhQAO19vlMOuJiEMgN97ZC4zyc0dcaqEhQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.1.tgz#7797eb53ead6b9083c75a45a681e93fc41bc468c" + integrity sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ== dependencies: internmap "1 - 2" From 8a1d06de8b43b6c40b7eaf204cb6c784ca8f7e44 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 2 Oct 2021 20:18:56 -0700 Subject: [PATCH 118/311] 7.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f7667132eb771c..82cd00ebe5ca95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.1.0", + "version": "7.1.1", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 6c8107a75ec23e8b1bbaee456ed101338dc1d14e Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 4 Dec 2021 09:22:39 -0800 Subject: [PATCH 119/311] upgrade dependencies --- API.md | 173 +++++++++++++------------- package.json | 2 +- yarn.lock | 337 +++++++++++++++++++-------------------------------- 3 files changed, 216 insertions(+), 296 deletions(-) diff --git a/API.md b/API.md index d1c895be0e1e99..965a308ede14c0 100644 --- a/API.md +++ b/API.md @@ -554,21 +554,21 @@ Force-directed graph layout using velocity Verlet integration. * [*radial*.x](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_x) - set the target center *x*-coordinate. * [*radial*.y](https://github.com/d3/d3-force/blob/v3.0.0/README.md#radial_y) - set the target center *y*-coordinate. -## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v3.0.1) +## [Number Formats (d3-format)](https://github.com/d3/d3-format/tree/v3.1.0) Format numbers for human consumption. -* [d3.format](https://github.com/d3/d3-format/blob/v3.0.1/README.md#format) - alias for *locale*.format on the default locale. -* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. -* [*locale*.format](https://github.com/d3/d3-format/blob/v3.0.1/README.md#locale_format) - create a number format. -* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#locale_formatPrefix) - create a SI-prefix number format. -* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatSpecifier) - parse a number format specifier. -* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v3.0.1/README.md#FormatSpecifier) - augments a number format specifier object. -* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionFixed) - compute decimal precision for fixed-point notation. -* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. -* [d3.precisionRound](https://github.com/d3/d3-format/blob/v3.0.1/README.md#precisionRound) - compute significant digits for rounded notation. -* [d3.formatLocale](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatLocale) - define a custom locale. -* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v3.0.1/README.md#formatDefaultLocale) - define the default locale. +* [d3.format](https://github.com/d3/d3-format/blob/v3.1.0/README.md#format) - alias for *locale*.format on the default locale. +* [d3.formatPrefix](https://github.com/d3/d3-format/blob/v3.1.0/README.md#formatPrefix) - alias for *locale*.formatPrefix on the default locale. +* [*locale*.format](https://github.com/d3/d3-format/blob/v3.1.0/README.md#locale_format) - create a number format. +* [*locale*.formatPrefix](https://github.com/d3/d3-format/blob/v3.1.0/README.md#locale_formatPrefix) - create a SI-prefix number format. +* [d3.formatSpecifier](https://github.com/d3/d3-format/blob/v3.1.0/README.md#formatSpecifier) - parse a number format specifier. +* [new d3.FormatSpecifier](https://github.com/d3/d3-format/blob/v3.1.0/README.md#FormatSpecifier) - augments a number format specifier object. +* [d3.precisionFixed](https://github.com/d3/d3-format/blob/v3.1.0/README.md#precisionFixed) - compute decimal precision for fixed-point notation. +* [d3.precisionPrefix](https://github.com/d3/d3-format/blob/v3.1.0/README.md#precisionPrefix) - compute decimal precision for SI-prefix notation. +* [d3.precisionRound](https://github.com/d3/d3-format/blob/v3.1.0/README.md#precisionRound) - compute significant digits for rounded notation. +* [d3.formatLocale](https://github.com/d3/d3-format/blob/v3.1.0/README.md#formatLocale) - define a custom locale. +* [d3.formatDefaultLocale](https://github.com/d3/d3-format/blob/v3.1.0/README.md#formatDefaultLocale) - define the default locale. ## [Geographies (d3-geo)](https://github.com/d3/d3-geo/tree/v3.0.1) @@ -700,70 +700,71 @@ Geographic projections, shapes and math. * [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipCircle) - clips spherical geometries to a small circle. * [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.0.1) +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.1.0) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_leaves) - generate an array of leaves. -* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_find) - find a node in the hierarchy. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_count) - count the number of leaves. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_sort) - sort all descendant siblings. -* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_iterator) - iterate on a hierarchy. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#stratify_parentId) - set the parent node id accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.0.1/README.md#packEnclose) - enclose the specified array of circles. +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_leaves) - generate an array of leaves. +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_find) - find a node in the hierarchy. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_count) - count the number of leaves. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_sort) - sort all descendant siblings. +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_iterator) - iterate on a hierarchy. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_parentId) - set the parent node id accessor. +* [*stratify*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_path) - set the path accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#packEnclose) - enclose the specified array of circles. ## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v3.0.1) @@ -1294,22 +1295,22 @@ Stack shapes, placing one adjacent to another, as in a stacked bar chart. * [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetSilhouette) - center the streamgraph around zero. * [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. -## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v3.0.0) +## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v4.0.0) Parse and format times, inspired by strptime and strftime. -* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormat) - alias for *locale*.format on the default locale. -* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeParse) - alias for *locale*.parse on the default locale. -* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. -* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#utcParse) - alias for *locale*.utcParse on the default locale. -* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoFormat) - an ISO 8601 UTC formatter. -* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#isoParse) - an ISO 8601 UTC parser. -* [*locale*.format](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_format) - create a time formatter. -* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_parse) - create a time parser. -* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcFormat) - create a UTC formatter. -* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#locale_utcParse) - create a UTC parser. -* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatLocale) - define a custom locale. -* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v3.0.0/README.md#timeFormatDefaultLocale) - define the default locale. +* [d3.timeFormat](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeFormat) - alias for *locale*.format on the default locale. +* [d3.timeParse](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeParse) - alias for *locale*.parse on the default locale. +* [d3.utcFormat](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#utcFormat) - alias for *locale*.utcFormat on the default locale. +* [d3.utcParse](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#utcParse) - alias for *locale*.utcParse on the default locale. +* [d3.isoFormat](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#isoFormat) - an ISO 8601 UTC formatter. +* [d3.isoParse](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#isoParse) - an ISO 8601 UTC parser. +* [*locale*.format](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#locale_format) - create a time formatter. +* [*locale*.parse](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#locale_parse) - create a time parser. +* [*locale*.utcFormat](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#locale_utcFormat) - create a UTC formatter. +* [*locale*.utcParse](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#locale_utcParse) - create a UTC parser. +* [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeFormatLocale) - define a custom locale. +* [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeFormatDefaultLocale) - define the default locale. ## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v3.0.0) diff --git a/package.json b/package.json index 82cd00ebe5ca95..e43a52d66fbf11 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "devDependencies": { "@rollup/plugin-json": "4", "@rollup/plugin-node-resolve": "13", - "eslint": "7", + "eslint": "8", "mocha": "9", "rollup": "2", "rollup-plugin-ascii": "0.0", diff --git a/yarn.lock b/yarn.lock index eb8832709ef577..2b2f9e9ce6f94c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,62 +2,55 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.10.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== dependencies: - "@babel/highlight" "^7.14.5" + "@babel/highlight" "^7.16.0" -"@babel/helper-validator-identifier@^7.14.5": +"@babel/helper-validator-identifier@^7.15.7": version "7.15.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.15.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" + debug "^4.3.2" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" - js-yaml "^3.13.1" + js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@rollup/plugin-json@4": version "4.1.0" @@ -67,9 +60,9 @@ "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz#016abe58796a4ff544d6beac7818921e3d3777fc" - integrity sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ== + version "13.0.6" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz#29629070bb767567be8157f575cfa8f2b8e9ef77" + integrity sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -93,9 +86,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.10.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" - integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== + version "16.11.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234" + integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw== "@types/resolve@1.17.1": version "1.17.1" @@ -119,10 +112,10 @@ acorn@^3.2.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" @@ -134,16 +127,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -176,23 +159,11 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -239,9 +210,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" + integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== chalk@^2.0.0: version "2.4.2" @@ -425,9 +396,9 @@ d3-force@3: d3-timer "1 - 3" "d3-format@1 - 3", d3-format@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.0.1.tgz#e41b81b2ab79277141ec1404aa5d05001da64084" - integrity sha512-hdL7+HBIohpgfolhBxr1KX47VMD6+vVD/oEFrxk5yhmzV2prk99EkFKYpXuhVkFpTgHdJ6/4bYcjdLPPXV4tIA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== d3-geo@3: version "3.0.1" @@ -437,9 +408,9 @@ d3-geo@3: d3-array "2.5.0 - 3" d3-hierarchy@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.0.1.tgz#0365342d54972e38ca05e9143e0ab1c60846b3b5" - integrity sha512-RlLTaofEoOrMK1JoXYIGhKTkJFI/6rFrYPgxy6QlZo2BcVc4HGTqEU0rPpzuMq5T/5XcMtAzv1XiLA3zRTfygw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz#f7b50df24bdc16ed8f8021e2f944442a0e231fe1" + integrity sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA== "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: version "3.0.1" @@ -500,9 +471,9 @@ d3-shape@3: d3-path "1 - 3" "d3-time-format@2 - 4", d3-time-format@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.0.0.tgz#930ded86a9de761702344760d8a25753467f28b7" - integrity sha512-nzaCwlj+ZVBIlFuVOT1RmU+6xb/7D5IcnhHzHQcBgS/aTa5K9fWZNN5LCXA27LgF5WxoSNJqKBbLcGMtM6Ca6A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== dependencies: d3-time "1 - 3" @@ -540,13 +511,20 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -debug@4.3.2, debug@^4.0.1, debug@^4.1.1: +debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" +debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -608,62 +586,61 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" + estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@7: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== +eslint-visitor-keys@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" + integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== + +eslint@8: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.0.tgz#2fa01b271cafc28addc2719e551acff5e89f5230" + integrity sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" + "@eslint/eslintrc" "^1.0.5" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" + eslint-scope "^7.1.0" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.2.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" + glob-parent "^6.0.1" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" @@ -671,27 +648,21 @@ eslint@7: natural-compare "^1.4.0" optionator "^0.9.1" progress "^2.0.0" - regexpp "^3.1.0" + regexpp "^3.2.0" semver "^7.2.1" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" + integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== dependencies: - acorn "^7.4.0" + acorn "^8.6.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + eslint-visitor-keys "^3.1.0" esquery@^1.4.0: version "1.4.0" @@ -707,15 +678,10 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^0.2.1: version "0.2.1" @@ -783,9 +749,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== + version "3.2.4" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== fs.realpath@^1.0.0: version "1.0.0" @@ -812,7 +778,14 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -844,9 +817,9 @@ glob@^7.1.3: path-is-absolute "^1.0.0" globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== + version "13.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== dependencies: type-fest "^0.20.2" @@ -928,9 +901,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" - integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" @@ -944,7 +917,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -990,21 +963,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - jsesc@^2.2.0: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -1015,11 +980,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -1040,21 +1000,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -1090,9 +1040,9 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: brace-expansion "^1.1.7" mocha@9: - version "9.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.2.tgz#93f53175b0f0dc4014bd2d612218fccfcf3534d3" - integrity sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w== + version "9.1.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" + integrity sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" @@ -1238,7 +1188,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regexpp@^3.1.0: +regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -1248,11 +1198,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1308,9 +1253,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== + version "2.60.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.2.tgz#3f45ace36a9b10b4297181831ea0719922513463" + integrity sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw== optionalDependencies: fsevents "~2.3.2" @@ -1362,19 +1307,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -1389,12 +1325,7 @@ source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1436,22 +1367,10 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -table@^6.0.9: - version "6.7.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" - integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - terser@^5.0.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== dependencies: commander "^2.20.0" source-map "~0.7.2" From 623b216173ad282e1457f5008cf59c848803dd07 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 4 Dec 2021 09:23:16 -0800 Subject: [PATCH 120/311] 7.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e43a52d66fbf11..545e0c9a36dea4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.1.1", + "version": "7.2.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 2d8888b89d56269eb4063e2eadcbaaf1ccb7c686 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 10 Dec 2021 07:53:14 -0800 Subject: [PATCH 121/311] d3-hierarchy 3.1.1 --- API.md | 124 +++++++++++++++++++++++++++--------------------------- yarn.lock | 24 +++++------ 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/API.md b/API.md index 965a308ede14c0..fd079a534e1c21 100644 --- a/API.md +++ b/API.md @@ -700,71 +700,71 @@ Geographic projections, shapes and math. * [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipCircle) - clips spherical geometries to a small circle. * [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.1.0) +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.1.1) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_leaves) - generate an array of leaves. -* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_find) - find a node in the hierarchy. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_count) - count the number of leaves. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_sort) - sort all descendant siblings. -* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_iterator) - iterate on a hierarchy. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_parentId) - set the parent node id accessor. -* [*stratify*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#stratify_path) - set the path accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.1.0/README.md#packEnclose) - enclose the specified array of circles. +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_leaves) - generate an array of leaves. +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_find) - find a node in the hierarchy. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_count) - count the number of leaves. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_sort) - sort all descendant siblings. +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_iterator) - iterate on a hierarchy. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_parentId) - set the parent node id accessor. +* [*stratify*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_path) - set the path accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#packEnclose) - enclose the specified array of circles. ## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v3.0.1) diff --git a/yarn.lock b/yarn.lock index 2b2f9e9ce6f94c..8a4bd43f8d225f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -86,9 +86,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.11.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234" - integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw== + version "16.11.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" + integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== "@types/resolve@1.17.1": version "1.17.1" @@ -408,9 +408,9 @@ d3-geo@3: d3-array "2.5.0 - 3" d3-hierarchy@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz#f7b50df24bdc16ed8f8021e2f944442a0e231fe1" - integrity sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz#9cbb0ffd2375137a351e6cfeed344a06d4ff4597" + integrity sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA== "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: version "3.0.1" @@ -612,9 +612,9 @@ eslint-visitor-keys@^3.1.0: integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== eslint@8: - version "8.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.0.tgz#2fa01b271cafc28addc2719e551acff5e89f5230" - integrity sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA== + version "8.4.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d" + integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -1253,9 +1253,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.60.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.2.tgz#3f45ace36a9b10b4297181831ea0719922513463" - integrity sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw== + version "2.61.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4" + integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA== optionalDependencies: fsevents "~2.3.2" From 598d03b561d2773e97f13c073cce4bb728daa0e6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 10 Dec 2021 07:53:42 -0800 Subject: [PATCH 122/311] 7.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 545e0c9a36dea4..8f1376dcd71a87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.2.0", + "version": "7.2.1", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 2deab02977e977529823445c9b1b93589cb3e4a8 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 7 Jan 2022 10:16:03 -0800 Subject: [PATCH 123/311] d3-shape 3.1.0 --- API.md | 304 ++++++++++++++++++++++++++++-------------------------- yarn.lock | 114 ++++++++++---------- 2 files changed, 216 insertions(+), 202 deletions(-) diff --git a/API.md b/API.md index fd079a534e1c21..a44d6e04540f36 100644 --- a/API.md +++ b/API.md @@ -1117,183 +1117,191 @@ Transform the DOM by selecting elements and joining to data. * [d3.namespace](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#namespace) - qualify a prefixed XML name, such as “xlink:href”. * [d3.namespaces](https://github.com/d3/d3-selection/blob/v3.0.0/README.md#namespaces) - the built-in XML namespaces. -## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v3.0.1) +## [Shapes (d3-shape)](https://github.com/d3/d3-shape/tree/v3.1.0) Graphical primitives for visualization. -### [Arcs](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arcs) +### [Arcs](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arcs) Circular or annular sectors, as in a pie or donut chart. -* [d3.arc](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc) - create a new arc generator. -* [*arc*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_arc) - generate an arc for the given datum. -* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_centroid) - compute an arc’s midpoint. -* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_innerRadius) - set the inner radius. -* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_outerRadius) - set the outer radius. -* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. -* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_startAngle) - set the start angle. -* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_endAngle) - set the end angle. -* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. -* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_padRadius) - set the radius at which to linearize padding. -* [*arc*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#arc_context) - set the rendering context. +* [d3.arc](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc) - create a new arc generator. +* [*arc*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_arc) - generate an arc for the given datum. +* [*arc*.centroid](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_centroid) - compute an arc’s midpoint. +* [*arc*.innerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_innerRadius) - set the inner radius. +* [*arc*.outerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_outerRadius) - set the outer radius. +* [*arc*.cornerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_cornerRadius) - set the corner radius, for rounded corners. +* [*arc*.startAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_startAngle) - set the start angle. +* [*arc*.endAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_endAngle) - set the end angle. +* [*arc*.padAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_padAngle) - set the angle between adjacent arcs, for padded arcs. +* [*arc*.padRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_padRadius) - set the radius at which to linearize padding. +* [*arc*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#arc_context) - set the rendering context. -### [Pies](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pies) +### [Pies](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pies) Compute the necessary angles to represent a tabular dataset as a pie or donut chart. -* [d3.pie](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie) - create a new pie generator. -* [*pie*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_pie) - compute the arc angles for the given dataset. -* [*pie*.value](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_value) - set the value accessor. -* [*pie*.sort](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_sort) - set the sort order comparator. -* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_sortValues) - set the sort order comparator. -* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_startAngle) - set the overall start angle. -* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_endAngle) - set the overall end angle. -* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pie_padAngle) - set the pad angle between adjacent arcs. +* [d3.pie](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie) - create a new pie generator. +* [*pie*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_pie) - compute the arc angles for the given dataset. +* [*pie*.value](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_value) - set the value accessor. +* [*pie*.sort](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_sort) - set the sort order comparator. +* [*pie*.sortValues](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_sortValues) - set the sort order comparator. +* [*pie*.startAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_startAngle) - set the overall start angle. +* [*pie*.endAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_endAngle) - set the overall end angle. +* [*pie*.padAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pie_padAngle) - set the pad angle between adjacent arcs. -### [Lines](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lines) +### [Lines](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lines) A spline or polyline, as in a line chart. -* [d3.line](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line) - create a new line generator. -* [*line*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_line) - generate a line for the given dataset. -* [*line*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_x) - set the *x* accessor. -* [*line*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_y) - set the *y* accessor. -* [*line*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_defined) - set the defined accessor. -* [*line*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_curve) - set the curve interpolator. -* [*line*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#line_context) - set the rendering context. -* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial) - create a new radial line generator. -* [*lineRadial*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_lineRadial) - generate a line for the given dataset. -* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_angle) - set the angle accessor. -* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_radius) - set the radius accessor. -* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_defined) - set the defined accessor. -* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_curve) - set the curve interpolator. -* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#lineRadial_context) - set the rendering context. - -### [Areas](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areas) +* [d3.line](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line) - create a new line generator. +* [*line*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_line) - generate a line for the given dataset. +* [*line*.x](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line_x) - set the *x* accessor. +* [*line*.y](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line_y) - set the *y* accessor. +* [*line*.defined](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line_defined) - set the defined accessor. +* [*line*.curve](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line_curve) - set the curve interpolator. +* [*line*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#line_context) - set the rendering context. +* [d3.lineRadial](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial) - create a new radial line generator. +* [*lineRadial*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_lineRadial) - generate a line for the given dataset. +* [*lineRadial*.angle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial_angle) - set the angle accessor. +* [*lineRadial*.radius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial_radius) - set the radius accessor. +* [*lineRadial*.defined](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial_defined) - set the defined accessor. +* [*lineRadial*.curve](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial_curve) - set the curve interpolator. +* [*lineRadial*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#lineRadial_context) - set the rendering context. + +### [Areas](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areas) An area, defined by a bounding topline and baseline, as in an area chart. -* [d3.area](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area) - create a new area generator. -* [*area*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_area) - generate an area for the given dataset. -* [*area*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x) - set the *x0* and *x1* accessors. -* [*area*.x0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x0) - set the baseline *x* accessor. -* [*area*.x1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_x1) - set the topline *x* accessor. -* [*area*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y) - set the *y0* and *y1* accessors. -* [*area*.y0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y0) - set the baseline *y* accessor. -* [*area*.y1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_y1) - set the topline *y* accessor. -* [*area*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_defined) - set the defined accessor. -* [*area*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_curve) - set the curve interpolator. -* [*area*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_context) - set the rendering context. -* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineX0) - derive a line for the left edge of an area. -* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineY0) - derive a line for the top edge of an area. -* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineX1) - derive a line for the right edge of an area. -* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#area_lineY1) - derive a line for the bottom edge of an area. -* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial) - create a new radial area generator. -* [*areaRadial*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_areaRadial) - generate an area for the given dataset. -* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_angle) - set the start and end angle accessors. -* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_startAngle) - set the start angle accessor. -* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_endAngle) - set the end angle accessor. -* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_radius) - set the inner and outer radius accessors. -* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_innerRadius) - set the inner radius accessor. -* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_outerRadius) - set the outer radius accessor. -* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_defined) - set the defined accessor. -* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_curve) - set the curve interpolator. -* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_context) - set the rendering context. -* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. -* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. -* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. -* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. - -### [Curves](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curves) +* [d3.area](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area) - create a new area generator. +* [*area*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_area) - generate an area for the given dataset. +* [*area*.x](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_x) - set the *x0* and *x1* accessors. +* [*area*.x0](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_x0) - set the baseline *x* accessor. +* [*area*.x1](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_x1) - set the topline *x* accessor. +* [*area*.y](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_y) - set the *y0* and *y1* accessors. +* [*area*.y0](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_y0) - set the baseline *y* accessor. +* [*area*.y1](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_y1) - set the topline *y* accessor. +* [*area*.defined](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_defined) - set the defined accessor. +* [*area*.curve](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_curve) - set the curve interpolator. +* [*area*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_context) - set the rendering context. +* [*area*.lineX0](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_lineX0) - derive a line for the left edge of an area. +* [*area*.lineY0](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_lineY0) - derive a line for the top edge of an area. +* [*area*.lineX1](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_lineX1) - derive a line for the right edge of an area. +* [*area*.lineY1](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#area_lineY1) - derive a line for the bottom edge of an area. +* [d3.areaRadial](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial) - create a new radial area generator. +* [*areaRadial*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_areaRadial) - generate an area for the given dataset. +* [*areaRadial*.angle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_angle) - set the start and end angle accessors. +* [*areaRadial*.startAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_startAngle) - set the start angle accessor. +* [*areaRadial*.endAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_endAngle) - set the end angle accessor. +* [*areaRadial*.radius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_radius) - set the inner and outer radius accessors. +* [*areaRadial*.innerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_innerRadius) - set the inner radius accessor. +* [*areaRadial*.outerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_outerRadius) - set the outer radius accessor. +* [*areaRadial*.defined](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_defined) - set the defined accessor. +* [*areaRadial*.curve](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_curve) - set the curve interpolator. +* [*areaRadial*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_context) - set the rendering context. +* [*areaRadial*.lineStartAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_lineStartAngle) - derive a line for the start edge of an area. +* [*areaRadial*.lineInnerRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_lineInnerRadius) - derive a line for the inner edge of an area. +* [*areaRadial*.lineEndAngle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_lineEndAngle) - derive a line for the end edge of an area. +* [*areaRadial*.lineOuterRadius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#areaRadial_lineOuterRadius) - derive a line for the outer edge of an area. + +### [Curves](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curves) Interpolate between points to produce a continuous shape. -* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasis) - a cubic basis spline, repeating the end points. -* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasisClosed) - a closed cubic basis spline. -* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBasisOpen) - a cubic basis spline. -* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBundle) - a straightened cubic basis spline. -* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBundle_beta) - set the bundle tension *beta*. -* [d3.curveBumpX](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBumpX) - a cubic Bézier spline with horizontal tangents. -* [d3.curveBumpY](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveBumpY) - a cubic Bézier spline with vertical tangents. -* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. -* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinalClosed) - a closed cubic cardinal spline. -* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinalOpen) - a cubic cardinal spline. -* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCardinal_tension) - set the cardinal spline tension. -* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. -* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. -* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. -* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. -* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveLinear) - a polyline. -* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveLinearClosed) - a closed polyline. -* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. -* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. -* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveNatural) - a natural cubic spline. -* [d3.curveStep](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStep) - a piecewise constant function. -* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStepAfter) - a piecewise constant function. -* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curveStepBefore) - a piecewise constant function. -* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_areaStart) - start a new area segment. -* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_areaEnd) - end the current area segment. -* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_lineStart) - start a new line segment. -* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_lineEnd) - end the current line segment. -* [*curve*.point](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#curve_point) - add a point to the current line segment. - -### [Links](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#links) +* [d3.curveBasis](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBasis) - a cubic basis spline, repeating the end points. +* [d3.curveBasisClosed](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBasisClosed) - a closed cubic basis spline. +* [d3.curveBasisOpen](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBasisOpen) - a cubic basis spline. +* [d3.curveBundle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBundle) - a straightened cubic basis spline. +* [*bundle*.beta](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBundle_beta) - set the bundle tension *beta*. +* [d3.curveBumpX](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBumpX) - a cubic Bézier spline with horizontal tangents. +* [d3.curveBumpY](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveBumpY) - a cubic Bézier spline with vertical tangents. +* [d3.curveCardinal](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCardinal) - a cubic cardinal spline, with one-sided difference at each end. +* [d3.curveCardinalClosed](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCardinalClosed) - a closed cubic cardinal spline. +* [d3.curveCardinalOpen](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCardinalOpen) - a cubic cardinal spline. +* [*cardinal*.tension](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCardinal_tension) - set the cardinal spline tension. +* [d3.curveCatmullRom](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCatmullRom) - a cubic Catmull–Rom spline, with one-sided difference at each end. +* [d3.curveCatmullRomClosed](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCatmullRomClosed) - a closed cubic Catmull–Rom spline. +* [d3.curveCatmullRomOpen](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCatmullRomOpen) - a cubic Catmull–Rom spline. +* [*catmullRom*.alpha](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveCatmullRom_alpha) - set the Catmull–Rom parameter *alpha*. +* [d3.curveLinear](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveLinear) - a polyline. +* [d3.curveLinearClosed](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveLinearClosed) - a closed polyline. +* [d3.curveMonotoneX](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveMonotoneX) - a cubic spline that, given monotonicity in *x*, preserves it in *y*. +* [d3.curveMonotoneY](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveMonotoneY) - a cubic spline that, given monotonicity in *y*, preserves it in *x*. +* [d3.curveNatural](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveNatural) - a natural cubic spline. +* [d3.curveStep](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveStep) - a piecewise constant function. +* [d3.curveStepAfter](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveStepAfter) - a piecewise constant function. +* [d3.curveStepBefore](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curveStepBefore) - a piecewise constant function. +* [*curve*.areaStart](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curve_areaStart) - start a new area segment. +* [*curve*.areaEnd](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curve_areaEnd) - end the current area segment. +* [*curve*.lineStart](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curve_lineStart) - start a new line segment. +* [*curve*.lineEnd](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curve_lineEnd) - end the current line segment. +* [*curve*.point](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#curve_point) - add a point to the current line segment. + +### [Links](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#links) A smooth cubic Bézier curve from a source to a target. -* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkVertical) - create a new vertical link generator. -* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkHorizontal) - create a new horizontal link generator. -* [*link*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_link) - generate a link. -* [*link*.source](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_source) - set the source accessor. -* [*link*.target](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_target) - set the target accessor. -* [*link*.x](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_x) - set the point *x*-accessor. -* [*link*.y](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_y) - set the point *y*-accessor. -* [*link*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#link_context) - set the rendering context. -* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial) - create a new radial link generator. -* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial_angle) - set the point *angle* accessor. -* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#linkRadial_radius) - set the point *radius* accessor. - -### [Symbols](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbols) +* [d3.link](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link) - create a new link generator. +* [d3.linkVertical](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#linkVertical) - create a new vertical link generator. +* [d3.linkHorizontal](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#linkHorizontal) - create a new horizontal link generator. +* [*link*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_link) - generate a link. +* [*link*.source](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link_source) - set the source accessor. +* [*link*.target](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link_target) - set the target accessor. +* [*link*.x](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link_x) - set the point *x*-accessor. +* [*link*.y](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link_y) - set the point *y*-accessor. +* [*link*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#link_context) - set the rendering context. +* [d3.linkRadial](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#linkRadial) - create a new radial link generator. +* [*linkRadial*.angle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#linkRadial_angle) - set the point *angle* accessor. +* [*linkRadial*.radius](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#linkRadial_radius) - set the point *radius* accessor. + +### [Symbols](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbols) A categorical shape encoding, as in a scatterplot. -* [d3.symbol](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol) - create a new symbol generator. -* [*symbol*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_symbol) - generate a symbol for the given datum. -* [*symbol*.type](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_type) - set the symbol type. -* [*symbol*.size](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_size) - set the size of the symbol in square pixels. -* [*symbol*.context](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbol_context) - set the rendering context. -* [d3.symbols](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbols) - the array of built-in symbol types. -* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolCircle) - a circle. -* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolCross) - a Greek cross with arms of equal length. -* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolDiamond) - a rhombus. -* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolSquare) - a square. -* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolStar) - a pentagonal star (pentagram). -* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolTriangle) - an up-pointing triangle. -* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolWye) - a Y shape. -* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#pointRadial) - relative coordinates of a point given an angle and radius. -* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#symbolType_draw) - draw this symbol to the given context. - -### [Stacks](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stacks) +* [d3.symbol](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbol) - create a new symbol generator. +* [*symbol*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_symbol) - generate a symbol for the given datum. +* [*symbol*.type](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbol_type) - set the symbol type. +* [*symbol*.size](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbol_size) - set the size of the symbol in square pixels. +* [*symbol*.context](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbol_context) - set the rendering context. +* [d3.symbolsFill](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolsFill) - an array of built-in symbol types for filling. +* [d3.symbolsStroke](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolsStroke) - an array of built-in symbol types for stroking. +* [d3.symbolAsterisk](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolAsterisk) - an asterisk; for stroke. +* [d3.symbolCircle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolCircle) - a circle; for fill or stroke. +* [d3.symbolCross](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolCross) - a Greek cross with arms of equal length; for fill. +* [d3.symbolDiamond](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolDiamond) - a rhombus; for fill. +* [d3.symbolDiamond2](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolDiamond2) - a rotated square; for stroke. +* [d3.symbolPlus](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolPlus) - a plus sign; for stroke. +* [d3.symbolSquare](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolSquare) - a square; for fill. +* [d3.symbolSquare2](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolSquare2) - a square; for stroke. +* [d3.symbolStar](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolStar) - a pentagonal star (pentagram); for fill. +* [d3.symbolTriangle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolTriangle) - an up-pointing triangle; for fill. +* [d3.symbolTriangle2](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolTriangle2) - an up-pointing triangle; for stroke. +* [d3.symbolWye](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolWye) - a Y shape; for fill. +* [d3.symbolX](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolX) - an X shape; for stroke. +* [d3.pointRadial](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#pointRadial) - relative coordinates of a point given an angle and radius. +* [*symbolType*.draw](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#symbolType_draw) - draw this symbol to the given context. + +### [Stacks](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stacks) Stack shapes, placing one adjacent to another, as in a stacked bar chart. -* [d3.stack](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack) - create a new stack generator. -* [*stack*](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#_stack) - generate a stack for the given dataset. -* [*stack*.keys](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_keys) - set the keys accessor. -* [*stack*.value](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_value) - set the value accessor. -* [*stack*.order](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_order) - set the order accessor. -* [*stack*.offset](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stack_offset) - set the offset accessor. -* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderAppearance) - put the earliest series on bottom. -* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderAscending) - put the smallest series on bottom. -* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderDescending) - put the largest series on bottom. -* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderInsideOut) - put earlier series in the middle. -* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderNone) - use the given series order. -* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOrderReverse) - use the reverse of the given series order. -* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. -* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetDiverging) - positive above zero; negative below zero. -* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetNone) - apply a zero baseline. -* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetSilhouette) - center the streamgraph around zero. -* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v3.0.1/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. +* [d3.stack](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stack) - create a new stack generator. +* [*stack*](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#_stack) - generate a stack for the given dataset. +* [*stack*.keys](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stack_keys) - set the keys accessor. +* [*stack*.value](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stack_value) - set the value accessor. +* [*stack*.order](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stack_order) - set the order accessor. +* [*stack*.offset](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stack_offset) - set the offset accessor. +* [d3.stackOrderAppearance](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderAppearance) - put the earliest series on bottom. +* [d3.stackOrderAscending](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderAscending) - put the smallest series on bottom. +* [d3.stackOrderDescending](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderDescending) - put the largest series on bottom. +* [d3.stackOrderInsideOut](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderInsideOut) - put earlier series in the middle. +* [d3.stackOrderNone](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderNone) - use the given series order. +* [d3.stackOrderReverse](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOrderReverse) - use the reverse of the given series order. +* [d3.stackOffsetExpand](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOffsetExpand) - normalize the baseline to zero and topline to one. +* [d3.stackOffsetDiverging](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOffsetDiverging) - positive above zero; negative below zero. +* [d3.stackOffsetNone](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOffsetNone) - apply a zero baseline. +* [d3.stackOffsetSilhouette](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOffsetSilhouette) - center the streamgraph around zero. +* [d3.stackOffsetWiggle](https://github.com/d3/d3-shape/blob/v3.1.0/README.md#stackOffsetWiggle) - minimize streamgraph wiggling. ## [Time Formats (d3-time-format)](https://github.com/d3/d3-time-format/tree/v4.0.0) diff --git a/yarn.lock b/yarn.lock index 8a4bd43f8d225f..a8c6faf972b7e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,23 +3,23 @@ "@babel/code-frame@^7.10.4": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/highlight" "^7.16.0" + "@babel/highlight" "^7.16.7" -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== +"@babel/highlight@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" + integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" @@ -60,9 +60,9 @@ "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13": - version "13.0.6" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz#29629070bb767567be8157f575cfa8f2b8e9ef77" - integrity sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA== + version "13.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" + integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -86,9 +86,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "16.11.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" - integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b" + integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg== "@types/resolve@1.17.1": version "1.17.1" @@ -112,10 +112,10 @@ acorn@^3.2.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== +acorn@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" @@ -210,9 +210,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== chalk@^2.0.0: version "2.4.2" @@ -464,9 +464,9 @@ d3-scale@4: integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== d3-shape@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.0.1.tgz#9ccdfb28fd9b0d12f2d8aec234cd5c4a9ea27931" - integrity sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.1.0.tgz#c8a495652d83ea6f524e482fca57aa3f8bc32556" + integrity sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ== dependencies: d3-path "1 - 3" @@ -612,9 +612,9 @@ eslint-visitor-keys@^3.1.0: integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== eslint@8: - version "8.4.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d" - integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e" + integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -628,7 +628,7 @@ eslint@8: eslint-scope "^7.1.0" eslint-utils "^3.0.0" eslint-visitor-keys "^3.1.0" - espree "^9.2.0" + espree "^9.3.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -655,12 +655,12 @@ eslint@8: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" - integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== +espree@^9.2.0, espree@^9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" + integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== dependencies: - acorn "^8.6.0" + acorn "^8.7.0" acorn-jsx "^5.3.1" eslint-visitor-keys "^3.1.0" @@ -900,10 +900,10 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-core-module@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" @@ -1149,15 +1149,15 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== prelude-ls@^1.2.1: version "1.2.1" @@ -1204,12 +1204,13 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + version "1.21.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.8.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" rimraf@^3.0.2: version "3.0.2" @@ -1253,9 +1254,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.61.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4" - integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA== + version "2.63.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.63.0.tgz#fe2f7fec2133f3fab9e022b9ac245628d817c6bb" + integrity sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ== optionalDependencies: fsevents "~2.3.2" @@ -1367,6 +1368,11 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + terser@^5.0.0: version "5.10.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" From 6a07d8fe03e88f2fc39ecbc47e84e514c5bc80fc Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 7 Jan 2022 10:16:32 -0800 Subject: [PATCH 124/311] 7.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8f1376dcd71a87..121ccda15c9e29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.2.1", + "version": "7.3.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From e06620aedeaa4f4d0d715acc1e2bc02c365e8cb0 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 28 Mar 2022 16:02:23 -0700 Subject: [PATCH 125/311] d3-color 3.1.0 --- API.md | 41 ++++----- LICENSE | 2 +- yarn.lock | 244 +++++++++++++++++++++++------------------------------- 3 files changed, 126 insertions(+), 161 deletions(-) diff --git a/API.md b/API.md index a44d6e04540f36..f8f8ab38bbc5bd 100644 --- a/API.md +++ b/API.md @@ -211,28 +211,31 @@ Select a one- or two-dimensional region using the mouse or touch. * [d3.ribbonArrow](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbonArrow) - create an arrow ribbon generator. * [*ribbonArrow*.headRadius](https://github.com/d3/d3-chord/blob/v3.0.1/README.md#ribbonArrow_headRadius) - set the arrowhead radius accessor. -## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v3.0.1) +## [Colors (d3-color)](https://github.com/d3/d3-color/tree/v3.1.0) Color manipulation and color space conversion. -* [d3.color](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color) - parse the given CSS color specifier. -* [*color*.opacity](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_opacity) - the color’s opacity. -* [*color*.rgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_rgb) - compute the RGB equivalent of this color. -* [*color*.copy](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_copy) - return a copy of this color. -* [*color*.brighter](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_brighter) - create a brighter copy of this color. -* [*color*.darker](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_darker) - create a darker copy of this color. -* [*color*.displayable](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_displayable) - returns true if the color is displayable on standard hardware. -* [*color*.formatHex](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatHex) - returns the hexadecimal RGB string representation of this color. -* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatHsl) - returns the RGB string representation of this color. -* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_formatRgb) - returns the HSL string representation of this color. -* [*color*.toString](https://github.com/d3/d3-color/blob/v3.0.1/README.md#color_toString) - returns the RGB string representation of this color. -* [d3.rgb](https://github.com/d3/d3-color/blob/v3.0.1/README.md#rgb) - create a new RGB color. -* [d3.hsl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#hsl) - create a new HSL color. -* [d3.lab](https://github.com/d3/d3-color/blob/v3.0.1/README.md#lab) - create a new Lab color. -* [d3.gray](https://github.com/d3/d3-color/blob/v3.0.1/README.md#gray) - create a new Lab gray. -* [d3.hcl](https://github.com/d3/d3-color/blob/v3.0.1/README.md#hcl) - create a new HCL color. -* [d3.lch](https://github.com/d3/d3-color/blob/v3.0.1/README.md#lch) - create a new HCL color. -* [d3.cubehelix](https://github.com/d3/d3-color/blob/v3.0.1/README.md#cubehelix) - create a new Cubehelix color. +* [d3.color](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color) - parse the given CSS color specifier. +* [*color*.opacity](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_opacity) - the color’s opacity. +* [*color*.rgb](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_rgb) - compute the RGB equivalent of this color. +* [*color*.copy](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_copy) - return a copy of this color. +* [*color*.brighter](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_brighter) - create a brighter copy of this color. +* [*color*.darker](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_darker) - create a darker copy of this color. +* [*color*.displayable](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_displayable) - returns true if the color is displayable on standard hardware. +* [*color*.formatHex](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_formatHex) - returns the hexadecimal RRGGBB string representation of this color. +* [*color*.formatHex8](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_formatHex8) - returns the hexadecimal RRGGBBAA string representation of this color. +* [*color*.formatHsl](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_formatHsl) - returns the RGB string representation of this color. +* [*color*.formatRgb](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_formatRgb) - returns the HSL string representation of this color. +* [*color*.toString](https://github.com/d3/d3-color/blob/v3.1.0/README.md#color_toString) - returns the RGB string representation of this color. +* [d3.rgb](https://github.com/d3/d3-color/blob/v3.1.0/README.md#rgb) - create a new RGB color. +* [*rgb*.clamp](https://github.com/d3/d3-color/blob/v3.1.0/README.md#rgb_clamp) - returns copy of this color clamped to the RGB color space. +* [d3.hsl](https://github.com/d3/d3-color/blob/v3.1.0/README.md#hsl) - create a new HSL color. +* [*hsl*.clamp](https://github.com/d3/d3-color/blob/v3.1.0/README.md#hsl_clamp) - returns copy of this color clamped to the HSL color space. +* [d3.lab](https://github.com/d3/d3-color/blob/v3.1.0/README.md#lab) - create a new Lab color. +* [d3.gray](https://github.com/d3/d3-color/blob/v3.1.0/README.md#gray) - create a new Lab gray. +* [d3.hcl](https://github.com/d3/d3-color/blob/v3.1.0/README.md#hcl) - create a new HCL color. +* [d3.lch](https://github.com/d3/d3-color/blob/v3.1.0/README.md#lch) - create a new HCL color. +* [d3.cubehelix](https://github.com/d3/d3-color/blob/v3.1.0/README.md#cubehelix) - create a new Cubehelix color. ## [Color Schemes (d3-scale-chromatic)](https://github.com/d3/d3-scale-chromatic/tree/v3.0.0) diff --git a/LICENSE b/LICENSE index b0145150fd35f3..fbe44bdc9ad516 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2010-2021 Mike Bostock +Copyright 2010-2022 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice diff --git a/yarn.lock b/yarn.lock index a8c6faf972b7e5..3763f2f37b9bf6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,33 +15,33 @@ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@eslint/eslintrc@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" - integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== +"@eslint/eslintrc@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" + integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.2.0" + espree "^9.3.1" globals "^13.9.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" "@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -86,9 +86,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "17.0.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b" - integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg== + version "17.0.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" + integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== "@types/resolve@1.17.1": version "1.17.1" @@ -112,7 +112,7 @@ acorn@^3.2.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^8.7.0: +acorn@^8.5.0, acorn@^8.7.0: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -127,7 +127,7 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@4.1.1, ansi-colors@^4.1.1: +ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== @@ -231,10 +231,10 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -334,9 +334,9 @@ d3-chord@3: d3-path "1 - 3" "d3-color@1 - 3", d3-color@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.0.1.tgz#03316e595955d1fcd39d9f3610ad41bb90194d0a" - integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== d3-contour@3: version "3.0.1" @@ -511,17 +511,17 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -debug@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -564,13 +564,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -586,10 +579,10 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-scope@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" - integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -606,29 +599,28 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" - integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8: - version "8.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e" - integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw== + version "8.12.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e" + integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q== dependencies: - "@eslint/eslintrc" "^1.0.5" + "@eslint/eslintrc" "^1.2.1" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.0" + eslint-scope "^7.1.1" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.1.0" - espree "^9.3.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -636,7 +628,7 @@ eslint@8: functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" globals "^13.6.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" @@ -647,22 +639,20 @@ eslint@8: minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" regexpp "^3.2.0" - semver "^7.2.1" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.2.0, espree@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" - integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== dependencies: acorn "^8.7.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.1.0" + eslint-visitor-keys "^3.3.0" esquery@^1.4.0: version "1.4.0" @@ -749,9 +739,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== fs.realpath@^1.0.0: version "1.0.0" @@ -792,19 +782,7 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: +glob@7.2.0, glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -817,9 +795,9 @@ glob@^7.1.3: path-is-absolute "^1.0.0" globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== + version "13.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" + integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== dependencies: type-fest "^0.20.2" @@ -857,10 +835,10 @@ iconv-lite@0.6: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -900,7 +878,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-core-module@^2.8.0: +is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -1013,13 +991,6 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - magic-string@^0.15.1: version "0.15.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.15.2.tgz#0681d7388741bbc3addaa65060992624c6c09e9c" @@ -1032,39 +1003,46 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" mocha@9: - version "9.1.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" - integrity sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw== + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.2" - debug "4.3.2" + chokidar "3.5.3" + debug "4.3.3" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.7" + glob "7.2.0" growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "3.0.4" + minimatch "4.2.1" ms "2.1.3" - nanoid "3.1.25" + nanoid "3.3.1" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" - workerpool "6.1.5" + workerpool "6.2.0" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -1079,10 +1057,10 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@3.1.25: - version "3.1.25" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" - integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== natural-compare@^1.4.0: version "1.4.0" @@ -1164,11 +1142,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -1204,11 +1177,11 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.19.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -1254,9 +1227,9 @@ rollup-pluginutils@^1.5.0: minimatch "^3.0.2" rollup@2: - version "2.63.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.63.0.tgz#fe2f7fec2133f3fab9e022b9ac245628d817c6bb" - integrity sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ== + version "2.70.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" + integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== optionalDependencies: fsevents "~2.3.2" @@ -1275,13 +1248,6 @@ safe-buffer@^5.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^7.2.1: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -1374,10 +1340,11 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== terser@^5.0.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" - integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + version "5.12.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" + integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== dependencies: + acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.20" @@ -1435,10 +1402,10 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" - integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== wrap-ansi@^7.0.0: version "7.0.0" @@ -1459,11 +1426,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" From 552ddf9a4bbd144eab5571724d2c9f5ed8efbf97 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 28 Mar 2022 16:02:48 -0700 Subject: [PATCH 126/311] 7.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 121ccda15c9e29..60c1d736769ee1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.3.0", + "version": "7.4.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 778af6bc945e324eca98e99b13f9ec96afbb2441 Mon Sep 17 00:00:00 2001 From: Avery Edmondson <33769131+aedmondson@users.noreply.github.com> Date: Mon, 28 Mar 2022 17:49:12 -0700 Subject: [PATCH 127/311] Updated API Reference Link in README.md (#3562) The API Reference link at the top of README.md used "master" instead of "main". GitHub would redirect to the correct page, but with a warning message. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3cb166efa7f762..6af926d83f1cc9 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## Resources * [Introduction](https://observablehq.com/@d3/learn-d3) -* [API Reference](https://github.com/d3/d3/blob/master/API.md) +* [API Reference](https://github.com/d3/d3/blob/main/API.md) * [Releases](https://github.com/d3/d3/releases) * [Examples](https://observablehq.com/@d3/gallery) * [Wiki](https://github.com/d3/d3/wiki) From 6b9768fa5aae43db9253a6cbef769c4c8268e53e Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 2 Apr 2022 17:24:30 -0500 Subject: [PATCH 128/311] d3-array 3.1.3, d3-hierarchy 3.1.2 --- API.md | 316 +++++++++++++++++++++++++++--------------------------- yarn.lock | 12 +-- 2 files changed, 164 insertions(+), 164 deletions(-) diff --git a/API.md b/API.md index f8f8ab38bbc5bd..fe7e8b167a6f58 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.1) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.3) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.1/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.3/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.1/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.1/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.1/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.1/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.1/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.1/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.3/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.3/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.3/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.3/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.3/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.3/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.3/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.3/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.3/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.1/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.1/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.1/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.1/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.1/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.1/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.3/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.3/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.3/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.3/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.3/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.1/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.1/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.1/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.1/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.1/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.1/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.1/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.1/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.1/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.1/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.1/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.1/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.1/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.1/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.1/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.1/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.1/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.1/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.1/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.1/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.1/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.1/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.1/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.1/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.1/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.1/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.1/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.1/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.1/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.1/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.1/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.1/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.1/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.3/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.3/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.3/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.3/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.3/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.3/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.3/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.3/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.3/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.3/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.3/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.3/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.3/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.3/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.3/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.3/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.3/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.3/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.3/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.3/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.3/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.3/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.3/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.3/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.3/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.3/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.3/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.3/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.3/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.3/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.3/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.3/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.1/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.1/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.1/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.3/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.1/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.3/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.1/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.1/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.3/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.3/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) @@ -703,71 +703,71 @@ Geographic projections, shapes and math. * [d3.geoClipCircle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipCircle) - clips spherical geometries to a small circle. * [d3.geoClipRectangle](https://github.com/d3/d3-geo/blob/v3.0.1/README.md#geoClipRectangle) - clips planar geometries to a rectangular viewport. -## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.1.1) +## [Hierarchies (d3-hierarchy)](https://github.com/d3/d3-hierarchy/tree/v3.1.2) Layout algorithms for visualizing hierarchical data. -* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#hierarchy) - constructs a root node from hierarchical data. -* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_ancestors) - generate an array of ancestors. -* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_descendants) - generate an array of descendants. -* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_leaves) - generate an array of leaves. -* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_find) - find a node in the hierarchy. -* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_path) - generate the shortest path to another node. -* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_links) - generate an array of links. -* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_sum) - evaluate and aggregate quantitative values. -* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_count) - count the number of leaves. -* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_sort) - sort all descendant siblings. -* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_iterator) - iterate on a hierarchy. -* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_each) - breadth-first traversal. -* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_eachAfter) - post-order traversal. -* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_eachBefore) - pre-order traversal. -* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#node_copy) - copy a hierarchy. -* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify) - create a new stratify operator. -* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_stratify) - construct a root node from tabular data. -* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_id) - set the node id accessor. -* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_parentId) - set the parent node id accessor. -* [*stratify*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#stratify_path) - set the path accessor. -* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster) - create a new cluster (dendrogram) layout. -* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_cluster) - layout the specified hierarchy in a dendrogram. -* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_size) - set the layout size. -* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_nodeSize) - set the node size. -* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#cluster_separation) - set the separation between leaves. -* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree) - create a new tidy tree layout. -* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_tree) - layout the specified hierarchy in a tidy tree. -* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_size) - set the layout size. -* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_nodeSize) - set the node size. -* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#tree_separation) - set the separation between nodes. -* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap) - create a new treemap layout. -* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_treemap) - layout the specified hierarchy as a treemap. -* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_tile) - set the tiling method. -* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_size) - set the layout size. -* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_round) - set whether the output coordinates are rounded. -* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_padding) - set the padding. -* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingInner) - set the padding between siblings. -* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingOuter) - set the padding between parent and children. -* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. -* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. -* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. -* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. -* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapBinary) - tile using a balanced binary tree. -* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapDice) - tile into a horizontal row. -* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSlice) - tile into a vertical column. -* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSliceDice) - alternate between slicing and dicing. -* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* -* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. -* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio) - set the desired rectangle aspect ratio. -* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition) - create a new partition (icicle or sunburst) layout. -* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_partition) - layout the specified hierarchy as a partition diagram. -* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_size) - set the layout size. -* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_round) - set whether the output coordinates are rounded. -* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#partition_padding) - set the padding. -* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack) - create a new circle-packing layout. -* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#_pack) - layout the specified hierarchy using circle-packing. -* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_radius) - set the radius accessor. -* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_size) - set the layout size. -* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#pack_padding) - set the padding. -* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#packSiblings) - pack the specified array of circles. -* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#packEnclose) - enclose the specified array of circles. +* [d3.hierarchy](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#hierarchy) - constructs a root node from hierarchical data. +* [*node*.ancestors](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_ancestors) - generate an array of ancestors. +* [*node*.descendants](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_descendants) - generate an array of descendants. +* [*node*.leaves](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_leaves) - generate an array of leaves. +* [*node*.find](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_find) - find a node in the hierarchy. +* [*node*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_path) - generate the shortest path to another node. +* [*node*.links](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_links) - generate an array of links. +* [*node*.sum](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_sum) - evaluate and aggregate quantitative values. +* [*node*.count](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_count) - count the number of leaves. +* [*node*.sort](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_sort) - sort all descendant siblings. +* [*node*[Symbol.iterator]](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_iterator) - iterate on a hierarchy. +* [*node*.each](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_each) - breadth-first traversal. +* [*node*.eachAfter](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_eachAfter) - post-order traversal. +* [*node*.eachBefore](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_eachBefore) - pre-order traversal. +* [*node*.copy](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#node_copy) - copy a hierarchy. +* [d3.stratify](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#stratify) - create a new stratify operator. +* [*stratify*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_stratify) - construct a root node from tabular data. +* [*stratify*.id](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#stratify_id) - set the node id accessor. +* [*stratify*.parentId](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#stratify_parentId) - set the parent node id accessor. +* [*stratify*.path](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#stratify_path) - set the path accessor. +* [d3.cluster](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#cluster) - create a new cluster (dendrogram) layout. +* [*cluster*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_cluster) - layout the specified hierarchy in a dendrogram. +* [*cluster*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#cluster_size) - set the layout size. +* [*cluster*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#cluster_nodeSize) - set the node size. +* [*cluster*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#cluster_separation) - set the separation between leaves. +* [d3.tree](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#tree) - create a new tidy tree layout. +* [*tree*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_tree) - layout the specified hierarchy in a tidy tree. +* [*tree*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#tree_size) - set the layout size. +* [*tree*.nodeSize](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#tree_nodeSize) - set the node size. +* [*tree*.separation](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#tree_separation) - set the separation between nodes. +* [d3.treemap](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap) - create a new treemap layout. +* [*treemap*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_treemap) - layout the specified hierarchy as a treemap. +* [*treemap*.tile](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_tile) - set the tiling method. +* [*treemap*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_size) - set the layout size. +* [*treemap*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_round) - set whether the output coordinates are rounded. +* [*treemap*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_padding) - set the padding. +* [*treemap*.paddingInner](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingInner) - set the padding between siblings. +* [*treemap*.paddingOuter](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingOuter) - set the padding between parent and children. +* [*treemap*.paddingTop](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingTop) - set the padding between the parent’s top edge and children. +* [*treemap*.paddingRight](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingRight) - set the padding between the parent’s right edge and children. +* [*treemap*.paddingBottom](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingBottom) - set the padding between the parent’s bottom edge and children. +* [*treemap*.paddingLeft](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemap_paddingLeft) - set the padding between the parent’s left edge and children. +* [d3.treemapBinary](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapBinary) - tile using a balanced binary tree. +* [d3.treemapDice](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapDice) - tile into a horizontal row. +* [d3.treemapSlice](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapSlice) - tile into a vertical column. +* [d3.treemapSliceDice](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapSliceDice) - alternate between slicing and dicing. +* [d3.treemapSquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapSquarify) - tile using squarified rows per Bruls *et. al.* +* [d3.treemapResquarify](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#treemapResquarify) - like d3.treemapSquarify, but performs stable updates. +* [*squarify*.ratio](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#squarify_ratio) - set the desired rectangle aspect ratio. +* [d3.partition](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#partition) - create a new partition (icicle or sunburst) layout. +* [*partition*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_partition) - layout the specified hierarchy as a partition diagram. +* [*partition*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#partition_size) - set the layout size. +* [*partition*.round](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#partition_round) - set whether the output coordinates are rounded. +* [*partition*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#partition_padding) - set the padding. +* [d3.pack](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#pack) - create a new circle-packing layout. +* [*pack*](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#_pack) - layout the specified hierarchy using circle-packing. +* [*pack*.radius](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#pack_radius) - set the radius accessor. +* [*pack*.size](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#pack_size) - set the layout size. +* [*pack*.padding](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#pack_padding) - set the padding. +* [d3.packSiblings](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#packSiblings) - pack the specified array of circles. +* [d3.packEnclose](https://github.com/d3/d3-hierarchy/blob/v3.1.2/README.md#packEnclose) - enclose the specified array of circles. ## [Interpolators (d3-interpolate)](https://github.com/d3/d3-interpolate/tree/v3.0.1) diff --git a/yarn.lock b/yarn.lock index 3763f2f37b9bf6..9cb3d1f19394be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,9 +304,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.1.tgz#7797eb53ead6b9083c75a45a681e93fc41bc468c" - integrity sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.3.tgz#6b293acd0e9fa035aa84da30ecc133f2c54c04d1" + integrity sha512-qwW+3phQqmogYyRDI9hC8AWNeTdyYexazuq/dDM7QgujVDVexwNOxVMUJt+0BRpCw/4S4+byuYTV51kttK/Bzw== dependencies: internmap "1 - 2" @@ -408,9 +408,9 @@ d3-geo@3: d3-array "2.5.0 - 3" d3-hierarchy@3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz#9cbb0ffd2375137a351e6cfeed344a06d4ff4597" - integrity sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: version "3.0.1" From 3540d3f2b4a90a5eb3bca5e9d7d3892cab140780 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 2 Apr 2022 17:25:04 -0500 Subject: [PATCH 129/311] 7.4.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60c1d736769ee1..2a7b9c220cc929 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.0", + "version": "7.4.1", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From a76d0b83e6acaf7ebd301f4a59486308c5199f3b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Apr 2022 10:44:26 -0500 Subject: [PATCH 130/311] d3-array 3.1.4 --- API.md | 192 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 99 insertions(+), 99 deletions(-) diff --git a/API.md b/API.md index fe7e8b167a6f58..3b943c6721f3a8 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.3) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.4) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.3/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.4/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.3/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.3/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.3/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.3/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.3/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.3/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.3/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.3/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.3/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.3/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.3/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.4/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.4/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.4/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.4/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.4/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.4/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.4/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.4/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.4/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.3/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.3/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.3/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.3/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.3/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.3/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.3/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.4/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.4/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.4/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.4/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.4/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.3/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.3/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.3/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.3/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.3/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.3/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.3/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.3/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.3/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.3/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.3/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.3/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.3/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.3/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.3/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.3/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.3/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.3/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.3/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.3/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.3/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.3/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.3/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.3/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.3/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.3/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.3/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.3/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.3/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.3/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.3/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.3/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.3/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.3/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.4/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.4/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.4/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.4/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.4/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.4/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.4/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.4/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.4/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.4/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.4/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.4/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.4/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.4/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.4/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.4/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.4/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.4/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.4/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.4/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.4/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.4/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.4/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.4/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.4/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.4/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.4/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.4/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.4/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.4/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.4/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.4/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.3/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.3/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.3/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.4/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.3/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.4/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.3/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.3/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.4/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.4/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 9cb3d1f19394be..8272330fa31c5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,9 +304,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.3.tgz#6b293acd0e9fa035aa84da30ecc133f2c54c04d1" - integrity sha512-qwW+3phQqmogYyRDI9hC8AWNeTdyYexazuq/dDM7QgujVDVexwNOxVMUJt+0BRpCw/4S4+byuYTV51kttK/Bzw== + version "3.1.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.4.tgz#f7edb5bfcf6d939d0f6a561876ab281c466ea693" + integrity sha512-H8lM97Gr9+LAR4WVHETCMt6LlWtLJVMCKsz1ojors+/PvAs2QqdLa20BuYvU11/DU+nLF0GVWL5Rv3jSgo2KmA== dependencies: internmap "1 - 2" From ad80958f169b01ed600d414172259d68ffb326b4 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Apr 2022 10:44:59 -0500 Subject: [PATCH 131/311] 7.4.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a7b9c220cc929..d94cde915a271a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.1", + "version": "7.4.2", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From d216428792739e84b79997f303be9479d5e1226d Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 7 Apr 2022 11:13:42 -0700 Subject: [PATCH 132/311] d3-array 3.1.5 --- API.md | 192 +++++++++++++++++++++++++++--------------------------- yarn.lock | 6 +- 2 files changed, 99 insertions(+), 99 deletions(-) diff --git a/API.md b/API.md index 3b943c6721f3a8..a07004d20d649c 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.4) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.5) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.4/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.5/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.4/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.4/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.4/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.4/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.4/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.4/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.4/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.4/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.4/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.4/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.4/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.5/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.5/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.5/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.5/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.5/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.5/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.5/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.5/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.5/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.4/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.4/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.4/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.4/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.4/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.4/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.4/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.5/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.5/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.5/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.5/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.5/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.4/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.4/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.4/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.4/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.4/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.4/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.4/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.4/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.4/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.4/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.4/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.4/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.4/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.4/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.4/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.4/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.4/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.4/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.4/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.4/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.4/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.4/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.4/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.4/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.4/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.4/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.4/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.4/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.4/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.4/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.4/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.4/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.4/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.4/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.5/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.5/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.5/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.5/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.5/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.5/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.5/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.5/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.5/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.5/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.5/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.5/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.5/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.5/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.5/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.5/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.5/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.5/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.5/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.5/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.5/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.5/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.5/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.5/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.5/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.5/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.5/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.5/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.5/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.5/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.5/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.5/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.4/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.4/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.4/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.5/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.4/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.5/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.4/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.4/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.5/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.5/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 8272330fa31c5c..62fb9ff2d8dc02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,9 +304,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.4.tgz#f7edb5bfcf6d939d0f6a561876ab281c466ea693" - integrity sha512-H8lM97Gr9+LAR4WVHETCMt6LlWtLJVMCKsz1ojors+/PvAs2QqdLa20BuYvU11/DU+nLF0GVWL5Rv3jSgo2KmA== + version "3.1.5" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.5.tgz#ba8a09fc50aee6c02c3ca2a97c485b9ce68a8e34" + integrity sha512-Rs6syGyepVjAYXWvhiFiVWUM8l4B/0p33tvlS+eXCVOaFrbz1dU7t+T16SJx/frnaLMXmFmKoXg/5aUVXxmMKQ== dependencies: internmap "1 - 2" From 56c9454951fe6f55ce903b3c5745cc7fbc9eae0d Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 7 Apr 2022 11:14:00 -0700 Subject: [PATCH 133/311] 7.4.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d94cde915a271a..6cce3f5f0b147c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.2", + "version": "7.4.3", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 8ff8c81b46bb43934f3cbc386298846702b99f79 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 11 Apr 2022 12:34:48 -0700 Subject: [PATCH 134/311] d3-array 3.1.6 --- API.md | 192 +++++++++++++++++++++++++++--------------------------- yarn.lock | 18 ++--- 2 files changed, 105 insertions(+), 105 deletions(-) diff --git a/API.md b/API.md index a07004d20d649c..f41d89ad7a307b 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,119 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.5) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.6) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.5/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.1.6/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.5/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.5/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.5/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.5/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.5/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.5/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.5/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.5/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.5/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.5/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.5/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.1.6/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.1.6/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.6/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.6/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.1.6/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.6/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.6/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.6/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. + +### [Search](https://github.com/d3/d3-array/blob/v3.1.6/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.5/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.5/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.5/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.5/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.5/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.5/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.5/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.1.6/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.6/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.6/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.6/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.1.6/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.5/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.5/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.5/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.5/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.5/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.5/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.5/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.5/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.5/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.5/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.5/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.5/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.5/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.5/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.5/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.5/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.5/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.5/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.5/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.5/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.5/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.5/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.5/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.5/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.5/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.5/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.5/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.5/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.5/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.5/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.5/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.5/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.5/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.5/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.1.6/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.6/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.6/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.1.6/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.6/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.1.6/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.6/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.6/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.6/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.6/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.6/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.6/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.6/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.6/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.6/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.6/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.1.6/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.6/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.6/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.1.6/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.1.6/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.1.6/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.6/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.1.6/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.6/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.6/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.6/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.6/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.6/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.6/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.6/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.1.6/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.5/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.5/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.5/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.1.6/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.5/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.1.6/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.5/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.5/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.6/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.6/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 62fb9ff2d8dc02..306b90522a6e07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,9 +15,9 @@ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" @@ -304,9 +304,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.5.tgz#ba8a09fc50aee6c02c3ca2a97c485b9ce68a8e34" - integrity sha512-Rs6syGyepVjAYXWvhiFiVWUM8l4B/0p33tvlS+eXCVOaFrbz1dU7t+T16SJx/frnaLMXmFmKoXg/5aUVXxmMKQ== + version "3.1.6" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.6.tgz#0342c835925826f49b4d16eb7027aec334ffc97d" + integrity sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA== dependencies: internmap "1 - 2" @@ -605,9 +605,9 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8: - version "8.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e" - integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q== + version "8.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7" + integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ== dependencies: "@eslint/eslintrc" "^1.2.1" "@humanwhocodes/config-array" "^0.9.2" From 2f256d997879aef15d0a8f7e94a242dbc57d0106 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 11 Apr 2022 12:34:53 -0700 Subject: [PATCH 135/311] 7.4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6cce3f5f0b147c..b07960ad53a790 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.3", + "version": "7.4.4", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 7e9eba396c80095f9b786af24cb4e8abbc03ed18 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 24 Jun 2022 08:52:08 -0400 Subject: [PATCH 136/311] d3-contour 3.0.2 --- API.md | 32 +++--- package.json | 2 +- yarn.lock | 307 +++++++++++++++++++++++++++++---------------------- 3 files changed, 194 insertions(+), 147 deletions(-) diff --git a/API.md b/API.md index f41d89ad7a307b..961dd57962c814 100644 --- a/API.md +++ b/API.md @@ -331,25 +331,25 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. * [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow * [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow -## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.0.1) +## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.0.2) Compute contour polygons using marching squares. -* [d3.contours](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours) - create a new contour generator. -* [*contours*](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#_contours) - compute the contours for a given grid of values. -* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_contour) - compute a contour for a given value. -* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_size) - set the size of a contour generator. -* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_smooth) - set whether or not the generated contours are smoothed. -* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contours_thresholds) - set the thresholds of a contour generator. -* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#contourDensity) - create a new density estimator. -* [*density*](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#_density) - estimate the density of a given array of samples. -* [*density*.x](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_x) - set the *x* accessor of the density estimator. -* [*density*.y](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_y) - set the *y* accessor of the density estimator. -* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_weight) - set the *weight* accessor of the density estimator. -* [*density*.size](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_size) - set the size of the density estimator. -* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_cellSize) - set the cell size of the density estimator. -* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_thresholds) - set the thresholds of the density estimator. -* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.0.1/README.md#density_bandwidth) - set the bandwidth of the density estimator. +* [d3.contours](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours) - create a new contour generator. +* [*contours*](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#_contours) - compute the contours for a given grid of values. +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_contour) - compute a contour for a given value. +* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_size) - set the size of a contour generator. +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_smooth) - set whether or not the generated contours are smoothed. +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_thresholds) - set the thresholds of a contour generator. +* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contourDensity) - create a new density estimator. +* [*density*](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#_density) - estimate the density of a given array of samples. +* [*density*.x](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_x) - set the *x* accessor of the density estimator. +* [*density*.y](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_y) - set the *y* accessor of the density estimator. +* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_weight) - set the *weight* accessor of the density estimator. +* [*density*.size](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_size) - set the size of the density estimator. +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_cellSize) - set the cell size of the density estimator. +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_thresholds) - set the thresholds of the density estimator. +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_bandwidth) - set the bandwidth of the density estimator. ## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v6.0.2) diff --git a/package.json b/package.json index b07960ad53a790..79787eb4139990 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "@rollup/plugin-json": "4", "@rollup/plugin-node-resolve": "13", "eslint": "8", - "mocha": "9", + "mocha": "10", "rollup": "2", "rollup-plugin-ascii": "0.0", "rollup-plugin-terser": "7" diff --git a/yarn.lock b/yarn.lock index 306b90522a6e07..be4145f06609e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,27 +15,27 @@ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" + espree "^9.3.2" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" - minimatch "^3.0.4" + minimatch "^3.1.2" strip-json-comments "^3.1.1" "@humanwhocodes/config-array@^0.9.2": @@ -52,6 +52,46 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@rollup/plugin-json@4": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -60,14 +100,14 @@ "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@13": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" - integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" deepmerge "^4.2.2" + is-builtin-module "^3.1.0" is-module "^1.0.0" resolve "^1.19.0" @@ -86,9 +126,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== "@types/resolve@1.17.1": version "1.17.1" @@ -102,7 +142,7 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -110,12 +150,12 @@ acorn-jsx@^5.3.1: acorn@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + integrity sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw== -acorn@^8.5.0, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== +acorn@^8.5.0, acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" @@ -182,6 +222,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -199,10 +246,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-modules@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== callsites@^3.0.0: version "3.1.0" @@ -272,7 +319,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" @@ -292,7 +339,7 @@ commander@^2.20.0: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== cross-spawn@^7.0.2: version "7.0.3" @@ -339,9 +386,9 @@ d3-chord@3: integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== d3-contour@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.1.tgz#2c64255d43059599cd0dba8fe4cc3d51ccdd9bbd" - integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.2.tgz#eff71df949788ae5803b05a24cbb1f527c3ada65" + integrity sha512-n0zP1c2sqsdZEGStDhYXpzihrzmQHFcKXsXatX2jc+uJx9Va0kKB5qepJ9V0hbgFWM+05wrJ0Npo+dXKP3GZ8Q== dependencies: d3-array "2 - 3" @@ -511,14 +558,7 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.1.1, debug@^4.3.2: +debug@4.3.4, debug@^4.1.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -577,7 +617,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== eslint-scope@^7.1.1: version "7.1.1" @@ -605,11 +645,11 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8: - version "8.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7" - integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ== + version "8.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" + integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== dependencies: - "@eslint/eslintrc" "^1.2.1" + "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -620,14 +660,14 @@ eslint@8: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + espree "^9.3.2" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" - globals "^13.6.0" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -636,7 +676,7 @@ eslint@8: json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" regexpp "^3.2.0" @@ -645,13 +685,13 @@ eslint@8: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" + acorn "^8.7.1" + acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" esquery@^1.4.0: @@ -676,7 +716,7 @@ estraverse@^5.1.0, estraverse@^5.2.0: estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" - integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= + integrity sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ== estree-walker@^1.0.1: version "1.0.1" @@ -701,7 +741,7 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== file-entry-cache@^6.0.1: version "6.0.1" @@ -746,7 +786,7 @@ flatted@^3.1.0: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" @@ -761,7 +801,7 @@ function-bind@^1.1.1: functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== get-caller-file@^2.0.5: version "2.0.5" @@ -782,7 +822,7 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.2.0, glob@^7.1.3: +glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -794,22 +834,29 @@ glob@7.2.0, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^13.6.0, globals@^13.9.0: - version "13.13.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" - integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - type-fest "^0.20.2" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +globals@^13.15.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + dependencies: + type-fest "^0.20.2" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" @@ -851,12 +898,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -878,17 +925,24 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -905,7 +959,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-number@^7.0.0: version "7.0.0" @@ -925,7 +979,7 @@ is-unicode-supported@^0.1.0: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== jest-worker@^26.2.1: version "26.6.2" @@ -961,7 +1015,7 @@ json-schema-traverse@^0.4.1: json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== levn@^0.4.1: version "0.4.1" @@ -994,7 +1048,7 @@ log-symbols@4.1.0: magic-string@^0.15.1: version "0.15.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.15.2.tgz#0681d7388741bbc3addaa65060992624c6c09e9c" - integrity sha1-BoHXOIdBu8Ot2qZQYJkmJMbAnpw= + integrity sha512-xkHb690SyIbvr1x6PiHoP2M2rTkIt9La8gZLjoXIjcm7CI0a+9V9JqQWVQPsBLgt9qzkgtCuYN+/Thqw6crg6w== dependencies: vlq "^0.2.1" @@ -1003,46 +1057,44 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -mocha@9: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== +mocha@10: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" + integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" - growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "4.2.1" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.1" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -1057,15 +1109,15 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -1075,7 +1127,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -1120,7 +1172,7 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: version "3.1.1" @@ -1169,7 +1221,7 @@ regexpp@^3.2.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== resolve-from@^4.0.0: version "4.0.0" @@ -1177,11 +1229,11 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.19.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -1200,7 +1252,7 @@ robust-predicates@^3.0.0: rollup-plugin-ascii@0.0: version "0.0.3" resolved "https://registry.yarnpkg.com/rollup-plugin-ascii/-/rollup-plugin-ascii-0.0.3.tgz#2057a6d65c00573d1ca5b2649ce4e531b042cde7" - integrity sha1-IFem1lwAVz0cpbJknOTlMbBCzec= + integrity sha512-4sx0tYyy3Fc7qKwJ7zpBk+wGeWzB1QzkADWNfwuDZ6AHV8vgPn42+cwjzl5RuiQpU+wRSeOhnfST+h4oivQc0w== dependencies: acorn "^3.2.0" estree-walker "^0.2.1" @@ -1221,22 +1273,22 @@ rollup-plugin-terser@7: rollup-pluginutils@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" - integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= + integrity sha512-SjdWWWO/CUoMpDy8RUbZ/pSpG68YHmhk5ROKNIoi2En9bJ8bTt3IhYi254RWiTclQmL7Awmrq+rZFOhZkJAHmQ== dependencies: estree-walker "^0.2.1" minimatch "^3.0.2" rollup@2: - version "2.70.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" - integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== + version "2.75.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== optionalDependencies: fsevents "~2.3.2" rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== safe-buffer@^5.1.0: version "5.2.1" @@ -1287,11 +1339,6 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -1340,19 +1387,19 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== terser@^5.0.0: - version "5.12.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" - integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + version "5.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" + integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== dependencies: + "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== to-regex-range@^5.0.1: version "5.0.1" @@ -1390,7 +1437,7 @@ vlq@^0.2.1: resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -which@2.0.2, which@^2.0.1: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -1402,10 +1449,10 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^7.0.0: version "7.0.0" @@ -1419,7 +1466,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" From 6d7057148dd18fc8240d51a2183d3f03ac42480c Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 24 Jun 2022 08:52:21 -0400 Subject: [PATCH 137/311] 7.4.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 79787eb4139990..a60e5cfd1e174a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.4", + "version": "7.4.5", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From d9f58e148dee005d8fa948d9e6b7dd154b18ca63 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 26 Jun 2022 19:40:14 -0400 Subject: [PATCH 138/311] d3-contour 3.1.0 --- API.md | 33 +++++++++++++++++---------------- yarn.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/API.md b/API.md index 961dd57962c814..e7902446592256 100644 --- a/API.md +++ b/API.md @@ -331,25 +331,26 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. * [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow * [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow -## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.0.2) +## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.1.0) Compute contour polygons using marching squares. -* [d3.contours](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours) - create a new contour generator. -* [*contours*](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#_contours) - compute the contours for a given grid of values. -* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_contour) - compute a contour for a given value. -* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_size) - set the size of a contour generator. -* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_smooth) - set whether or not the generated contours are smoothed. -* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contours_thresholds) - set the thresholds of a contour generator. -* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#contourDensity) - create a new density estimator. -* [*density*](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#_density) - estimate the density of a given array of samples. -* [*density*.x](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_x) - set the *x* accessor of the density estimator. -* [*density*.y](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_y) - set the *y* accessor of the density estimator. -* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_weight) - set the *weight* accessor of the density estimator. -* [*density*.size](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_size) - set the size of the density estimator. -* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_cellSize) - set the cell size of the density estimator. -* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_thresholds) - set the thresholds of the density estimator. -* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.0.2/README.md#density_bandwidth) - set the bandwidth of the density estimator. +* [d3.contours](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours) - create a new contour generator. +* [*contours*](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#_contours) - compute the contours for a given grid of values. +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_contour) - compute a contour for a given value. +* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_size) - set the size of a contour generator. +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_smooth) - set whether or not the generated contours are smoothed. +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_thresholds) - set the thresholds of a contour generator. +* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contourDensity) - create a new density estimator. +* [*density*](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#_density) - estimate the density of a given array of samples. +* [*density*.x](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_x) - set the *x* accessor of the density estimator. +* [*density*.y](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_y) - set the *y* accessor of the density estimator. +* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_weight) - set the *weight* accessor of the density estimator. +* [*density*.size](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_size) - set the size of the density estimator. +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_cellSize) - set the cell size of the density estimator. +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_thresholds) - set the thresholds of the density estimator. +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_bandwidth) - set the bandwidth of the density estimator. +* [*density*.contours](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_contours) - compute density contours. ## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v6.0.2) diff --git a/yarn.lock b/yarn.lock index be4145f06609e2..6b2d79399b2a36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,23 +53,23 @@ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/set-array" "^1.0.0" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + version "3.0.8" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz#687cc2bbf243f4e9a868ecf2262318e2658873a1" + integrity sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" @@ -80,14 +80,14 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -386,9 +386,9 @@ d3-chord@3: integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== d3-contour@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.0.2.tgz#eff71df949788ae5803b05a24cbb1f527c3ada65" - integrity sha512-n0zP1c2sqsdZEGStDhYXpzihrzmQHFcKXsXatX2jc+uJx9Va0kKB5qepJ9V0hbgFWM+05wrJ0Npo+dXKP3GZ8Q== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.1.0.tgz#708484a5d89be9558dfdda4a95b3df2fdebb65ab" + integrity sha512-vV3xtwrYK5p1J4vyukr70m57mtFTEQYqoaDC1ylBfht/hkdUF0nfWZ1b3V2EPBUVkUkoqq5/fbRoBImBWJgOsg== dependencies: d3-array "2 - 3" From d61883547c058d9e19fa04269fec48e2f4f8d494 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 26 Jun 2022 19:40:31 -0400 Subject: [PATCH 139/311] 7.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a60e5cfd1e174a..0582229b223d2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.4.5", + "version": "7.5.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 22f1dc734b8078ef7eaabff42d9aa479599559db Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Jul 2022 09:34:15 -0400 Subject: [PATCH 140/311] d3-array 3.2.0 --- API.md | 197 ++++++++++++++++++++++++++++-------------------------- yarn.lock | 50 +++++++------- 2 files changed, 126 insertions(+), 121 deletions(-) diff --git a/API.md b/API.md index e7902446592256..e7d8ba6bb25d51 100644 --- a/API.md +++ b/API.md @@ -35,119 +35,124 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.1.6) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.2.0) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.1.6/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.2.0/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.1.6/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.1.6/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.1.6/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.1.6/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.1.6/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.1.6/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.1.6/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.1.6/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.1.6/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.1.6/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. - -### [Search](https://github.com/d3/d3-array/blob/v3.1.6/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.2.0/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.2.0/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.2.0/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.2.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.2.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.medianIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#median) - compute the median index of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.2.0/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantileIndex) - compute a quantile index for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.2.0/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.2.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. +* [d3.blur](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blur) - blur an array of numbers in place. +* [d3.blur2](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blur2) - blur a two-dimensional array of numbers in place. +* [d3.blurImage](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blurImage) - blur an RGBA ImageData in place. + +### [Search](https://github.com/d3/d3-array/blob/v3.2.0/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.1.6/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.1.6/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.1.6/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.1.6/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.1.6/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.1.6/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.1.6/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.2.0/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.2.0/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.2.0/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.2.0/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.2.0/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.1.6/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.1.6/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.1.6/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.1.6/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.1.6/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.1.6/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.1.6/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.1.6/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.1.6/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.1.6/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.1.6/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.1.6/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.1.6/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.1.6/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.1.6/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.1.6/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.1.6/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.1.6/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.1.6/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.1.6/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.1.6/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.1.6/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.1.6/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.1.6/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.1.6/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.1.6/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.1.6/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.1.6/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.1.6/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.1.6/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.1.6/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.1.6/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.1.6/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.1.6/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.2.0/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.2.0/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.2.0/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.2.0/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.2.0/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.2.0/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.2.0/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.2.0/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.2.0/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.2.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.2.0/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.2.0/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.2.0/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.2.0/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.2.0/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.2.0/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.2.0/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.2.0/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.2.0/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.2.0/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.2.0/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.2.0/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.2.0/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.2.0/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.2.0/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.2.0/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.2.0/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.2.0/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.2.0/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.2.0/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.2.0/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.2.0/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.1.6/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.1.6/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.1.6/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.2.0/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.1.6/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.2.0/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.1.6/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.1.6/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.2.0/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.2.0/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) diff --git a/yarn.lock b/yarn.lock index 6b2d79399b2a36..d18b5beafbbefc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,23 +3,23 @@ "@babel/code-frame@^7.10.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" @@ -126,9 +126,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@*": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + version "18.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.1.tgz#e91bd73239b338557a84d1f67f7b9e0f25643870" + integrity sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg== "@types/resolve@1.17.1": version "1.17.1" @@ -351,9 +351,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.6.tgz#0342c835925826f49b4d16eb7027aec334ffc97d" - integrity sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.0.tgz#15bf96cd9b7333e02eb8de8053d78962eafcff14" + integrity sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g== dependencies: internmap "1 - 2" @@ -645,9 +645,9 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8: - version "8.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" - integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== + version "8.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" + integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" @@ -779,9 +779,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== fs.realpath@^1.0.0: version "1.0.0" From 795f2030a4b727b3a14526ed9974d4e41c006a92 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Jul 2022 09:34:38 -0400 Subject: [PATCH 141/311] 7.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0582229b223d2f..b5c72f0c81ff45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.5.0", + "version": "7.6.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From c1c2c0b8ca8d9058d8d07a9b8f89d6c8ec28d16e Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Jul 2022 10:04:20 -0400 Subject: [PATCH 142/311] d3-contour 4.0.0 --- API.md | 34 +++++++++++++++++----------------- package.json | 2 +- yarn.lock | 12 ++++++------ 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/API.md b/API.md index e7d8ba6bb25d51..a4999e67f4f95a 100644 --- a/API.md +++ b/API.md @@ -336,26 +336,26 @@ Color ramps and palettes for quantitative, ordinal and categorical scales. * [d3.interpolateRainbow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateRainbow) - the “less-angry” rainbow * [d3.interpolateSinebow](https://github.com/d3/d3-scale-chromatic/blob/v3.0.0/README.md#interpolateSinebow) - the “sinebow” smooth rainbow -## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v3.1.0) +## [Contours (d3-contour)](https://github.com/d3/d3-contour/tree/v4.0.0) Compute contour polygons using marching squares. -* [d3.contours](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours) - create a new contour generator. -* [*contours*](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#_contours) - compute the contours for a given grid of values. -* [*contours*.contour](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_contour) - compute a contour for a given value. -* [*contours*.size](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_size) - set the size of a contour generator. -* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_smooth) - set whether or not the generated contours are smoothed. -* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contours_thresholds) - set the thresholds of a contour generator. -* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#contourDensity) - create a new density estimator. -* [*density*](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#_density) - estimate the density of a given array of samples. -* [*density*.x](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_x) - set the *x* accessor of the density estimator. -* [*density*.y](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_y) - set the *y* accessor of the density estimator. -* [*density*.weight](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_weight) - set the *weight* accessor of the density estimator. -* [*density*.size](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_size) - set the size of the density estimator. -* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_cellSize) - set the cell size of the density estimator. -* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_thresholds) - set the thresholds of the density estimator. -* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_bandwidth) - set the bandwidth of the density estimator. -* [*density*.contours](https://github.com/d3/d3-contour/blob/v3.1.0/README.md#density_contours) - compute density contours. +* [d3.contours](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contours) - create a new contour generator. +* [*contours*](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#_contours) - compute the contours for a given grid of values. +* [*contours*.contour](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contours_contour) - compute a contour for a given value. +* [*contours*.size](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contours_size) - set the size of a contour generator. +* [*contours*.smooth](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contours_smooth) - set whether or not the generated contours are smoothed. +* [*contours*.thresholds](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contours_thresholds) - set the thresholds of a contour generator. +* [d3.contourDensity](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#contourDensity) - create a new density estimator. +* [*density*](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#_density) - estimate the density of a given array of samples. +* [*density*.x](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_x) - set the *x* accessor of the density estimator. +* [*density*.y](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_y) - set the *y* accessor of the density estimator. +* [*density*.weight](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_weight) - set the *weight* accessor of the density estimator. +* [*density*.size](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_size) - set the size of the density estimator. +* [*density*.cellSize](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_cellSize) - set the cell size of the density estimator. +* [*density*.thresholds](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_thresholds) - set the thresholds of the density estimator. +* [*density*.bandwidth](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_bandwidth) - set the bandwidth of the density estimator. +* [*density*.contours](https://github.com/d3/d3-contour/blob/v4.0.0/README.md#density_contours) - compute density contours. ## [Voronoi Diagrams (d3-delaunay)](https://github.com/d3/d3-delaunay/tree/v6.0.2) diff --git a/package.json b/package.json index b5c72f0c81ff45..1d1bda2e2a01f6 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "d3-brush": "3", "d3-chord": "3", "d3-color": "3", - "d3-contour": "3", + "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", diff --git a/yarn.lock b/yarn.lock index d18b5beafbbefc..cf21fbb4f25c4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -350,7 +350,7 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.0.tgz#15bf96cd9b7333e02eb8de8053d78962eafcff14" integrity sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g== @@ -385,12 +385,12 @@ d3-chord@3: resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== -d3-contour@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-3.1.0.tgz#708484a5d89be9558dfdda4a95b3df2fdebb65ab" - integrity sha512-vV3xtwrYK5p1J4vyukr70m57mtFTEQYqoaDC1ylBfht/hkdUF0nfWZ1b3V2EPBUVkUkoqq5/fbRoBImBWJgOsg== +d3-contour@4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.0.tgz#5a1337c6da0d528479acdb5db54bc81a0ff2ec6b" + integrity sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw== dependencies: - d3-array "2 - 3" + d3-array "^3.2.0" d3-delaunay@6: version "6.0.2" From 19302a5055658907743b46a8428ba1ee39927b0f Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sun, 3 Jul 2022 10:04:27 -0400 Subject: [PATCH 143/311] 7.6.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1d1bda2e2a01f6..c72bd721129b95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.6.0", + "version": "7.6.1", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From c4e728c855fdc884c33a4c85b69740956bb1edba Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 3 Dec 2022 10:18:12 -0800 Subject: [PATCH 144/311] d3-array 3.2.1, d3-time 3.1.0 --- API.md | 288 ++++++++++++++++++++--------------------- package.json | 6 +- rollup.config.js | 2 +- yarn.lock | 325 +++++++++++++++++++++++++++-------------------- 4 files changed, 336 insertions(+), 285 deletions(-) diff --git a/API.md b/API.md index a4999e67f4f95a..e95675a41474e0 100644 --- a/API.md +++ b/API.md @@ -35,124 +35,124 @@ D3 is a [collection of modules](https://github.com/d3) that are designed to work D3 uses [semantic versioning](http://semver.org/). The current version is exposed as d3.version. -## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.2.0) +## [Arrays (d3-array)](https://github.com/d3/d3-array/tree/v3.2.1) Array manipulation, ordering, searching, summarizing, etc. -### [Statistics](https://github.com/d3/d3-array/blob/v3.2.0/README.md#statistics) +### [Statistics](https://github.com/d3/d3-array/blob/v3.2.1/README.md#statistics) Methods for computing basic summary statistics. -* [d3.min](https://github.com/d3/d3-array/blob/v3.2.0/README.md#min) - compute the minimum value in an iterable. -* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#minIndex) - compute the index of the minimum value in an iterable. -* [d3.max](https://github.com/d3/d3-array/blob/v3.2.0/README.md#max) - compute the maximum value in an iterable. -* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#maxIndex) - compute the index of the maximum value in an iterable. -* [d3.extent](https://github.com/d3/d3-array/blob/v3.2.0/README.md#extent) - compute the minimum and maximum value in an iterable. -* [d3.sum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sum) - compute the sum of an iterable of numbers. -* [d3.mean](https://github.com/d3/d3-array/blob/v3.2.0/README.md#mean) - compute the arithmetic mean of an iterable of numbers. -* [d3.median](https://github.com/d3/d3-array/blob/v3.2.0/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). -* [d3.medianIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#median) - compute the median index of an iterable of numbers (the 0.5-quantile). -* [d3.mode](https://github.com/d3/d3-array/blob/v3.2.0/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. -* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#cumsum) - compute the cumulative sum of an iterable. -* [d3.rank](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rank) - compute the rank order of an iterable. -* [d3.quantile](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantile) - compute a quantile for an iterable of numbers. -* [d3.quantileIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantileIndex) - compute a quantile index for an iterable of numbers. -* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. -* [d3.variance](https://github.com/d3/d3-array/blob/v3.2.0/README.md#variance) - compute the variance of an iterable of numbers. -* [d3.deviation](https://github.com/d3/d3-array/blob/v3.2.0/README.md#deviation) - compute the standard deviation of an iterable of numbers. -* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#fcumsum) - compute a full precision cumulative summation of numbers. -* [d3.fsum](https://github.com/d3/d3-array/blob/v3.2.0/README.md#fsum) - compute a full precision summation of an iterable of numbers. -* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder) - creates a full precision adder. -* [*adder*.add](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder_add) - add a value to an adder. -* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.2.0/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. -* [d3.blur](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blur) - blur an array of numbers in place. -* [d3.blur2](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blur2) - blur a two-dimensional array of numbers in place. -* [d3.blurImage](https://github.com/d3/d3-array/blob/v3.2.0/README.md#blurImage) - blur an RGBA ImageData in place. - -### [Search](https://github.com/d3/d3-array/blob/v3.2.0/README.md#search) +* [d3.min](https://github.com/d3/d3-array/blob/v3.2.1/README.md#min) - compute the minimum value in an iterable. +* [d3.minIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#minIndex) - compute the index of the minimum value in an iterable. +* [d3.max](https://github.com/d3/d3-array/blob/v3.2.1/README.md#max) - compute the maximum value in an iterable. +* [d3.maxIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#maxIndex) - compute the index of the maximum value in an iterable. +* [d3.extent](https://github.com/d3/d3-array/blob/v3.2.1/README.md#extent) - compute the minimum and maximum value in an iterable. +* [d3.sum](https://github.com/d3/d3-array/blob/v3.2.1/README.md#sum) - compute the sum of an iterable of numbers. +* [d3.mean](https://github.com/d3/d3-array/blob/v3.2.1/README.md#mean) - compute the arithmetic mean of an iterable of numbers. +* [d3.median](https://github.com/d3/d3-array/blob/v3.2.1/README.md#median) - compute the median of an iterable of numbers (the 0.5-quantile). +* [d3.medianIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#median) - compute the median index of an iterable of numbers (the 0.5-quantile). +* [d3.mode](https://github.com/d3/d3-array/blob/v3.2.1/README.md#mode) - compute the mode (the most common value) of an iterable of numbers. +* [d3.cumsum](https://github.com/d3/d3-array/blob/v3.2.1/README.md#cumsum) - compute the cumulative sum of an iterable. +* [d3.rank](https://github.com/d3/d3-array/blob/v3.2.1/README.md#rank) - compute the rank order of an iterable. +* [d3.quantile](https://github.com/d3/d3-array/blob/v3.2.1/README.md#quantile) - compute a quantile for an iterable of numbers. +* [d3.quantileIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#quantileIndex) - compute a quantile index for an iterable of numbers. +* [d3.quantileSorted](https://github.com/d3/d3-array/blob/v3.2.1/README.md#quantileSorted) - compute a quantile for a sorted array of numbers. +* [d3.variance](https://github.com/d3/d3-array/blob/v3.2.1/README.md#variance) - compute the variance of an iterable of numbers. +* [d3.deviation](https://github.com/d3/d3-array/blob/v3.2.1/README.md#deviation) - compute the standard deviation of an iterable of numbers. +* [d3.fcumsum](https://github.com/d3/d3-array/blob/v3.2.1/README.md#fcumsum) - compute a full precision cumulative summation of numbers. +* [d3.fsum](https://github.com/d3/d3-array/blob/v3.2.1/README.md#fsum) - compute a full precision summation of an iterable of numbers. +* [new d3.Adder](https://github.com/d3/d3-array/blob/v3.2.1/README.md#adder) - creates a full precision adder. +* [*adder*.add](https://github.com/d3/d3-array/blob/v3.2.1/README.md#adder_add) - add a value to an adder. +* [*adder*.valueOf](https://github.com/d3/d3-array/blob/v3.2.1/README.md#adder_valueOf) - returns a double precision representation of an adder’s value. +* [d3.blur](https://github.com/d3/d3-array/blob/v3.2.1/README.md#blur) - blur an array of numbers in place. +* [d3.blur2](https://github.com/d3/d3-array/blob/v3.2.1/README.md#blur2) - blur a two-dimensional array of numbers in place. +* [d3.blurImage](https://github.com/d3/d3-array/blob/v3.2.1/README.md#blurImage) - blur an RGBA ImageData in place. + +### [Search](https://github.com/d3/d3-array/blob/v3.2.1/README.md#search) Methods for searching arrays for a specific element. -* [d3.least](https://github.com/d3/d3-array/blob/v3.2.0/README.md#least) - returns the least element of an iterable. -* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#leastIndex) - returns the index of the least element of an iterable. -* [d3.greatest](https://github.com/d3/d3-array/blob/v3.2.0/README.md#greatest) - returns the greatest element of an iterable. -* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.2.0/README.md#greatestIndex) - returns the index of the greatest element of an iterable. -* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectCenter) - binary search for a value in a sorted array. -* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectLeft) - binary search for a value in a sorted array. -* [d3.bisect](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisect) - binary search for a value in a sorted array. -* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisectRight) - binary search for a value in a sorted array. -* [d3.bisector](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector) - bisect using an accessor or comparator. -* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_center) - binary search for a value in a sorted array. -* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_left) - bisectLeft, with the given comparator. -* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bisector_right) - bisectRight, with the given comparator. -* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.2.0/README.md#quickselect) - reorder an array of numbers. -* [d3.ascending](https://github.com/d3/d3-array/blob/v3.2.0/README.md#ascending) - compute the natural order of two values. -* [d3.descending](https://github.com/d3/d3-array/blob/v3.2.0/README.md#descending) - compute the natural order of two values. - -### [Transformations](https://github.com/d3/d3-array/blob/v3.2.0/README.md#transformations) +* [d3.least](https://github.com/d3/d3-array/blob/v3.2.1/README.md#least) - returns the least element of an iterable. +* [d3.leastIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#leastIndex) - returns the index of the least element of an iterable. +* [d3.greatest](https://github.com/d3/d3-array/blob/v3.2.1/README.md#greatest) - returns the greatest element of an iterable. +* [d3.greatestIndex](https://github.com/d3/d3-array/blob/v3.2.1/README.md#greatestIndex) - returns the index of the greatest element of an iterable. +* [d3.bisectCenter](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisectCenter) - binary search for a value in a sorted array. +* [d3.bisectLeft](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisectLeft) - binary search for a value in a sorted array. +* [d3.bisect](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisect) - binary search for a value in a sorted array. +* [d3.bisectRight](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisectRight) - binary search for a value in a sorted array. +* [d3.bisector](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisector) - bisect using an accessor or comparator. +* [*bisector*.center](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisector_center) - binary search for a value in a sorted array. +* [*bisector*.left](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisector_left) - bisectLeft, with the given comparator. +* [*bisector*.right](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bisector_right) - bisectRight, with the given comparator. +* [d3.quickselect](https://github.com/d3/d3-array/blob/v3.2.1/README.md#quickselect) - reorder an array of numbers. +* [d3.ascending](https://github.com/d3/d3-array/blob/v3.2.1/README.md#ascending) - compute the natural order of two values. +* [d3.descending](https://github.com/d3/d3-array/blob/v3.2.1/README.md#descending) - compute the natural order of two values. + +### [Transformations](https://github.com/d3/d3-array/blob/v3.2.1/README.md#transformations) Methods for transforming arrays and for generating new arrays. -* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#flatGroup) - group an iterable into a flat array. -* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#flatRollup) - reduce an iterable into a flat array. -* [d3.group](https://github.com/d3/d3-array/blob/v3.2.0/README.md#group) - group an iterable into a nested Map. -* [d3.groups](https://github.com/d3/d3-array/blob/v3.2.0/README.md#groups) - group an iterable into a nested array. -* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.2.0/README.md#groupSort) - sort keys according to grouped values. -* [d3.index](https://github.com/d3/d3-array/blob/v3.2.0/README.md#index) - index an iterable into a nested Map. -* [d3.indexes](https://github.com/d3/d3-array/blob/v3.2.0/README.md#indexes) - index an iterable into a nested array. -* [d3.rollup](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rollup) - reduce an iterable into a nested Map. -* [d3.rollups](https://github.com/d3/d3-array/blob/v3.2.0/README.md#rollups) - reduce an iterable into a nested array. -* [d3.count](https://github.com/d3/d3-array/blob/v3.2.0/README.md#count) - count valid number values in an iterable. -* [d3.cross](https://github.com/d3/d3-array/blob/v3.2.0/README.md#cross) - compute the Cartesian product of two iterables. -* [d3.merge](https://github.com/d3/d3-array/blob/v3.2.0/README.md#merge) - merge multiple iterables into one array. -* [d3.pairs](https://github.com/d3/d3-array/blob/v3.2.0/README.md#pairs) - create an array of adjacent pairs of elements. -* [d3.permute](https://github.com/d3/d3-array/blob/v3.2.0/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. -* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.2.0/README.md#shuffle) - randomize the order of an iterable. -* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.2.0/README.md#shuffler) - randomize the order of an iterable. -* [d3.ticks](https://github.com/d3/d3-array/blob/v3.2.0/README.md#ticks) - generate representative values from a numeric interval. -* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.2.0/README.md#tickIncrement) - generate representative values from a numeric interval. -* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.2.0/README.md#tickStep) - generate representative values from a numeric interval. -* [d3.nice](https://github.com/d3/d3-array/blob/v3.2.0/README.md#nice) - extend an interval to align with ticks. -* [d3.range](https://github.com/d3/d3-array/blob/v3.2.0/README.md#range) - generate a range of numeric values. -* [d3.transpose](https://github.com/d3/d3-array/blob/v3.2.0/README.md#transpose) - transpose an array of arrays. -* [d3.zip](https://github.com/d3/d3-array/blob/v3.2.0/README.md#zip) - transpose a variable number of arrays. - -### [Iterables](https://github.com/d3/d3-array/blob/v3.2.0/README.md#iterables) - -* [d3.every](https://github.com/d3/d3-array/blob/v3.2.0/README.md#every) - test if all values satisfy a condition. -* [d3.some](https://github.com/d3/d3-array/blob/v3.2.0/README.md#some) - test if any value satisfies a condition. -* [d3.filter](https://github.com/d3/d3-array/blob/v3.2.0/README.md#filter) - filter values. -* [d3.map](https://github.com/d3/d3-array/blob/v3.2.0/README.md#map) - map values. -* [d3.reduce](https://github.com/d3/d3-array/blob/v3.2.0/README.md#reduce) - reduce values. -* [d3.reverse](https://github.com/d3/d3-array/blob/v3.2.0/README.md#reverse) - reverse the order of values. -* [d3.sort](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sort) - sort values. - -### [Sets](https://github.com/d3/d3-array/blob/v3.2.0/README.md#sets) - -* [d3.difference](https://github.com/d3/d3-array/blob/v3.2.0/README.md#difference) - compute a set difference. -* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.2.0/README.md#disjoint) - test whether two sets are disjoint. -* [d3.intersection](https://github.com/d3/d3-array/blob/v3.2.0/README.md#intersection) - compute a set intersection. -* [d3.superset](https://github.com/d3/d3-array/blob/v3.2.0/README.md#superset) - test whether a set is a superset of another. -* [d3.subset](https://github.com/d3/d3-array/blob/v3.2.0/README.md#subset) - test whether a set is a subset of another. -* [d3.union](https://github.com/d3/d3-array/blob/v3.2.0/README.md#union) - compute a set union. - -### [Histograms](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bins) +* [d3.flatGroup](https://github.com/d3/d3-array/blob/v3.2.1/README.md#flatGroup) - group an iterable into a flat array. +* [d3.flatRollup](https://github.com/d3/d3-array/blob/v3.2.1/README.md#flatRollup) - reduce an iterable into a flat array. +* [d3.group](https://github.com/d3/d3-array/blob/v3.2.1/README.md#group) - group an iterable into a nested Map. +* [d3.groups](https://github.com/d3/d3-array/blob/v3.2.1/README.md#groups) - group an iterable into a nested array. +* [d3.groupSort](https://github.com/d3/d3-array/blob/v3.2.1/README.md#groupSort) - sort keys according to grouped values. +* [d3.index](https://github.com/d3/d3-array/blob/v3.2.1/README.md#index) - index an iterable into a nested Map. +* [d3.indexes](https://github.com/d3/d3-array/blob/v3.2.1/README.md#indexes) - index an iterable into a nested array. +* [d3.rollup](https://github.com/d3/d3-array/blob/v3.2.1/README.md#rollup) - reduce an iterable into a nested Map. +* [d3.rollups](https://github.com/d3/d3-array/blob/v3.2.1/README.md#rollups) - reduce an iterable into a nested array. +* [d3.count](https://github.com/d3/d3-array/blob/v3.2.1/README.md#count) - count valid number values in an iterable. +* [d3.cross](https://github.com/d3/d3-array/blob/v3.2.1/README.md#cross) - compute the Cartesian product of two iterables. +* [d3.merge](https://github.com/d3/d3-array/blob/v3.2.1/README.md#merge) - merge multiple iterables into one array. +* [d3.pairs](https://github.com/d3/d3-array/blob/v3.2.1/README.md#pairs) - create an array of adjacent pairs of elements. +* [d3.permute](https://github.com/d3/d3-array/blob/v3.2.1/README.md#permute) - reorder an iterable of elements according to an iterable of indexes. +* [d3.shuffle](https://github.com/d3/d3-array/blob/v3.2.1/README.md#shuffle) - randomize the order of an iterable. +* [d3.shuffler](https://github.com/d3/d3-array/blob/v3.2.1/README.md#shuffler) - randomize the order of an iterable. +* [d3.ticks](https://github.com/d3/d3-array/blob/v3.2.1/README.md#ticks) - generate representative values from a numeric interval. +* [d3.tickIncrement](https://github.com/d3/d3-array/blob/v3.2.1/README.md#tickIncrement) - generate representative values from a numeric interval. +* [d3.tickStep](https://github.com/d3/d3-array/blob/v3.2.1/README.md#tickStep) - generate representative values from a numeric interval. +* [d3.nice](https://github.com/d3/d3-array/blob/v3.2.1/README.md#nice) - extend an interval to align with ticks. +* [d3.range](https://github.com/d3/d3-array/blob/v3.2.1/README.md#range) - generate a range of numeric values. +* [d3.transpose](https://github.com/d3/d3-array/blob/v3.2.1/README.md#transpose) - transpose an array of arrays. +* [d3.zip](https://github.com/d3/d3-array/blob/v3.2.1/README.md#zip) - transpose a variable number of arrays. + +### [Iterables](https://github.com/d3/d3-array/blob/v3.2.1/README.md#iterables) + +* [d3.every](https://github.com/d3/d3-array/blob/v3.2.1/README.md#every) - test if all values satisfy a condition. +* [d3.some](https://github.com/d3/d3-array/blob/v3.2.1/README.md#some) - test if any value satisfies a condition. +* [d3.filter](https://github.com/d3/d3-array/blob/v3.2.1/README.md#filter) - filter values. +* [d3.map](https://github.com/d3/d3-array/blob/v3.2.1/README.md#map) - map values. +* [d3.reduce](https://github.com/d3/d3-array/blob/v3.2.1/README.md#reduce) - reduce values. +* [d3.reverse](https://github.com/d3/d3-array/blob/v3.2.1/README.md#reverse) - reverse the order of values. +* [d3.sort](https://github.com/d3/d3-array/blob/v3.2.1/README.md#sort) - sort values. + +### [Sets](https://github.com/d3/d3-array/blob/v3.2.1/README.md#sets) + +* [d3.difference](https://github.com/d3/d3-array/blob/v3.2.1/README.md#difference) - compute a set difference. +* [d3.disjoint](https://github.com/d3/d3-array/blob/v3.2.1/README.md#disjoint) - test whether two sets are disjoint. +* [d3.intersection](https://github.com/d3/d3-array/blob/v3.2.1/README.md#intersection) - compute a set intersection. +* [d3.superset](https://github.com/d3/d3-array/blob/v3.2.1/README.md#superset) - test whether a set is a superset of another. +* [d3.subset](https://github.com/d3/d3-array/blob/v3.2.1/README.md#subset) - test whether a set is a subset of another. +* [d3.union](https://github.com/d3/d3-array/blob/v3.2.1/README.md#union) - compute a set union. + +### [Histograms](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bins) Bin discrete samples into continuous, non-overlapping intervals. -* [d3.bin](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin) - create a new bin generator. -* [*bin*](https://github.com/d3/d3-array/blob/v3.2.0/README.md#_bin) - bins a given array of samples. -* [*bin*.value](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_value) - specify a value accessor for each sample. -* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_domain) - specify the interval of observable values. -* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.2.0/README.md#bin_thresholds) - specify how values are divided into bins. -* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. -* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdScott) - Scott’s normal reference binning rule. -* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.2.0/README.md#thresholdSturges) - Sturges’ binning formula. +* [d3.bin](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bin) - create a new bin generator. +* [*bin*](https://github.com/d3/d3-array/blob/v3.2.1/README.md#_bin) - bins a given array of samples. +* [*bin*.value](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bin_value) - specify a value accessor for each sample. +* [*bin*.domain](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bin_domain) - specify the interval of observable values. +* [*bin*.thresholds](https://github.com/d3/d3-array/blob/v3.2.1/README.md#bin_thresholds) - specify how values are divided into bins. +* [d3.thresholdFreedmanDiaconis](https://github.com/d3/d3-array/blob/v3.2.1/README.md#thresholdFreedmanDiaconis) - the Freedman–Diaconis binning rule. +* [d3.thresholdScott](https://github.com/d3/d3-array/blob/v3.2.1/README.md#thresholdScott) - Scott’s normal reference binning rule. +* [d3.thresholdSturges](https://github.com/d3/d3-array/blob/v3.2.1/README.md#thresholdSturges) - Sturges’ binning formula. -### [Interning](https://github.com/d3/d3-array/blob/v3.2.0/README.md#interning) +### [Interning](https://github.com/d3/d3-array/blob/v3.2.1/README.md#interning) -* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.2.0/README.md#InternMap) - a key-interning Map. -* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.2.0/README.md#InternSet) - a value-interning Set. +* [d3.InternMap](https://github.com/d3/d3-array/blob/v3.2.1/README.md#InternMap) - a key-interning Map. +* [d3.InternSet](https://github.com/d3/d3-array/blob/v3.2.1/README.md#InternSet) - a value-interning Set. ## [Axes (d3-axis)](https://github.com/d3/d3-axis/tree/v3.0.0) @@ -1329,52 +1329,52 @@ Parse and format times, inspired by strptime and strftime. * [d3.timeFormatLocale](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeFormatLocale) - define a custom locale. * [d3.timeFormatDefaultLocale](https://github.com/d3/d3-time-format/blob/v4.1.0/README.md#timeFormatDefaultLocale) - define the default locale. -## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v3.0.0) +## [Time Intervals (d3-time)](https://github.com/d3/d3-time/tree/v3.1.0) A calculator for humanity’s peculiar conventions of time. -* [d3.timeInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeInterval) - implement a new custom time interval. -* [*interval*](https://github.com/d3/d3-time/blob/v3.0.0/README.md#_interval) - alias for *interval*.floor. -* [*interval*.floor](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_floor) - round down to the nearest boundary. -* [*interval*.round](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_round) - round to the nearest boundary. -* [*interval*.ceil](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_ceil) - round up to the nearest boundary. -* [*interval*.offset](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_offset) - offset a date by some number of intervals. -* [*interval*.range](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_range) - generate a range of dates at interval boundaries. -* [*interval*.filter](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_filter) - create a filtered subset of this interval. -* [*interval*.every](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_every) - create a filtered subset of this interval. -* [*interval*.count](https://github.com/d3/d3-time/blob/v3.0.0/README.md#interval_count) - count interval boundaries between two dates. -* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond) - the millisecond interval. -* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMillisecond) - aliases for millisecond.range. -* [d3.timeSecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond) - the second interval. -* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSecond) - aliases for second.range. -* [d3.timeMinute](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute) - the minute interval. -* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMinute) - aliases for minute.range. -* [d3.timeHour](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour) - the hour interval. -* [d3.timeHours](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeHour) - aliases for hour.range. -* [d3.timeDay](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay) - the day interval. -* [d3.timeDays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeDay) - aliases for day.range. -* [d3.timeWeek](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek) - aliases for sunday. -* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWeek) - aliases for week.range. -* [d3.timeSunday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday) - the week interval, starting on Sunday. -* [d3.timeSundays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSunday) - aliases for sunday.range. -* [d3.timeMonday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday) - the week interval, starting on Monday. -* [d3.timeMondays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonday) - aliases for monday.range. -* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday) - the week interval, starting on Tuesday. -* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTuesday) - aliases for tuesday.range. -* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday) - the week interval, starting on Wednesday. -* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeWednesday) - aliases for wednesday.range. -* [d3.timeThursday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday) - the week interval, starting on Thursday. -* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeThursday) - aliases for thursday.range. -* [d3.timeFriday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday) - the week interval, starting on Friday. -* [d3.timeFridays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeFriday) - aliases for friday.range. -* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday) - the week interval, starting on Saturday. -* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeSaturday) - aliases for saturday.range. -* [d3.timeMonth](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth) - the month interval. -* [d3.timeMonths](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeMonth) - aliases for month.range. -* [d3.timeYear](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear) - the year interval. -* [d3.timeYears](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeYear) - aliases for year.range. -* [d3.timeTicks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTicks), [d3.utcTicks](https://github.com/d3/d3-time/blob/v3.0.0/README.md#utcTicks) - -* [d3.timeTickInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#timeTickInterval), [d3.utcTickInterval](https://github.com/d3/d3-time/blob/v3.0.0/README.md#utcTickInterval) - +* [d3.timeInterval](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeInterval) - implement a new custom time interval. +* [*interval*](https://github.com/d3/d3-time/blob/v3.1.0/README.md#_interval) - alias for *interval*.floor. +* [*interval*.floor](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_floor) - round down to the nearest boundary. +* [*interval*.round](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_round) - round to the nearest boundary. +* [*interval*.ceil](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_ceil) - round up to the nearest boundary. +* [*interval*.offset](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_offset) - offset a date by some number of intervals. +* [*interval*.range](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_range) - generate a range of dates at interval boundaries. +* [*interval*.filter](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_filter) - create a filtered subset of this interval. +* [*interval*.every](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_every) - create a filtered subset of this interval. +* [*interval*.count](https://github.com/d3/d3-time/blob/v3.1.0/README.md#interval_count) - count interval boundaries between two dates. +* [d3.timeMillisecond](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMillisecond), [d3.utcMillisecond](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMillisecond) - the millisecond interval. +* [d3.timeMilliseconds](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMillisecond), [d3.utcMilliseconds](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMillisecond) - aliases for millisecond.range. +* [d3.timeSecond](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSecond), [d3.utcSecond](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSecond) - the second interval. +* [d3.timeSeconds](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSecond), [d3.utcSeconds](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSecond) - aliases for second.range. +* [d3.timeMinute](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMinute), [d3.utcMinute](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMinute) - the minute interval. +* [d3.timeMinutes](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMinute), [d3.utcMinutes](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMinute) - aliases for minute.range. +* [d3.timeHour](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeHour), [d3.utcHour](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeHour) - the hour interval. +* [d3.timeHours](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeHour), [d3.utcHours](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeHour) - aliases for hour.range. +* [d3.timeDay](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay), [d3.utcDay](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay), [d3.unixDay](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay) - the day interval. +* [d3.timeDays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay), [d3.utcDays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay), [d3.unixDays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeDay) - aliases for day.range. +* [d3.timeWeek](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWeek), [d3.utcWeek](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWeek) - aliases for sunday. +* [d3.timeWeeks](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWeek), [d3.utcWeeks](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWeek) - aliases for week.range. +* [d3.timeSunday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSunday), [d3.utcSunday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSunday) - the week interval, starting on Sunday. +* [d3.timeSundays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSunday), [d3.utcSundays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSunday) - aliases for sunday.range. +* [d3.timeMonday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonday), [d3.utcMonday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonday) - the week interval, starting on Monday. +* [d3.timeMondays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonday), [d3.utcMondays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonday) - aliases for monday.range. +* [d3.timeTuesday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTuesday), [d3.utcTuesday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTuesday) - the week interval, starting on Tuesday. +* [d3.timeTuesdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTuesday), [d3.utcTuesdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTuesday) - aliases for tuesday.range. +* [d3.timeWednesday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWednesday), [d3.utcWednesday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWednesday) - the week interval, starting on Wednesday. +* [d3.timeWednesdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWednesday), [d3.utcWednesdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeWednesday) - aliases for wednesday.range. +* [d3.timeThursday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeThursday), [d3.utcThursday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeThursday) - the week interval, starting on Thursday. +* [d3.timeThursdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeThursday), [d3.utcThursdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeThursday) - aliases for thursday.range. +* [d3.timeFriday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeFriday), [d3.utcFriday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeFriday) - the week interval, starting on Friday. +* [d3.timeFridays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeFriday), [d3.utcFridays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeFriday) - aliases for friday.range. +* [d3.timeSaturday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSaturday), [d3.utcSaturday](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSaturday) - the week interval, starting on Saturday. +* [d3.timeSaturdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSaturday), [d3.utcSaturdays](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeSaturday) - aliases for saturday.range. +* [d3.timeMonth](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonth), [d3.utcMonth](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonth) - the month interval. +* [d3.timeMonths](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonth), [d3.utcMonths](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeMonth) - aliases for month.range. +* [d3.timeYear](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeYear), [d3.utcYear](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeYear) - the year interval. +* [d3.timeYears](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeYear), [d3.utcYears](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeYear) - aliases for year.range. +* [d3.timeTicks](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTicks), [d3.utcTicks](https://github.com/d3/d3-time/blob/v3.1.0/README.md#utcTicks) - +* [d3.timeTickInterval](https://github.com/d3/d3-time/blob/v3.1.0/README.md#timeTickInterval), [d3.utcTickInterval](https://github.com/d3/d3-time/blob/v3.1.0/README.md#utcTickInterval) - ## [Timers (d3-timer)](https://github.com/d3/d3-timer/tree/v3.0.1) diff --git a/package.json b/package.json index c72bd721129b95..521bf2ab4de45c 100644 --- a/package.json +++ b/package.json @@ -66,11 +66,11 @@ "d3-zoom": "3" }, "devDependencies": { - "@rollup/plugin-json": "4", - "@rollup/plugin-node-resolve": "13", + "@rollup/plugin-json": "5", + "@rollup/plugin-node-resolve": "15", "eslint": "8", "mocha": "10", - "rollup": "2", + "rollup": "3", "rollup-plugin-ascii": "0.0", "rollup-plugin-terser": "7" }, diff --git a/rollup.config.js b/rollup.config.js index d46fb6f0e0e9d8..8a7fdf6f1f5b28 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,7 +3,7 @@ import json from "@rollup/plugin-json"; import nodeResolve from "@rollup/plugin-node-resolve"; import ascii from "rollup-plugin-ascii"; import {terser} from "rollup-plugin-terser"; -import * as meta from "./package.json"; +import meta from "./package.json" assert {type: "json"}; // Extract copyrights from the LICENSE. const copyright = readFileSync("./LICENSE", "utf-8") diff --git a/yarn.lock b/yarn.lock index cf21fbb4f25c4d..2b64984027fc3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,9 +10,9 @@ "@babel/highlight" "^7.18.6" "@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/highlight@^7.18.6": version "7.18.6" @@ -23,14 +23,14 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" + espree "^9.4.0" globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -38,14 +38,19 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@humanwhocodes/config-array@^0.11.6": + version "0.11.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" + integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" @@ -61,10 +66,10 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz#687cc2bbf243f4e9a868ecf2262318e2658873a1" - integrity sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w== +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.1": version "1.1.2" @@ -79,68 +84,82 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@rollup/plugin-json@4": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@rollup/pluginutils" "^3.0.8" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -"@rollup/plugin-node-resolve@13": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" - integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== +"@rollup/plugin-json@5": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.2.tgz#d7dbbac62ff74064876b3e5d0d863cb3ad1e7cdb" + integrity sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + +"@rollup/plugin-node-resolve@15": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz#72be449b8e06f6367168d5b3cd5e2802e0248971" + integrity sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" deepmerge "^4.2.2" - is-builtin-module "^3.1.0" + is-builtin-module "^3.2.0" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.22.1" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/node@*": - version "18.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.1.tgz#e91bd73239b338557a84d1f67f7b9e0f25643870" - integrity sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg== + version "18.11.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.10.tgz#4c64759f3c2343b7e6c4b9caf761c7a3a05cee34" + integrity sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ== -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== acorn-jsx@^5.3.2: version "5.3.2" @@ -152,10 +171,10 @@ acorn@^3.2.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw== -acorn@^8.5.0, acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.5.0, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" @@ -192,9 +211,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: color-convert "^2.0.1" anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -246,7 +265,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.0.0: +builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -351,9 +370,9 @@ cross-spawn@^7.0.2: which "^2.0.1" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.0.tgz#15bf96cd9b7333e02eb8de8053d78962eafcff14" - integrity sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g== + version "3.2.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.1.tgz#39331ea706f5709417d31bbb6ec152e0328b39b3" + integrity sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ== dependencies: internmap "1 - 2" @@ -525,9 +544,9 @@ d3-shape@3: d3-time "1 - 3" "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975" - integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" @@ -645,12 +664,14 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8: - version "8.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" - integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" + version "8.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.29.0.tgz#d74a88a20fb44d59c51851625bc4ee8d0ec43f87" + integrity sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg== + dependencies: + "@eslint/eslintrc" "^1.3.3" + "@humanwhocodes/config-array" "^0.11.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -660,18 +681,21 @@ eslint@8: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.2" + espree "^9.4.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" globals "^13.15.0" + grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" @@ -683,14 +707,13 @@ eslint@8: strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - acorn "^8.7.1" + acorn "^8.8.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" @@ -718,10 +741,10 @@ estree-walker@^0.2.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" integrity sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" @@ -743,6 +766,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fastq@^1.6.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce" + integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg== + dependencies: + reusify "^1.0.4" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -757,7 +787,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -779,9 +809,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" - integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== fs.realpath@^1.0.0: version "1.0.0" @@ -798,17 +828,12 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -847,12 +872,17 @@ glob@^7.1.3: path-is-absolute "^1.0.0" globals@^13.15.0: - version "13.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + version "13.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: type-fest "^0.20.2" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -883,9 +913,9 @@ iconv-lite@0.6: safer-buffer ">= 2.1.2 < 3.0.0" ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.2.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" + integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -925,17 +955,17 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== +is-builtin-module@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: - builtin-modules "^3.0.0" + builtin-modules "^3.3.0" is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" @@ -966,6 +996,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -990,6 +1025,11 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -1064,7 +1104,7 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -1072,11 +1112,10 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: brace-expansion "^1.1.7" mocha@10: - version "10.0.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" - integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== + version "10.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" + integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== dependencies: - "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" @@ -1184,7 +1223,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -1199,6 +1238,11 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -1228,7 +1272,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.19.0: +resolve@^1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -1237,6 +1281,11 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -1278,13 +1327,20 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup@2: - version "2.75.7" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" - integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== +rollup@3: + version "3.5.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.5.1.tgz#5aefd0d29288ce686239fa8c2e3de87c27708ae1" + integrity sha512-hdQWTvPeiAbM6SUkxV70HdGUVxsgsc+CLy5fuh4KdgUBJ0SowXiix8gANgXoG3wEuLwfoJhCT2V+WwxfWq9Ikw== optionalDependencies: fsevents "~2.3.2" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" @@ -1387,9 +1443,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== terser@^5.0.0: - version "5.14.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" - integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== + version "5.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" + integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -1427,11 +1483,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" From 33a4148e63b40dc9ec47bbb72ac64029e8f4f05e Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Sat, 3 Dec 2022 10:18:35 -0800 Subject: [PATCH 145/311] 7.7.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 521bf2ab4de45c..104c4955c72265 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "7.6.1", + "version": "7.7.0", "description": "Data-Driven Documents", "homepage": "https://d3js.org", "repository": { From 7c240e8ae9126f9341bcf2f178b7dcd2a24d0be2 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 12 Dec 2022 13:29:26 -0800 Subject: [PATCH 146/311] jsDelivr, not Skypack --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6af926d83f1cc9..e179992535fe11 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,12 @@ ## Installing -If you use npm, `npm install d3`. You can also download the [latest release on GitHub](https://github.com/d3/d3/releases/latest). For vanilla HTML in modern browsers, import D3 from Skypack: +If you use npm, `npm install d3`. You can also download the [latest release on GitHub](https://github.com/d3/d3/releases/latest). For vanilla HTML in modern browsers, import D3 from jsDelivr: ```html + + diff --git a/docs/components/ColorSwatches.vue b/docs/components/ColorSwatches.vue new file mode 100644 index 00000000000000..307988d50cc89e --- /dev/null +++ b/docs/components/ColorSwatches.vue @@ -0,0 +1,29 @@ + + + diff --git a/docs/components/ExampleArcs.vue b/docs/components/ExampleArcs.vue new file mode 100644 index 00000000000000..b09f6c7afc9e3a --- /dev/null +++ b/docs/components/ExampleArcs.vue @@ -0,0 +1,75 @@ + + + diff --git a/docs/components/ExampleBlankChart.vue b/docs/components/ExampleBlankChart.vue new file mode 100644 index 00000000000000..1fc5163a8b2e42 --- /dev/null +++ b/docs/components/ExampleBlankChart.vue @@ -0,0 +1,49 @@ + + + diff --git a/docs/components/ExampleCurve.vue b/docs/components/ExampleCurve.vue new file mode 100644 index 00000000000000..0792da61c76148 --- /dev/null +++ b/docs/components/ExampleCurve.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/docs/components/ExampleEase.vue b/docs/components/ExampleEase.vue new file mode 100644 index 00000000000000..63d857c54db59e --- /dev/null +++ b/docs/components/ExampleEase.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/docs/components/PlotRender.js b/docs/components/PlotRender.js new file mode 100644 index 00000000000000..07b6acf171fd1f --- /dev/null +++ b/docs/components/PlotRender.js @@ -0,0 +1,220 @@ +import * as Plot from "@observablehq/plot"; +import {h, withDirectives} from "vue"; + +class Document { + constructor() { + this.documentElement = new Element(this, "html"); + } + createElementNS(namespace, tagName) { + return new Element(this, tagName); + } + createElement(tagName) { + return new Element(this, tagName); + } + createTextNode(value) { + return new TextNode(this, value); + } + querySelector() { + return null; + } + querySelectorAll() { + return []; + } +} + +class Style { + static empty = new Style(); + setProperty() {} + removeProperty() {} +} + +class Element { + constructor(ownerDocument, tagName) { + this.ownerDocument = ownerDocument; + this.tagName = tagName; + this.attributes = {}; + this.children = []; + this.parentNode = null; + } + setAttribute(name, value) { + this.attributes[name] = String(value); + } + setAttributeNS(namespace, name, value) { + this.setAttribute(name, value); + } + getAttribute(name) { + return this.attributes[name]; + } + getAttributeNS(name) { + return this.getAttribute(name); + } + hasAttribute(name) { + return name in this.attributes; + } + hasAttributeNS(name) { + return this.hasAttribute(name); + } + removeAttribute(name) { + delete this.attributes[name]; + } + removeAttributeNS(namespace, name) { + this.removeAttribute(name); + } + addEventListener() { + // ignored; interaction needs real DOM + } + removeEventListener() { + // ignored; interaction needs real DOM + } + dispatchEvent() { + // ignored; interaction needs real DOM + } + appendChild(child) { + this.children.push(child); + child.parentNode = this; + return child; + } + insertBefore(child, after) { + if (after == null) { + this.children.push(child); + } else { + const i = this.children.indexOf(after); + if (i < 0) throw new Error("insertBefore reference node not found"); + this.children.splice(i, 0, child); + } + child.parentNode = this; + return child; + } + querySelector() { + return null; + } + querySelectorAll() { + return []; + } + set textContent(value) { + this.children = [this.ownerDocument.createTextNode(value)]; + } + set style(value) { + this.attributes.style = value; + } + get style() { + return Style.empty; + } + toHyperScript() { + return h( + this.tagName, + this.attributes, + this.children.map((c) => c.toHyperScript()) + ); + } +} + +class TextNode { + constructor(ownerDocument, nodeValue) { + this.ownerDocument = ownerDocument; + this.nodeValue = String(nodeValue); + } + toHyperScript() { + return this.nodeValue; + } +} + +// Converts the real DOM to virtual DOM (for client-side hydration). +function toHyperScript(node) { + if (node.nodeType === 3) return node.nodeValue; // TextNode + const props = {}; + for (const name of node.getAttributeNames()) props[name] = node.getAttribute(name); + const children = []; + for (let child = node.firstChild; child; child = child.nextSibling) children.push(toHyperScript(child)); + return h(node.tagName, props, children); +} + +export default { + props: { + options: Object, + mark: Object, + defer: Boolean, + method: {type: String, default: "plot"} + }, + render() { + const {method} = this; + const options = { + ...(method === "plot" && { + marks: this.mark == null ? [] : [this.mark], + width: 688 // better default for VitePress + }), + ...this.options, + className: "plot" + }; + if (this.defer) { + const mounted = (el) => { + disconnect(); // remove old listeners + function observed() { + unmounted(el); // remove old plot (and listeners) + el.append(Plot[method](options)); + } + const rect = el.getBoundingClientRect(); + if (rect.bottom > 0 && rect.top < window.innerHeight) { + observed(); + } else { + this._observer = new IntersectionObserver( + ([entry]) => { + if (entry.isIntersecting) observed(); + }, + {rootMargin: "100px"} + ); + this._observer.observe(el); + if (typeof requestIdleCallback === "function") { + this._idling = requestIdleCallback(observed); + } + } + }; + const unmounted = (el) => { + while (el.lastChild) el.lastChild.remove(); + disconnect(); + }; + const disconnect = () => { + if (this._observer !== undefined) { + this._observer.disconnect(); + this._observer = undefined; + } + if (this._idling !== undefined) { + cancelIdleCallback(this._idling); + this._idling = undefined; + } + }; + const {height = 400} = this.options; + return withDirectives( + h( + "span", + method === "plot" + ? [ + h("div", { + style: { + maxWidth: "100%", + width: `688px`, + aspectRatio: `688 / ${height}` + } + }) + ] + : [] + ), + [ + [ + { + mounted, + updated: mounted, + unmounted + } + ] + ] + ); + } + if (typeof document !== "undefined") { + const plot = Plot[method](options); + const replace = (el) => el.firstChild.replaceWith(plot); + return withDirectives(h("span", [toHyperScript(plot)]), [[{mounted: replace, updated: replace}]]); + } + return h("span", [Plot[method]({...options, document: new Document()}).toHyperScript()]); + } +}; diff --git a/docs/components/quadtreeFindVisited.js b/docs/components/quadtreeFindVisited.js new file mode 100644 index 00000000000000..e6711d93b56493 --- /dev/null +++ b/docs/components/quadtreeFindVisited.js @@ -0,0 +1,84 @@ +// An instrumented version of quadtree.find that shows the visited nodes. +export default function quadtree_findVisited(x, y, radius) { + var visited = [], + x0 = this._x0, + y0 = this._y0, + x1, + y1, + x2, + y2, + x3 = this._x1, + y3 = this._y1, + quads = [], + node = this._root, + q, + i; + + if (node) quads.push(new Quad(node, x0, y0, x3, y3, 1, 1, -1, -1)); + if (radius == null) radius = Infinity; + else { + x0 = x - radius, y0 = y - radius; + x3 = x + radius, y3 = y + radius; + radius *= radius; + } + + while ((q = quads.pop())) { + + // Stop searching if this quadrant can’t contain a closer node. + if (!(node = q.node) + || (x1 = q.x0) > x3 + || (y1 = q.y0) > y3 + || (x2 = q.x1) < x0 + || (y2 = q.y1) < y0) continue; + + visited.push(q); + + // Bisect the current quadrant. + if (node.length) { + var xm = (x1 + x2) / 2, + ym = (y1 + y2) / 2; + + // 0 1 + // 2 3 + quads.push( + new Quad(node[3], xm, ym, x2, y2, 1, 1, q.dx1 - 1, q.dy1 - 1), + new Quad(node[2], x1, ym, xm, y2, q.dx0 + 1, 1, -1, q.dy1 - 1), + new Quad(node[1], xm, y1, x2, ym, 1, q.dy0 + 1, q.dx1 - 1, -1), + new Quad(node[0], x1, y1, xm, ym, q.dx0 + 1, q.dy0 + 1, -1, -1) + ); + + // Visit the closest quadrant first. + if ((i = (y >= ym) << 1 | (x >= xm))) { + q = quads[quads.length - 1]; + quads[quads.length - 1] = quads[quads.length - 1 - i]; + quads[quads.length - 1 - i] = q; + } + } + + // Visit this point. (Visiting coincident points isn’t necessary!) + else { + var dx = x - +this._x.call(null, node.data), + dy = y - +this._y.call(null, node.data), + d2 = dx * dx + dy * dy; + if (d2 < radius) { + var d = Math.sqrt(radius = d2); + x0 = x - d, y0 = y - d; + x3 = x + d, y3 = y + d; + } + } + } + + return visited; +} + +function Quad(node, x0, y0, x1, y1, dx0, dy0, dx1, dy1) { + this.node = node; + this.x0 = x0; + this.y0 = y0; + this.x1 = x1; + this.y1 = y1; + this.dx0 = dx0; + this.dy0 = dy0; + this.dx1 = dx1; + this.dy1 = dy1; +} diff --git a/docs/components/quadtreeNodes.js b/docs/components/quadtreeNodes.js new file mode 100644 index 00000000000000..f69d810cff01f7 --- /dev/null +++ b/docs/components/quadtreeNodes.js @@ -0,0 +1,5 @@ +export default function quadtree_nodes() { + const nodes = []; + this.visit((node, x1, y1, x2, y2) => void nodes.push({x1, y1, x2, y2})); + return nodes; +} diff --git a/docs/d3-array.md b/docs/d3-array.md new file mode 100644 index 00000000000000..47c9f35202e94e --- /dev/null +++ b/docs/d3-array.md @@ -0,0 +1,17 @@ +# d3-array + +Array manipulation, ordering, searching, summarizing, *etc.* + +See one of: + +* [Adding numbers](./d3-array/add.md) - Add floating point values with full precision. +* [Binning data](./d3-array/bin.md) - Bin discrete samples into continuous, non-overlapping intervals. +* [Bisecting data](./d3-array/bisect.md) - Quickly find a value in a sorted array. +* [Blurring data](./d3-array/blur.md) - Blur quantitative values in one or two dimensions. +* [Grouping data](./d3-array/group.md) - Group discrete values. +* [Interning values](./d3-array/intern.md) - Create maps and sets with non-primitive values such as dates. +* [Set operations](./d3-array/sets.md) - Logical operations on sets. +* [Sorting data](./d3-array/sort.md) - Sort and reorder arrays of values. +* [Summarizing data](./d3-array/summarize.md) - Compute summary statistics. +* [Ticks](./d3-array/ticks.md) - Generate representative values from a continuous interval. +* [Transforming data](./d3-array/transform.md) - Derive new arrays. diff --git a/docs/d3-array/add.md b/docs/d3-array/add.md new file mode 100644 index 00000000000000..0d509d9f10b0f2 --- /dev/null +++ b/docs/d3-array/add.md @@ -0,0 +1,55 @@ +# Adding numbers + +Add floating point numbers with full precision. + +## new Adder() {#Adder} + +```js +const adder = new d3.Adder(); +``` + +[Examples](https://observablehq.com/@d3/d3-fsum) · [Source](https://github.com/d3/d3-array/blob/main/src/fsum.js) · Creates a new adder with an initial value of 0. + +## *adder*.add(*number*) {#adder_add} + +```js +adder.add(42) +``` + +Adds the specified *number* to the adder’s current value and returns the adder. + +## *adder*.valueOf() {#adder_valueOf} + +```js +adder.valueOf() // 42 +``` + +Returns the IEEE 754 double-precision representation of the adder’s current value. Most useful as the short-hand notation `+adder`, or when coercing as `Number(adder)`. + +## fsum(*values*, *accessor*) {#fsum} + +```js +d3.fsum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]) // 1 +``` + +[Examples](https://observablehq.com/@d3/d3-fsum) · [Source](https://github.com/d3/d3-array/blob/main/src/fsum.js) · Returns a full-precision summation of the given *values*. Although slower, d3.fsum can replace [d3.sum](./summarize.md#sum) wherever greater precision is needed. + +```js +d3.fsum(penguins, (d) => d.body_mass_g) // 1437000 +``` + +If an *accessor* is specified, invokes the given function for each element in the input *values*, being passed the element `d`, the index `i`, and the array `data` as three arguments; the returned values will then be added. + +## fcumsum(*values*, *accessor*) {#fcumsum} + +```js +d3.fcumsum([1, 1e-14, -1]) // [1, 1.00000000000001, 1e-14] +``` + +[Examples](https://observablehq.com/@d3/d3-fcumsum) · [Source](https://github.com/d3/d3-array/blob/main/src/fsum.js) · Returns a full-precision cumulative sum of the given *values* as a Float64Array. Although slower, d3.fcumsum can replace [d3.cumsum](./summarize.md#cumsum) when greater precision is needed. + +```js +d3.fcumsum(penguins, (d) => d.body_mass_g) // [3750, 7550, 10800, 10800, 14250, …] +``` + +If an *accessor* is specified, invokes the given function for each element in the input *values*, being passed the element `d`, the index `i`, and the array `data` as three arguments; the returned values will then be added. diff --git a/docs/d3-array/bin.md b/docs/d3-array/bin.md new file mode 100644 index 00000000000000..df0c5c20100ce6 --- /dev/null +++ b/docs/d3-array/bin.md @@ -0,0 +1,124 @@ +# Binning data + +Bin quantitative values into consecutive, non-overlapping intervals, as in histograms. (See also Observable Plot’s [bin transform](https://observablehq.com/plot/transforms/bin).) + +## bin() {#bin} + +```js +const bin = d3.bin().value((d) => d.culmen_length_mm); +``` + +[Examples](https://observablehq.com/@d3/d3-bin) · [Source](https://github.com/d3/d3-array/blob/main/src/bin.js) · Constructs a new bin generator with the default settings. The returned bin generator supports method chaining, so this constructor is typically chained with [*bin*.value](#bin_value) to assign a value accessor. The returned generator is also a function; [pass it data](#_bin) to bin. + +## *bin*(*data*) {#_bin} + +```js +const bins = d3.bin().value((d) => d.culmen_length_mm)(penguins); +``` + +Bins the given iterable of *data* samples. Returns an array of bins, where each bin is an array containing the associated elements from the input *data*. Thus, the `length` of the bin is the number of elements in that bin. Each bin has two additional attributes: + +* `x0` - the lower bound of the bin (inclusive). +* `x1` - the upper bound of the bin (exclusive, except for the last bin). + +Any null or non-comparable values in the given *data*, or those outside the [domain](#bin_domain), are ignored. + +## *bin*.value(*value*) {#bin_value} + +```js +const bin = d3.bin().value((d) => d.culmen_length_mm); +``` + +If *value* is specified, sets the value accessor to the specified function or constant and returns this bin generator. + +```js +bin.value() // (d) => d.culmen_length_mm +``` + +If *value* is not specified, returns the current value accessor, which defaults to the identity function. + +When bins are [generated](#_bin), the value accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. The default value accessor assumes that the input data are orderable (comparable), such as numbers or dates. If your data are not, then you should specify an accessor that returns the corresponding orderable value for a given datum. + +This is similar to mapping your data to values before invoking the bin generator, but has the benefit that the input data remains associated with the returned bins, thereby making it easier to access other fields of the data. + +## *bin*.domain(*domain*) {#bin_domain} + +```js +const bin = d3.bin().domain([0, 1]); +``` + +If *domain* is specified, sets the domain accessor to the specified function or array and returns this bin generator. + +```js +bin.domain() // [0, 1] +``` + +If *domain* is not specified, returns the current domain accessor, which defaults to [extent](./summarize.md#extent). The bin domain is defined as an array [*min*, *max*], where *min* is the minimum observable value and *max* is the maximum observable value; both values are inclusive. Any value outside of this domain will be ignored when the bins are [generated](#_bin). + +For example, to use a bin generator with a [linear scale](../d3-scale.md#linear-scales) `x`, you might say: + +```js +const bin = d3.bin().domain(x.domain()).thresholds(x.ticks(20)); +``` + +You can then compute the bins from an array of numbers like so: + +```js +const bins = bin(numbers); +``` + +If the default [extent](./summarize.md#extent) domain is used and the [thresholds](#bin_thresholds) are specified as a count (rather than explicit values), then the computed domain will be [niced](./ticks.md#nice) such that all bins are uniform width. + +Note that the domain accessor is invoked on the materialized array of [values](#bin_value), not on the input data array. + +## *bin*.thresholds(*count*) {#bin_thresholds} + +```js +const bin = d3.bin().thresholds([0, 0.5, 1]); +``` + +If *thresholds* is specified, sets the [threshold generator](#bin-thresholds) to the specified function or array and returns this bin generator. + +```js +bin.thresholds() // () => [0, 0.5, 1] +``` + +If *thresholds* is not specified, returns the current threshold generator, which by default implements [Sturges’ formula](#thresholdSturges). (Thus by default, the values to be binned must be numbers!) Thresholds are defined as an array of values [*x0*, *x1*, …]. Any value less than *x0* will be placed in the first bin; any value greater than or equal to *x0* but less than *x1* will be placed in the second bin; and so on. Thus, the [generated bins](#_bin) will have *thresholds*.length + 1 bins. + +Any threshold values outside the [domain](#bin_domain) are ignored. The first *bin*.x0 is always equal to the minimum domain value, and the last *bin*.x1 is always equal to the maximum domain value. + +```js +const bin = d3.bin().thresholds(20); +``` + +If a *count* is specified instead of an array of *thresholds*, then the [domain](#bin_domain) will be uniformly divided into approximately *count* bins; see [ticks](#ticks). + +```js +const bin = d3.bin().thresholds((values) => [d3.median(values)]); +``` + +You may also implement your own threshold generator taking three arguments: the array of input [*values*](#bin_value) derived from the data, and the [domain](#bin_domain) represented as *min* and *max*. The generator may then return either the array of numeric thresholds or the *count* of bins; in the latter case the domain is divided uniformly into approximately *count* bins; see [ticks](./ticks.md#ticks). For instance, you might want to use time ticks when binning time-series data; see [example](https://observablehq.com/@d3/d3-bin-time-thresholds). + +## thresholdFreedmanDiaconis(*values*, *min*, *max*) {#thresholdFreedmanDiaconis} + +```js +const bin = d3.bin().thresholds(d3.thresholdFreedmanDiaconis); +``` + +[Source](https://github.com/d3/d3-array/blob/main/src/threshold/freedmanDiaconis.js) · Returns the number of bins according to the [Freedman–Diaconis rule](https://en.wikipedia.org/wiki/Histogram#Mathematical_definition); the input *values* must be numbers. + +## thresholdScott(*values*, *min*, *max*) {#thresholdScott} + +```js +const bin = d3.bin().thresholds(d3.thresholdScott); +``` + +[Source](https://github.com/d3/d3-array/blob/main/src/threshold/scott.js) · Returns the number of bins according to [Scott’s normal reference rule](https://en.wikipedia.org/wiki/Histogram#Mathematical_definition); the input *values* must be numbers. + +## thresholdSturges(*values*, *min*, *max*) {#thresholdSturges} + +```js +const bin = d3.bin().thresholds(d3.thresholdSturges); +``` + +[Source](https://github.com/d3/d3-array/blob/main/src/threshold/sturges.js) · Returns the number of bins according to [Sturges’ formula](https://en.wikipedia.org/wiki/Histogram#Mathematical_definition); the input *values* must be numbers. diff --git a/docs/d3-array/bisect.md b/docs/d3-array/bisect.md new file mode 100644 index 00000000000000..b2ce8bb1664571 --- /dev/null +++ b/docs/d3-array/bisect.md @@ -0,0 +1,75 @@ +# Bisecting data + +Bisection, or binary search, quickly finds a given value in a sorted array. It is often used to find the position at which to insert a new value into an array while maintaining sorted order. + +## bisector(*accessor*) {#bisector} + +[Examples](https://observablehq.com/@d3/d3-bisect) · [Source](https://github.com/d3/d3-array/blob/main/src/bisector.js) · Returns a new bisector using the specified *accessor* function. + +```js +const bisector = d3.bisector((d) => d.Date); +``` + +If the given *accessor* takes two arguments, it is interpreted as a comparator function for comparing an element *d* in the data with a search value *x*. Use a comparator rather than an accessor if you want values to be sorted in an order different than natural order, such as in descending rather than ascending order. The above is equivalent to: + +```js +const bisector = d3.bisector((d, x) => d.Date - x); +``` + +The bisector can be used to bisect sorted arrays of objects (in contrast to [bisect](#bisect), which is for bisecting primitives). + +## *bisector*.right(*array*, *x*, *lo*, *hi*) {#bisector_right} + +```js +d3.bisector((d) => d.Date).right(aapl, new Date("2014-01-02")) // 163 +``` + +Like [bisectRight](#bisectRight), but using this bisector’s accessor. The code above finds the index of the row immediately following Jan. 2, 2014 in the [*aapl* sample dataset](https://observablehq.com/@observablehq/sample-datasets#aapl). + +## *bisector*.left(*array*, *x*, *lo*, *hi*) {#bisector_left} + +```js +d3.bisector((d) => d.Date).left(aapl, new Date("2014-01-02")) // 162 +``` + +Like [bisectLeft](#bisectLeft), but using this bisector’s accessor. The code above finds the index of the row for Jan. 2, 2014 in the [*aapl* sample dataset](https://observablehq.com/@observablehq/sample-datasets#aapl). + +## *bisector*.center(*array*, *x*, *lo*, *hi*) {#bisector_center} + +```js +d3.bisector((d) => d.Date).center(aapl, new Date("2013-12-31")) // 161 +``` + +Returns the index of the closest value to *x* in the given sorted *array*. This expects that the bisector’s accessor returns a quantitative value, or that the bisector’s comparator returns a signed distance; otherwise, this method is equivalent to [*bisector*.left](#bisector_left). The arguments *lo* (inclusive) and *hi* (exclusive) may be used to specify a subset of the array which should be considered; by default the entire array is used. + +## bisect(*array*, *x*, *lo*, *hi*) {#bisect} + +```js +d3.bisect(aapl.map((d) => d.Date), new Date("2014-01-02")) // 163 +``` + +Alias for [bisectRight](#bisectRight). + +## bisectRight(*array*, *x*, *lo*, *hi*) {#bisectRight} + +```js +d3.bisectRight(aapl.map((d) => d.Date), new Date("2014-01-02")) // 163 +``` + +Like [bisectLeft](#bisectLeft), but returns an insertion point which comes after (to the right of) any existing entries equivalent to *x* in *array*. The returned insertion point *i* partitions the *array* into two halves so that all *v* <= *x* for *v* in *array*.slice(*lo*, *i*) for the left side and all *v* > *x* for *v* in *array*.slice(*i*, *hi*) for the right side. See also [*bisector*.right](#bisector_right). + +## bisectLeft(*array*, *x*, *lo*, *hi*) {#bisectLeft} + +```js +d3.bisectLeft(aapl.map((d) => d.Date), new Date("2014-01-02")) // 162 +``` + +Returns the insertion point for *x* in *array* to maintain sorted order. The arguments *lo* and *hi* may be used to specify a subset of the array which should be considered; by default the entire array is used. If *x* is already present in *array*, the insertion point will be before (to the left of) any existing entries. The return value is suitable for use as the first argument to [*array*.splice](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) assuming that *array* is already sorted. The returned insertion point *i* partitions the *array* into two halves so that all *v* < *x* for *v* in *array*.slice(*lo*, *i*) for the left side and all *v* >= *x* for *v* in *array*.slice(*i*, *hi*) for the right side. See also [*bisector*.left](#bisector_left). + +## bisectCenter(*array*, *x*, *lo*, *hi*) {#bisectCenter} + +```js +d3.bisectCenter(aapl.map((d) => d.Date), new Date("2013-12-31")) // 161 +``` + +Returns the index of the value closest to *x* in the given *array* of numbers. The arguments *lo* (inclusive) and *hi* (exclusive) may be used to specify a subset of the array which should be considered; by default the entire array is used. See also [*bisector*.center](#bisector_center). diff --git a/docs/d3-array/blur.md b/docs/d3-array/blur.md new file mode 100644 index 00000000000000..27e95ea7f68764 --- /dev/null +++ b/docs/d3-array/blur.md @@ -0,0 +1,39 @@ +# Blurring data + +A [box blur](https://en.wikipedia.org/wiki/Box_blur) implementation for 1D, 2D, and RGBA images; supports fractional radius. + +## blur(*data*, *radius*) {#blur} + +```js +const numbers = d3.cumsum({length: 1000}, () => Math.random() - 0.5); +d3.blur(numbers, 5); // a smoothed random walk +``` + +[Examples](https://observablehq.com/@d3/d3-blur) · [Source](https://github.com/d3/d3-array/blob/main/src/blur.js) · Blurs an array of *data* in-place by applying three iterations of a moving average transform (box filter) for a fast approximation of a Gaussian kernel of the given *radius*, a non-negative number. Returns the given *data*. + +## blur2({data, width, height}, *rx*, *ry*) {#blur2} + +```js +const matrix = { + width: 4, + height: 3, + data: [ + 1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1 + ] +}; + +d3.blur2(matrix, 1); +``` + +[Examples](https://observablehq.com/@d3/d3-blur) · [Source](https://github.com/d3/d3-array/blob/main/src/blur.js) · Blurs a matrix of the given *width* and *height* in-place by applying a horizontal blur of radius *rx* and a vertical blur of radius *ry* (which defaults to *rx*). The matrix values *data* are stored in a flat (one-dimensional) array. If *height* is not specified, it is inferred from the given *width* and *data*.length. Returns the blurred matrix {data, width, height}. + +## blurImage(*imageData*, *rx*, *ry*) {#blurImage} + +```js +const imageData = context.getImageData(0, 0, width, height); +d3.blurImage(imageData, 5); +``` + +[Examples](https://observablehq.com/@d3/d3-blurimage) · [Source](https://github.com/d3/d3-array/blob/main/src/blur.js) · Blurs the given [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData) in-place, blurring each of the RGBA layers independently by applying an horizontal blur of radius *rx* and a vertical blur of radius *ry* (which defaults to *rx*). Returns the blurred ImageData. diff --git a/docs/d3-array/group.md b/docs/d3-array/group.md new file mode 100644 index 00000000000000..ede45385c9a423 --- /dev/null +++ b/docs/d3-array/group.md @@ -0,0 +1,119 @@ +# Grouping data + +Group discrete values. + +## group(*iterable*, ...*keys*) {#group} + +[Examples](https://observablehq.com/@d3/d3-group-d3-rollup) · [Source](https://github.com/d3/d3-array/blob/main/src/group.js) · Groups the specified *iterable* of values into an [InternMap](./intern.md#InternMap) from *key* to array of value. For example, to group the [*penguins* sample dataset](https://observablehq.com/@observablehq/sample-datasets#penguins) by *species* field: + +```js +const species = d3.group(penguins, (d) => d.species); +``` + +To get the elements whose *species* field is *Adelie*: + +```js +species.get("Adelie") // Array(152) +``` + +If more than one *key* is specified, a nested InternMap is returned. For example: + +```js +const speciesSex = d3.group(penguins, (d) => d.species, (d) => d.sex) +``` + +To get the penguins whose species is *Adelie* and whose sex is *FEMALE*: + +```js +speciesSex.get("Adelie").get("FEMALE") // Array(73) +``` + +Elements are returned in the order of the first instance of each *key*. + +## groups(*iterable*, ...*keys*) {#groups} + +```js +const species = d3.groups(penguins, (d) => d.species); // [["Adelie", Array(152)], …] +``` + +Equivalent to [group](#group), but returns an array of [*key*, *value*] entries instead of a map. If more than one *key* is specified, each *value* will be a nested array of [*key*, *value*] entries. Elements are returned in the order of the first instance of each *key*. + +## rollup(*iterable*, *reduce*, ...*keys*) {#rollup} + +[Examples](https://observablehq.com/@d3/d3-group-d3-rollup) · [Source](https://github.com/d3/d3-array/blob/main/src/group.js) · Groups and reduces the specified *iterable* of values into an [InternMap](./intern.md#InternMap) from *key* to reduced value. For example, to group and count the [*penguins* sample dataset](https://observablehq.com/@observablehq/sample-datasets#penguins) by *species* field: + +```js +const speciesCount = d3.rollup(penguins, (D) => D.length, (d) => d.species); +``` + +To get the count of penguins whose species is *Adelie*: + +```js +speciesCount.get("Adelie") // 152 +``` + +If more than one *key* is specified, a nested InternMap is returned. For example: + +```js +const speciesSexCount = d3.rollup(penguins, (D) => D.length, (d) => d.species, (d) => d.sex); +``` + +To get the count of penguins whose species is *Adelie* and whose sex is *FEMALE*: + +```js +speciesSexCount.get("Adelie").get("FEMALE") // 73 +``` + +Elements are returned in the order of the first instance of each *key*. + +## rollups(*iterable*, *reduce*, ...*keys*) {#rollups} + +```js +const speciesCounts = d3.rollups(penguins, (D) => D.length, (d) => d.species); // [["Adelie", 152], …] +``` + +Equivalent to [rollup](#rollup), but returns an array of [*key*, *value*] entries instead of a map. If more than one *key* is specified, each *value* will be a nested array of [*key*, *value*] entries. Elements are returned in the order of the first instance of each *key*. + +## index(*iterable*, ...*keys*) {#index} + +Uses [rollup](#rollup) with a reducer that extracts the first element from each group, and throws an error if the group has more than one element. For example, to index the [*aapl* same dataset](https://observablehq.com/@observablehq/sample-datasets#aapl) by date: + +```js +const aaplDate = d3.index(aapl, (d) => d.Date); +``` + +You can then quickly retrieve a value by date: + +```js +aaplDate.get(new Date("2013-12-31")).Close // 80.145714 +``` + +Elements are returned in input order. + +## indexes(*iterable*, ...*keys*) {#indexes} + +Like [index](#index), but returns an array of [*key*, *value*] entries instead of a map. This probably isn’t useful for anything, but is included for symmetry with [groups](#groups) and [rollups](#rollups). + +## flatGroup(*iterable*, ...*keys*) {#flatGroup} + +[Examples](https://observablehq.com/@d3/d3-flatgroup) · [Source](https://github.com/d3/d3-array/blob/main/src/group.js) · Equivalent to [group](#group), but returns a flat array of [*key0*, *key1*, …, *values*] instead of nested maps; useful for iterating over all groups. + +## flatRollup(*iterable*, *reduce*, ...*keys*) {#flatRollup} + +[Examples](https://observablehq.com/@d3/d3-flatgroup) · [Source](https://github.com/d3/d3-array/blob/main/src/group.js) · Equivalent to [rollup](#rollup), but returns a flat array of [*key0*, *key1*, …, *value*] instead of nested maps; useful for iterating over all groups. + +## groupSort(*iterable*, *comparator*, *key*) {#groupSort} + +[Examples](https://observablehq.com/@d3/d3-groupsort) · [Source](https://github.com/d3/d3-array/blob/main/src/groupSort.js) · Groups the specified *iterable* of elements according to the specified *key* function, sorts the groups according to the specified *comparator*, and then returns an array of keys in sorted order. For example, to order the species of the [*penguins* sample dataset](https://observablehq.com/@observablehq/sample-datasets#penguins) by ascending median body mass: + +```js +d3.groupSort(penguins, (D) => d3.median(D, (d) => d.body_mass_g), (d) => d.species) // ["Adelie", "Chinstrap", "Gentoo"] +``` + +For descending order, negate the group value: + +```js +d3.groupSort(penguins, (D) => -d3.median(D, (d) => d.body_mass_g), (d) => d.species) // ["Gentoo", "Adelie", "Chinstrap"] +``` + +If a *comparator* is passed instead of an *accessor* (*i.e.*, if the second argument is a function that takes exactly two arguments), it will be asked to compare two groups *a* and *b* and should return a negative value if *a* should be before *b*, a positive value if *a* should be after *b*, or zero for a partial ordering. diff --git a/docs/d3-array/intern.md b/docs/d3-array/intern.md new file mode 100644 index 00000000000000..102e2773eac3f9 --- /dev/null +++ b/docs/d3-array/intern.md @@ -0,0 +1,35 @@ +# Interning values + +The [InternMap](#InternMap) and [InternSet](#InternSet) classes extend the native JavaScript Map and Set classes, respectively, allowing Dates and other non-primitive keys by bypassing the [SameValueZero algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness) when determining key equality. [d3.group](./group.md#group), [d3.rollup](./group.md#rollup) and [d3.index](./group.md#index) use an InternMap rather than a native Map. + +## new InternMap(*iterable*, *key*) {#InternMap} + +```js +const valueByDate = new d3.InternMap([ + [new Date("2021-01-01"), 42], + [new Date("2022-01-01"), 12], + [new Date("2023-01-01"), 45] +]); +``` + +[Examples](https://observablehq.com/@mbostock/internmap) · [Source](https://github.com/mbostock/internmap/blob/main/src/index.js) · Constructs a new Map given the specified *iterable* of [*key*, *value*] entries. The keys are interned using the specified *key* function which defaults to [*object*.valueOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) for non-primitive values. For example, to retrieve a value keyed by a given date: + +```js +valueByDate.get(new Date("2022-01-01")) // 12 +``` + +## new InternSet(*iterable*, *key*) {#InternSet} + +```js +const dates = new d3.InternSet([ + new Date("2021-01-01"), + new Date("2022-01-01"), + new Date("2023-01-01") +]); +``` + +[Examples](https://observablehq.com/@mbostock/internmap) · [Source](https://github.com/mbostock/internmap/blob/main/src/index.js) · Constructs a new Set given the specified *iterable* of values. The values are interned using the specified *key* function which defaults to [*object*.valueOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) for non-primitive values. For example, to query for a given date: + +```js +dates.has(new Date("2022-01-01")) // true +``` diff --git a/docs/d3-array/sets.md b/docs/d3-array/sets.md new file mode 100644 index 00000000000000..60edbb7f09e70f --- /dev/null +++ b/docs/d3-array/sets.md @@ -0,0 +1,51 @@ +# Set operations + +Logical set operations for any iterable. + +## difference(*iterable*, ...*others*) {#difference} + +[Source](https://github.com/d3/d3-array/blob/main/src/difference.js) · Returns a new [InternSet](./intern.md#InternSet) containing every value in *iterable* that is not in any of the *others* iterables. + +```js +d3.difference([0, 1, 2, 0], [1]) // Set {0, 2} +``` + +## union(...*iterables*) {#union} + +[Source](https://github.com/d3/d3-array/blob/main/src/union.js) · Returns a new [InternSet](./intern.md#InternSet) containing every (distinct) value that appears in any of the given *iterables*. The order of values in the returned set is based on their first occurrence in the given *iterables*. + +```js +d3.union([0, 2, 1, 0], [1, 3]) // Set {0, 2, 1, 3} +``` + +## intersection(...*iterables*) {#intersection} + +[Source](https://github.com/d3/d3-array/blob/main/src/intersection.js) · Returns a new [InternSet](./intern.md#InternSet) containing every (distinct) value that appears in all of the given *iterables*. The order of values in the returned set is based on their first occurrence in the given *iterables*. + +```js +d3.intersection([0, 2, 1, 0], [1, 3]) // Set {1} +``` + +## superset(*a*, *b*) {#superset} + +[Source](https://github.com/d3/d3-array/blob/main/src/superset.js) · Returns true if *a* is a superset of *b*: if every value in the given iterable *b* is also in the given iterable *a*. + +```js +d3.superset([0, 2, 1, 3, 0], [1, 3]) // true +``` + +## subset(*a*, *b*) {#subset} + +[Source](https://github.com/d3/d3-array/blob/main/src/subset.js) · Returns true if *a* is a subset of *b*: if every value in the given iterable *a* is also in the given iterable *b*. + +```js +d3.subset([1, 3], [0, 2, 1, 3, 0]) // true +``` + +## disjoint(*a*, *b*) {#disjoint} + +[Source](https://github.com/d3/d3-array/blob/main/src/disjoint.js) · Returns true if *a* and *b* are disjoint: if *a* and *b* contain no shared value. + +```js +d3.disjoint([1, 3], [2, 4]) // true +``` diff --git a/docs/d3-array/sort.md b/docs/d3-array/sort.md new file mode 100644 index 00000000000000..4169cf2f508edd --- /dev/null +++ b/docs/d3-array/sort.md @@ -0,0 +1,132 @@ +# Sorting data + +Sort values; see also [bisect](./bisect.md). + +## ascending(*a*, *b*) {#ascending} + +[Examples](https://observablehq.com/@d3/d3-ascending) · [Source](https://github.com/d3/d3-array/blob/main/src/ascending.js) · Returns -1 if *a* is less than *b*, 1 if *a* is greater than *b*, 0 if *a* and *b* are equivalent, and otherwise NaN. + +```js +[39, 21, 1, 104, 22].sort(d3.ascending) // [1, 21, 22, 39, 104] +``` + +This is the comparator function for natural order, and can be used with [*array*.sort](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) to arrange elements in ascending order. + +## descending(*a*, *b*) {#descending} + +[Examples](https://observablehq.com/@d3/d3-ascending) · [Source](https://github.com/d3/d3-array/blob/main/src/descending.js) · Returns -1 if *a* is greater than *b*, 1 if *a* is less than *b*, 0 if *a* and *b* are equivalent, and otherwise NaN. + +```js +[39, 21, 1, 104, 22].sort(d3.descending) // [104, 39, 22, 21, 1] +``` + +This is the comparator function for natural order, and can be used with [*array*.sort](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) to arrange elements in descending order. + +## permute(*source*, *keys*) {#permute} + +[Examples](https://observablehq.com/@d3/d3-permute) · [Source](https://github.com/d3/d3-array/blob/main/src/permute.js) · Returns a permutation of the specified *source* array or object using the specified iterable of *keys*. The returned array contains the corresponding property of the source object for each key in *keys*, in order. + +```js +d3.permute(["a", "b", "c"], [1, 2, 0]) // returns ["b", "c", "a"] +``` + +The given *source* need not be an array; for example, given an object + +```js +const object = {yield: 27, variety: "Manchuria", year: 1931, site: "University Farm"}; +``` + +three fields could be extract like so + +```js +d3.permute(object, ["site", "variety", "yield"]) // ["University Farm", "Manchuria", 27] +``` + +## quickselect(*array*, *k*, *lo*, *hi*, *compare*) {#quickselect} + +[Examples](https://observablehq.com/@d3/d3-quickselect) · [Source](https://github.com/d3/d3-array/blob/main/src/quickselect.js) · Rearranges the elements of *array* between *lo* and *hi* (inclusive) in-place such that *array*[*k*] is the (*k* - *lo* + 1)-th smallest value and *array*.slice(*lo*, *k*) are the *k* smallest elements, according to the given *compare* function, and returns the given *array*. If *lo* is not specified, it defaults to zero; if *hi* is not specified, it defaults to *array*.length - 1; if *compare* is not specified, it defaults to [ascending](#ascending). + +For example, given an array of numbers: + +```js +const numbers = [65, 28, 59, 33, 21, 56, 22, 95, 50, 12, 90, 53, 28, 77, 39]; +``` + +To select the smallest 8 elements: + +```js +d3.quickselect(numbers, 8) +``` + +The rearranged *numbers* is + +```js +[39, 28, 28, 33, 21, 12, 22, 50, 53, 56, 59, 65, 90, 77, 95] +// ^^ numbers[k] +``` + +where *numbers*[8] is 53: greater than the preceding *k* elements and less than the following elements. Implemented by [Volodymyr Agafonkin’s quickselect](https://github.com/mourner/quickselect). + +## reverse(*iterable*) {#reverse} + +[Source](https://github.com/d3/d3-array/blob/main/src/reverse.js) · Returns an array containing the values in the given *iterable* in reverse order. + +```js +d3.reverse(new Set([0, 2, 3, 1])) // [1, 3, 2, 0] +``` + +Equivalent to [*array*.reverse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse), except that it does not mutate the given input and works with any iterable. + +## shuffle(*array*, *start*, *stop*) {#shuffle} + +[Examples](https://observablehq.com/@d3/d3-shuffle) · [Source](https://github.com/d3/d3-array/blob/main/src/shuffle.js) · Randomizes the order of the specified *array* in-place using the [Fisher–Yates shuffle](https://bost.ocks.org/mike/shuffle/) and returns the *array*. + +```js +d3.shuffle([..."abcdefg"]) // ["e", "c", "a", "d", "b", "g", "f"], perhaps +``` + +If *start* is specified, it is the starting index (inclusive) of the *array* to shuffle; if *start* is not specified, it defaults to zero. If *stop* is specified, it is the ending index (exclusive) of the *array* to shuffle; if *stop* is not specified, it defaults to *array*.length. For example, to shuffle the first ten elements of the *array*: shuffle(*array*, 0, 10). + +## shuffler(*random*) {#shuffler} + +[Source](https://github.com/d3/d3-array/blob/main/src/shuffle.js) · Returns a [shuffle function](#shuffle) given the specified random source. + +```js +d3.shuffler(d3.randomLcg(42))([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) // [5, 3, 7, 6, 8, 9, 1, 4, 0, 2] +``` + +Often used with [d3.randomLcg](../d3-random.md) for a deterministic shuffle. + +## sort(*iterable*, *comparator*) {#sort} + +[Source](https://github.com/d3/d3-array/blob/main/src/sort.js) · Returns an array containing the values in the given *iterable* in the sorted order defined by the given *comparator* or *accessor* function. If *comparator* is not specified, it defaults to [d3.ascending](#ascending). + +```js +d3.sort(new Set([0, 2, 3, 1])) // [0, 1, 2, 3] +``` + +If an *accessor* (a function that does not take exactly two arguments) is specified, + +```js +d3.sort(data, (d) => d.value) +``` + +it is equivalent to a *comparator* using [natural order](#ascending): + +```js +d3.sort(data, (a, b) => d3.ascending(a.value, b.value)) +``` + +The *accessor* is only invoked once per element, and thus the returned sorted order is consistent even if the accessor is nondeterministic. Multiple accessors may be specified to break ties. + +```js +d3.sort(points, ({x}) => x, ({y}) => y) +``` + +The above is equivalent to: + +```js +d3.sort(data, (a, b) => d3.ascending(a.x, b.x) || d3.ascending(a.y, b.y)) +``` + +Unlike [*array*.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort), d3.sort does not mutate the given input, the comparator defaults to natural order instead of lexicographic order, and the input can be any iterable. diff --git a/docs/d3-array/summarize.md b/docs/d3-array/summarize.md new file mode 100644 index 00000000000000..caa6152cda850f --- /dev/null +++ b/docs/d3-array/summarize.md @@ -0,0 +1,380 @@ +# Summarizing data + +Compute summary statistics. + +## count(*iterable*, *accessor*) {#count} + +```js +d3.count(penguins, (d) => d.body_mass_g) // 342 +``` + +[Examples](https://observablehq.com/@d3/d3-count) · [Source](https://github.com/d3/d3-array/blob/main/src/count.js) · Returns the number of valid number values (*i.e.*, not null, NaN, or undefined) in the specified *iterable*; accepts an accessor. + +## min(*iterable*, *accessor*) {#min} + +[Examples](https://observablehq.com/@d3/d3-extent) · [Source](https://github.com/d3/d3-array/blob/main/src/min.js) · Returns the minimum value in the given *iterable* using natural order. + +```js +d3.min([3, 2, 1, 1, 6, 2, 4]) // 1 +``` + +Unlike [Math.min](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Math/min), d3.min does not coerce the inputs to numbers; for example, the minimum of the strings `["20", "3"]` is `"20"`, while the minimum of the numbers `[20, 3]` is `3`. + +```js +d3.min(["bob", "alice", "carol"]) // "alice" +``` +```js +d3.min([new Date("2018-01-01"), new Date("2011-03-09")]) // 2011-03-09 +``` + +Also unlike Math.min, this method ignores undefined, null and NaN values, which is useful for ignoring missing data. + +```js +d3.min([3, 2, 1, NaN, 4]) // 1 +``` + +An optional *accessor* function may be specified, which is similar to calling [Array.from](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) before computing the minimum value. The accessor function is repeatedly passed an element from the given iterable (often *d*) and the zero-based index (*i*). + +```js +d3.min(alphabet, (d) => d.frequency) // 0.00074 +``` + +Because undefined values are ignored, you can use the accessor function to ignore values. For example, to get the frequency of the least-common letter than is not Z: + +```js +d3.min(alphabet, (d) => d.letter === "Z" ? NaN : d.frequency) // 0.00095 +``` + +If the iterable contains no comparable values, returns undefined. + +```js +d3.min([]) // undefined +``` +```js +d3.min(alphabet, (d) => d.doesnotexist) // undefined +``` + +See also [extent](#extent) and [least](#least). + +## minIndex(*iterable*, *accessor*) {#minIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/minIndex.js) · Like [min](#min), but returns the index of the minimum value rather than the value itself. + +```js +d3.minIndex([3, 2, 1, 1, 6, 2, 4]) // 2 +``` + +This method can find the least element according to the given accessor, similar to [least](#least): + +```js +d3.minIndex(alphabet, (d) => d.frequency) // 25 +``` +```js +alphabet[d3.minIndex(alphabet, (d) => d.frequency)] // {letter: "Z", frequency: 0.00074} +``` + +See also [leastIndex](#leastIndex). + +## max(*iterable*, *accessor*) {#max} + +[Examples](https://observablehq.com/@d3/d3-extent) · [Source](https://github.com/d3/d3-array/blob/main/src/max.js) · Returns the maximum value in the given *iterable* using natural order. + +```js +d3.max([3, 2, 1, 1, 6, 2, 4]) // 6 +``` + +Unlike [Math.max](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Math/max), d3.max does not coerce the inputs to numbers; for example, the maximum of the strings `["20", "3"]` is `"3"`, while the maximum of the numbers `[20, 3]` is `20`. + +```js +d3.max(["bob", "alice", "carol"]) // "carol" +``` +```js +d3.max([new Date("2018-01-01"), new Date("2011-03-09")]) // 2018-01-01 +``` + +Also unlike Math.max, this method ignores undefined, null and NaN values, which is useful for ignoring missing data. + +```js +d3.max([3, 2, 1, NaN, 4]) // 4 +``` + +An optional *accessor* function may be specified, which is similar to calling [Array.from](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) before computing the maximum value. The accessor function is repeatedly passed an element from the given iterable (often *d*) and the zero-based index (*i*). + +```js +d3.max(alphabet, (d) => d.frequency) // 0.12702 +``` + +Because undefined values are ignored, you can use the accessor function to ignore values. For example, to get the frequency of the most-common letter than is not E: + +```js +d3.max(alphabet, (d) => d.letter === "E" ? NaN : d.frequency) // 0.09056 +``` + +If the iterable contains no comparable values, returns undefined. + +```js +d3.max([]) // undefined +``` +```js +d3.max(alphabet, (d) => d.doesnotexist) // undefined +``` + +See also [extent](#extent) and [greatest](#greatest). + +## maxIndex(*iterable*, *accessor*) {#maxIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/maxIndex.js) · Like [max](#max), but returns the index of the maximum value rather than the value itself. + +```js +d3.maxIndex([3, 2, 1, 1, 6, 2, 4]) // 2 +``` + +This method can find the greatest element according to the given accessor, similar to [greatest](#greatest): + +```js +d3.maxIndex(alphabet, (d) => d.frequency) // 0 +``` +```js +alphabet[d3.maxIndex(alphabet, (d) => d.frequency)] // {letter: "E", frequency: 0.12702} +``` + +See also [greatestIndex](#greatestIndex). + +## least(*iterable*, *comparator*) {#least} + +[Examples](https://observablehq.com/@d3/d3-least) · [Source](https://github.com/d3/d3-array/blob/main/src/least.js) · Returns the least element of the specified *iterable* according to the specified *comparator*. + +```js +d3.least(alphabet, (a, b) => a.frequency - b.frequency) // {letter: "Z", frequency: 0.00074} +``` +```js +d3.least(alphabet, (a, b) => b.frequency - a.frequency) // {letter: "E", frequency: 0.12702} +``` + +If the *comparator* takes a single argument, is interpreted as an accessor and the returned elements are compared using natural order. + +```js +d3.least(alphabet, (d) => d.frequency) // {letter: "Z", frequency: 0.00074} +``` +```js +d3.least(alphabet, (d) => -d.frequency) // {letter: "E", frequency: 0.12702} +``` + +If *comparator* is not specified, it defaults to [ascending](./sort.md#ascending). + +```js +d3.least(alphabet.map((d) => d.frequency)) // 0.00074 +``` + +If the given *iterable* contains no comparable elements (*i.e.*, the comparator returns NaN when comparing each element to itself), returns undefined. + +```js +d3.least([]) // undefined +``` + +This function is similar to [min](#min), except it allows the use of a comparator rather than an accessor. + +## leastIndex(*iterable*, *comparator*) {#leastIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/leastIndex.js) · Returns the index of the least element of the specified *iterable* according to the specified *comparator* or *accessor*. If the given *iterable* contains no comparable elements (*i.e.*, the comparator returns NaN when comparing each element to itself), returns -1. If *comparator* is not specified, it defaults to [ascending](./sort.md#ascending). For example: + +```js +const array = [{foo: 42}, {foo: 91}]; +d3.leastIndex(array, (a, b) => a.foo - b.foo); // 0 +d3.leastIndex(array, (a, b) => b.foo - a.foo); // 1 +d3.leastIndex(array, (d) => d.foo); // 0 +``` + +This function is similar to [minIndex](#minIndex), except it allows the use of a comparator rather than an accessor. + +## greatest(*iterable*, *comparator*) {#greatest} + +[Examples](https://observablehq.com/@d3/d3-least) · [Source](https://github.com/d3/d3-array/blob/main/src/greatest.js) · Returns the greatest element of the specified *iterable* according to the specified *comparator* or *accessor*. If the given *iterable* contains no comparable elements (*i.e.*, the comparator returns NaN when comparing each element to itself), returns undefined. If *comparator* is not specified, it defaults to [ascending](./sort.md#ascending). For example: + +```js +const array = [{foo: 42}, {foo: 91}]; +d3.greatest(array, (a, b) => a.foo - b.foo); // {foo: 91} +d3.greatest(array, (a, b) => b.foo - a.foo); // {foo: 42} +d3.greatest(array, (d) => d.foo); // {foo: 91} +``` + +This function is similar to [max](#max), except it allows the use of a comparator rather than an accessor. + +## greatestIndex(*iterable*, *comparator*) {#greatestIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/greatestIndex.js) · Returns the index of the greatest element of the specified *iterable* according to the specified *comparator* or *accessor*. If the given *iterable* contains no comparable elements (*i.e.*, the comparator returns NaN when comparing each element to itself), returns -1. If *comparator* is not specified, it defaults to [ascending](./sort.md#ascending). For example: + +```js +const array = [{foo: 42}, {foo: 91}]; +d3.greatestIndex(array, (a, b) => a.foo - b.foo); // 1 +d3.greatestIndex(array, (a, b) => b.foo - a.foo); // 0 +d3.greatestIndex(array, (d) => d.foo); // 1 +``` + +This function is similar to [maxIndex](#maxIndex), except it allows the use of a comparator rather than an accessor. + +## extent(*iterable*, *accessor*) {#extent} + +[Examples](https://observablehq.com/@d3/d3-extent) · [Source](https://github.com/d3/d3-array/blob/main/src/extent.js) · Returns the [minimum](#min) and [maximum](#max) value in the given *iterable* using natural order. + +```js +d3.extent([3, 2, 1, 1, 6, 2, 4]) // [1, 6] +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the extent. + +```js +d3.extent(alphabet, (d) => d.frequency) // [0.00074, 0.12702] +``` + +If the iterable contains no comparable values, returns [undefined, undefined]. + +```js +d3.extent(alphabet, (d) => d.doesnotexist) // [undefined, undefined] +``` + +## mode(*iterable*, *accessor*) {#mode} + +[Examples](https://observablehq.com/@d3/d3-mode) · [Source](https://github.com/d3/d3-array/blob/main/src/mode.js) · Returns the mode of the given *iterable*, *i.e.* the value which appears the most often. Ignores undefined, null and NaN values. + +```js +d3.mode([1, 2, 2, 2, 3, 3]) // 2 +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the mode. + +```js +d3.mode(penguins, (d) => d.island) // "Biscoe" +``` + +In case of equality, returns the first of the relevant values. If the iterable contains no comparable values, returns undefined. + +## sum(*iterable*, *accessor*) {#sum} + +[Examples](https://observablehq.com/@d3/d3-sum) · [Source](https://github.com/d3/d3-array/blob/main/src/sum.js) · Returns the sum of the given *iterable* of numbers. Ignores undefined, null and NaN values. + +```js +d3.sum([1, 2, 2, 2, NaN, 3, null]) // 10 +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the sum. + +```js +d3.sum(penguins, (d) => d.body_mass_g) // 1437000 +``` + +If the iterable contains no numbers, returns 0. See also [fsum](./add.md#fsum). + +## mean(*iterable*, *accessor*) {#mean} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/mean.js) · Returns the mean of the given *iterable* of numbers. Ignores undefined, null and NaN values. + +```js +d3.mean([1, 2, 2, 2, NaN, 3, null]) // 2 +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the mean. + +```js +d3.mean(penguins, (d) => d.body_mass_g) // 4201.754385964912 +``` + +If the iterable contains no numbers, returns undefined. + +## median(*iterable*, *accessor*) {#median} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/median.js) · Returns the median of the given *iterable* of numbers using the [R-7 method](https://en.wikipedia.org/wiki/Quantile#Estimating_quantiles_from_a_sample). Ignores undefined, null and NaN values. + +```js +d3.median([1, 2, 2, 2, NaN, 3, null]) // 2 +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the median. + +```js +d3.median(penguins, (d) => d.body_mass_g) // 4050 +``` + +If the iterable contains no numbers, returns undefined. + +## medianIndex(array, accessor) {#medianIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/median.js) · Like [median](#median), but returns the index of the element to the left of the median. + +```js +d3.medianIndex([1, 2, 2, 2, NaN, 3, null]) // 2 +``` + +## cumsum(*iterable*, *accessor*) {#cumsum} + +[Examples](https://observablehq.com/@d3/d3-cumsum) · [Source](https://github.com/d3/d3-array/blob/main/src/cumsum.js) · Returns the cumulative sum of the given *iterable* of numbers, as a Float64Array of the same length. + +```js +d3.cumsum([1, 1, 2, 3, 5]) // [1, 2, 4, 7, 12] +``` + +An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the cumulative sum. + +```js +d3.cumsum(penguins, (d) => d.body_mass_g) // [3750, 7550, 10800, 10800, …] +``` + +This method ignores undefined and NaN values; this is useful for ignoring missing data. If the iterable contains no numbers, returns zeros. See also [fcumsum](./add.md#fcumsum). + +## quantile(*iterable*, *p*, *accessor*) {#quantile} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/quantile.js) · Returns the *p*-quantile of the given *iterable* of numbers, where *p* is a number in the range [0, 1]. For example, the median can be computed using *p* = 0.5, the first quartile at *p* = 0.25, and the third quartile at *p* = 0.75. This particular implementation uses the [R-7 method](http://en.wikipedia.org/wiki/Quantile#Quantiles_of_a_population), which is the default for the R programming language and Excel. + +```js +const numbers = [0, 10, 30]; +d3.quantile(numbers, 0); // 0 +d3.quantile(numbers, 0.5); // 10 +d3.quantile(numbers, 1); // 30 +d3.quantile(numbers, 0.25); // 5 +d3.quantile(numbers, 0.75); // 20 +d3.quantile(numbers, 0.1); // 2 +``` + +An optional *accessor* function may be specified, which is equivalent to calling [*array*.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) before computing the quantile. + +## quantileIndex(*array*, *p*, *accessor*) {#quantileIndex} + +[Source](https://github.com/d3/d3-array/blob/main/src/quantile.js) · Similar to *quantile*, but returns the index to the left of *p*. + +## quantileSorted(*array*, *p*, *accessor*) {#quantileSorted} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/quantile.js) · Similar to *quantile*, but expects the input to be a **sorted** *array* of values. In contrast with *quantile*, the accessor is only called on the elements needed to compute the quantile. + +## rank(*iterable*, *comparator*) {#rank} + +[Examples](https://observablehq.com/@d3/rank) · [Source](https://github.com/d3/d3-array/blob/main/src/rank.js) · Returns an array with the rank of each value in the *iterable*, *i.e.* the zero-based index of the value when the iterable is sorted. Nullish values are sorted to the end and ranked NaN. An optional *comparator* or *accessor* function may be specified; the latter is equivalent to calling [*array*.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) before computing the ranks. If *comparator* is not specified, it defaults to [ascending](./sort.md#ascending). Ties (equivalent values) all get the same rank, defined as the first time the value is found. + +```js +d3.rank([{x: 1}, {}, {x: 2}, {x: 0}], d => d.x); // [1, NaN, 2, 0] +d3.rank(["b", "c", "b", "a"]); // [1, 3, 1, 0] +d3.rank([1, 2, 3], d3.descending); // [2, 1, 0] +``` + +## variance(*iterable*, *accessor*) {#variance} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/variance.js) · Returns an [unbiased estimator of the population variance](http://mathworld.wolfram.com/SampleVariance.html) of the given *iterable* of numbers using [Welford’s algorithm](https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm). If the iterable has fewer than two numbers, returns undefined. An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the variance. This method ignores undefined and NaN values; this is useful for ignoring missing data. + +## deviation(*iterable*, *accessor*) {#deviation} + +[Examples](https://observablehq.com/@d3/d3-mean-d3-median-and-friends) · [Source](https://github.com/d3/d3-array/blob/main/src/deviation.js) · Returns the standard deviation, defined as the square root of the [bias-corrected variance](#variance), of the given *iterable* of numbers. If the iterable has fewer than two numbers, returns undefined. An optional *accessor* function may be specified, which is equivalent to calling Array.from before computing the standard deviation. This method ignores undefined and NaN values; this is useful for ignoring missing data. + +## every(*iterable*, *test*) {#every} + +[Source](https://github.com/d3/d3-array/blob/main/src/every.js) · Returns true if the given *test* function returns true for every value in the given *iterable*. This method returns as soon as *test* returns a non-truthy value or all values are iterated over. Equivalent to [*array*.every](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every): + +```js +d3.every(new Set([1, 3, 5, 7]), x => x & 1) // true +``` + +## some(*iterable*, *test*) {#some} + +[Source](https://github.com/d3/d3-array/blob/main/src/some.js) · Returns true if the given *test* function returns true for any value in the given *iterable*. This method returns as soon as *test* returns a truthy value or all values are iterated over. Equivalent to [*array*.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some): + +```js +d3.some(new Set([0, 2, 3, 4]), x => x & 1) // true +``` diff --git a/docs/d3-array/ticks.md b/docs/d3-array/ticks.md new file mode 100644 index 00000000000000..5092636277b7c4 --- /dev/null +++ b/docs/d3-array/ticks.md @@ -0,0 +1,90 @@ +# Ticks {#Ticks} + +Generate representative values from a continuous interval. + +## ticks(*start*, *stop*, *count*) {#ticks} + +[Examples](https://observablehq.com/@d3/d3-ticks) · [Source](https://github.com/d3/d3-array/blob/main/src/ticks.js) · Returns an array of approximately *count* + 1 uniformly-spaced, nicely-rounded values between *start* and *stop* (inclusive). Each value is a power of ten multiplied by 1, 2 or 5. + +```js +d3.ticks(1, 9, 5) // [2, 4, 6, 8] +``` +```js +d3.ticks(1, 9, 20) // [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9] +``` + +Ticks are inclusive in the sense that they may include the specified *start* and *stop* values if (and only if) they are exact, nicely-rounded values consistent with the inferred [step](#tickStep). More formally, each returned tick *t* satisfies *start* ≤ *t* and *t* ≤ *stop*. + +## tickIncrement(*start*, *stop*, *count*) {#tickIncrement} + +[Source](https://github.com/d3/d3-array/blob/main/src/ticks.js) · Like [d3.tickStep](#tickStep), except requires that *start* is always less than or equal to *stop*, and if the tick step for the given *start*, *stop* and *count* would be less than one, returns the negative inverse tick step instead. + +```js +d3.tickIncrement(1, 9, 5) // 2 +``` +```js +d3.tickIncrement(1, 9, 20) // -2, meaning a tick step 0.5 +``` + +This method is always guaranteed to return an integer, and is used by [d3.ticks](#ticks) to guarantee that the returned tick values are represented as precisely as possible in IEEE 754 floating point. + +## tickStep(*start*, *stop*, *count*) {#tickStep} + +[Source](https://github.com/d3/d3-array/blob/main/src/ticks.js) · Returns the difference between adjacent tick values if the same arguments were passed to [d3.ticks](#ticks): a nicely-rounded value that is a power of ten multiplied by 1, 2 or 5. + +```js +d3.tickStep(1, 9, 5) // 2 +``` + +If *stop* is less than *start*, may return a negative tick step to indicate descending ticks. + +```js +d3.tickStep(9, 1, 5) // -2 +``` + +Note that due to the limited precision of IEEE 754 floating point, the returned value may not be exact decimals; use [d3-format](../d3-format.md) to format numbers for human consumption. + +## nice(*start*, *stop*, *count*) {#nice} + +[Source](https://github.com/d3/d3-array/blob/main/src/nice.js) · Returns a new interval [*niceStart*, *niceStop*] covering the given interval [*start*, *stop*] and where *niceStart* and *niceStop* are guaranteed to align with the corresponding [tick step](#tickStep). + +```js +d3.nice(1, 9, 5) // [0, 10] +``` + +Like [d3.tickIncrement](#tickIncrement), this requires that *start* is less than or equal to *stop*. + +## range(*start*, *stop*, *step*) {#range} + +[Examples](https://observablehq.com/@d3/d3-range) · [Source](https://github.com/d3/d3-array/blob/main/src/range.js) · Returns an array containing an arithmetic progression, similar to the Python built-in [range](http://docs.python.org/library/functions.html#range). This method is often used to iterate over a sequence of uniformly-spaced numeric values, such as the indexes of an array or the ticks of a linear scale. (See also [d3.ticks](#ticks) for nicely-rounded values.) + +```js +d3.range(6) // [0, 1, 2, 3, 4, 5] +``` + +If *step* is omitted, it defaults to 1. If *start* is omitted, it defaults to 0. The *stop* value is exclusive; it is not included in the result. If *step* is positive, the last element is the largest *start* + *i* \* *step* less than *stop*; if *step* is negative, the last element is the smallest *start* + *i* \* *step* greater than *stop*. + +```js +d3.range(5, -1, -1) // [5, 4, 3, 2, 1, 0] +``` + +If the returned array would contain an infinite number of values, an empty range is returned. + +```js +d3.range(Infinity) // [] +``` + +The arguments are not required to be integers; however, the results are more predictable if they are. The values in the returned array are defined as *start* + *i* \* *step*, where *i* is an integer from zero to one minus the total number of elements in the returned array. + +```js +d3.range(0, 1, 0.2) // [0, 0.2, 0.4, 0.6000000000000001, 0.8] +``` + +This behavior is due to IEEE 754 double-precision floating point, which defines 0.2 * 3 = 0.6000000000000001. Use [d3-format](https://github.com/d3/d3-format) to format numbers for human consumption with appropriate rounding; see also [linear.tickFormat](https://github.com/d3/d3-scale/blob/main/README.md#linear_tickFormat) in [d3-scale](https://github.com/d3/d3-scale). Likewise, if the returned array should have a specific length, consider using [array.map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on an integer range. + +```js +d3.range(0, 1, 1 / 49) // 👎 returns 50 elements! +``` +```js +d3.range(49).map((d) => d / 49) // 👍 returns 49 elements +``` diff --git a/docs/d3-array/transform.md b/docs/d3-array/transform.md new file mode 100644 index 00000000000000..65a66c1cc1471c --- /dev/null +++ b/docs/d3-array/transform.md @@ -0,0 +1,92 @@ +# Transforming data + +Transform arrays and generate new arrays. + +## cross(...*iterables*, *reducer*) {#cross} + +[Examples](https://observablehq.com/@d3/d3-cross) · [Source](https://github.com/d3/d3-array/blob/main/src/cross.js) · Returns the [Cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) of the specified *iterables*. + +```js +d3.cross([1, 2], ["x", "y"]) // [[1, "x"], [1, "y"], [2, "x"], [2, "y"]] +``` + +If a *reducer* is specified, it is invoked for each combination of elements from each of the given *iterables*, and returns the corresponding reduced value. + +```js +d3.cross([1, 2], ["x", "y"], (a, b) => a + b) // ["1x", "1y", "2x", "2y"] +``` + +## merge(*iterables*) {#merge} + +[Examples](https://observablehq.com/@d3/d3-merge) · [Source](https://github.com/d3/d3-array/blob/main/src/merge.js) · Merges the specified iterable of *iterables* into a new flat array. This method is similar to the built-in [*array*.concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) method, but is more convenient when you have an array of arrays or an iterable of iterables. + +```js +d3.merge([[1], [2, 3]]) // [1, 2, 3] +``` + +```js +d3.merge(new Set([new Set([1]), new Set([2, 3])])) // [1, 2, 3] +``` + +## pairs(*iterable*, *reducer*) {#pairs} + +[Examples](https://observablehq.com/@d3/d3-pairs) · [Source](https://github.com/d3/d3-array/blob/main/src/pairs.js) · Returns an array of adjacent pairs of elements from the specified *iterable*, in order. If the specified iterable has fewer than two elements, returns the empty array. + +```js +d3.pairs([1, 2, 3, 4]) // [[1, 2], [2, 3], [3, 4]] +``` + +If a *reducer* function is specified, it is successively passed an element *i - 1* and element *i* from the *iterable*. + +```js +d3.pairs([1, 1, 2, 3, 5], (a, b) => b - a) // [0, 1, 1, 2] +``` + +## transpose(*matrix*) {#transpose} + +[Examples](https://observablehq.com/@d3/d3-transpose) · [Source](https://github.com/d3/d3-array/blob/main/src/transpose.js) · Uses the [zip](#zip) operator as a two-dimensional [matrix transpose](http://en.wikipedia.org/wiki/Transpose). + +```js +d3.transpose([["Alice", "Bob", "Carol"], [32, 13, 14]]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]] +``` +```js +d3.transpose([["Alice", 32], ["Bob", 13], ["Carol", 14]]) // [["Alice", "Bob", "Carol"], [32, 13, 14]] +``` + +## zip(...*arrays*) {#zip} + +[Examples](https://observablehq.com/@d3/d3-transpose) · [Source](https://github.com/d3/d3-array/blob/main/src/zip.js) · Returns an array of arrays, where the *i*th array contains the *i*th element from each of the argument *arrays*. The returned array is truncated in length to the shortest array in *arrays*. If *arrays* contains only a single array, the returned array contains one-element arrays. With no arguments, the returned array is empty. + +```js +d3.zip(["Alice", "Bob", "Carol"], [32, 13, 14]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]] +``` + +## filter(*iterable*, *test*) {#filter} + +[Source](https://github.com/d3/d3-array/blob/main/src/filter.js) · Returns a new array containing the values from *iterable*, in order, for which the given *test* function returns true. + +```js +d3.filter(new Set([0, 2, 3, 4]), (d) => d & 1) // [3] +``` + +Like [*array*.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter), but works with any iterable. + +## map(*iterable*, *mapper*) {#map} + +[Source](https://github.com/d3/d3-array/blob/main/src/map.js) · Returns a new array containing the mapped values from *iterable*, in order, as defined by given *mapper* function. + +```js +d3.map(new Set([0, 2, 3, 4]), (d) => d & 1) // [0, 0, 1, 0] +``` + +Like [*array*.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), but works with any iterable. + +## reduce(*iterable*, *reducer*, *initialValue*) {#reduce} + +[Source](https://github.com/d3/d3-array/blob/main/src/reduce.js) · Returns the reduced value defined by given *reducer* function, which is repeatedly invoked for each value in *iterable*, being passed the current reduced value and the next value. + +```js +d3.reduce(new Set([0, 2, 3, 4]), (p, v) => p + v, 0) // 9 +``` + +Like [*array*.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce), but works with any iterable. diff --git a/docs/d3-axis.md b/docs/d3-axis.md new file mode 100644 index 00000000000000..c195b8f263f846 --- /dev/null +++ b/docs/d3-axis.md @@ -0,0 +1,269 @@ + + +# d3-axis + +The axis component renders human-readable reference marks for [scales](./d3-scale.md). The orientation of an axis is fixed; to change the orientation, remove the old axis and create a new axis. + +Axes are rendered at the origin. To change the position of the axis with respect to the chart, specify a [transform attribute](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) on the containing element. + +```js +d3.select("body").append("svg") + .attr("width", 1440) + .attr("height", 30) + .append("g") + .attr("transform", "translate(0,30)") + .call(axis); +``` + +The elements created by the axis are considered part of its public API. You can apply external stylesheets or modify the generated axis elements to [customize the axis appearance](https://observablehq.com/@d3/styled-axes). An axis consists of a [path element](https://www.w3.org/TR/SVG/paths.html#PathElement) of class “domain” representing the extent of the scale’s domain, followed by transformed [g elements](https://www.w3.org/TR/SVG/struct.html#Groups) of class “tick” representing each of the scale’s ticks. Each tick has a [line element](https://www.w3.org/TR/SVG/shapes.html#LineElement) to draw the tick line, and a [text element](https://www.w3.org/TR/SVG/text.html#TextElement) for the tick label. For example, here is a typical bottom-oriented axis: + +```html + + + + + 0.0 + + + + 0.2 + + + + 0.4 + + + + 0.6 + + + + 0.8 + + + + 1.0 + + +``` + +## axisTop(*scale*) {#axisTop} + + + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · Constructs a new top-oriented axis generator for the given [scale](./d3-scale.md), with empty [tick arguments](#axis_ticks), a [tick size](#axis_tickSize) of 6 and [padding](#axis_tickPadding) of 3. In this orientation, ticks are drawn above the horizontal domain path. + +## axisRight(*scale*) {#axisRight} + + + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · Constructs a new right-oriented axis generator for the given [scale](./d3-scale.md), with empty [tick arguments](#axis_ticks), a [tick size](#axis_tickSize) of 6 and [padding](#axis_tickPadding) of 3. In this orientation, ticks are drawn to the right of the vertical domain path. + +## axisBottom(*scale*) {#axisBottom} + + + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · Constructs a new bottom-oriented axis generator for the given [scale](./d3-scale.md), with empty [tick arguments](#axis_ticks), a [tick size](#axis_tickSize) of 6 and [padding](#axis_tickPadding) of 3. In this orientation, ticks are drawn below the horizontal domain path. + +## axisLeft(*scale*) {#axisLeft} + + + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · Constructs a new left-oriented axis generator for the given [scale](./d3-scale.md), with empty [tick arguments](#axis_ticks), a [tick size](#axis_tickSize) of 6 and [padding](#axis_tickPadding) of 3. In this orientation, ticks are drawn to the left of the vertical domain path. + +## *axis*(*context*) {#_axis} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · Render the axis to the given *context*, which may be either a [selection](./d3-selection.md) of SVG containers (either SVG or G elements) or a corresponding [transition](./d3-transition.md). + +```js +svg.append("g") + .attr("transform", `translate(0,${height - marginBottom})`) + .call(d3.axisBottom(x)); +``` + +## *axis*.scale(*scale*) {#axis_scale} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *scale* is specified, sets the [scale](./d3-scale.md) and returns the axis. If *scale* is not specified, returns the current scale. + +```js +const xAxis = d3.axisBottom().scale(x); +``` + +## *axis*.ticks(...*arguments*) {#axis_ticks} + +Sets the *arguments* that will be passed to [*scale*.ticks](./d3-scale/linear.md#linear_ticks) and [*scale*.tickFormat](./d3-scale/linear.md#linear_tickFormat) when the axis is [rendered](#_axis), and returns the axis generator. The meaning of the *arguments* depends on the [axis’ scale](#axis_scale) type: most commonly, the arguments are a suggested *count* for the number of ticks (or a [time *interval*](./d3-time.md) for time scales), and an optional [format *specifier*](./d3-format.md) to customize how the tick values are formatted. + +This method has no effect if the scale does not implement *scale*.ticks, as with [band](./d3-scale/band.md) and [point](./d3-scale/point.md) scales. To set the tick values explicitly, use [*axis*.tickValues](#axis_tickValues). To set the tick format explicitly, use [*axis*.tickFormat](#axis_tickFormat). + +For example, to generate twenty ticks with SI-prefix formatting on a linear scale, say: + +```js +axis.ticks(20, "s"); +``` + +To generate ticks every fifteen minutes with a time scale, say: + +```js +axis.ticks(d3.timeMinute.every(15)); +``` + +This method is also a convenience function for [*axis*.tickArguments](#axis_tickArguments). For example, this: + +```js +axis.ticks(10); +``` + +Is equivalent to: + +```js +axis.tickArguments([10]); +``` + +To generate tick values directly, use [*scale*.ticks](./d3-scale/linear.md#linear_ticks). + +## *axis*.tickArguments(*arguments*) {#axis_tickArguments} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *arguments* is specified, sets the *arguments* that will be passed to [*scale*.ticks](./d3-scale/linear.md#linear_ticks) and [*scale*.tickFormat](./d3-scale/linear.md#linear_tickFormat) when the axis is [rendered](#_axis), and returns the axis generator. The meaning of the *arguments* depends on the [axis’ scale](#axis_scale) type: most commonly, the arguments are a suggested *count* for the number of ticks (or a [time *interval*](./d3-time.md) for time scales), and an optional [format *specifier*](./d3-format.md) to customize how the tick values are formatted. + +If *arguments* is specified, this method has no effect if the scale does not implement *scale*.ticks, as with [band](./d3-scale/band.md) and [point](./d3-scale/point.md) scales. To set the tick values explicitly, use [*axis*.tickValues](#axis_tickValues). To set the tick format explicitly, use [*axis*.tickFormat](#axis_tickFormat). + +If *arguments* is not specified, returns the current tick arguments, which defaults to the empty array. + +For example, to generate twenty ticks with SI-prefix formatting on a linear scale, say: + +```js +axis.tickArguments([20, "s"]); +``` + +To generate ticks every fifteen minutes with a time scale, say: + +```js +axis.tickArguments([d3.timeMinute.every(15)]); +``` + +See also [*axis*.ticks](#axis_ticks). + +## *axis*.tickValues(*values*) {#axis_tickValues} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If a *values* iterable is specified, the specified values are used for ticks rather than using the scale’s automatic tick generator. If *values* is null, clears any previously-set explicit tick values and reverts back to the scale’s tick generator. If *values* is not specified, returns the current tick values, which defaults to null. For example, to generate ticks at specific values: + +```js +const axis = d3.axisBottom(x).tickValues([1, 2, 3, 5, 8, 13, 21]); +``` + +The explicit tick values take precedent over the tick arguments set by [*axis*.tickArguments](#axis_tickArguments). However, any tick arguments will still be passed to the scale’s [tickFormat](#axis_tickFormat) function if a tick format is not also set. + +## *axis*.tickFormat(*format*) {#axis_tickFormat} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *format* is specified, sets the tick format function and returns the axis. If *format* is not specified, returns the current format function, which defaults to null. A null format indicates that the scale’s default formatter should be used, which is generated by calling [*scale*.tickFormat](./d3-scale/linear.md#linear_tickFormat). In this case, the arguments specified by [*axis*.tickArguments](#axis_tickArguments) are likewise passed to *scale*.tickFormat. + +See [d3-format](./d3-format.md) and [d3-time-format](/d3-time-format.md) for help creating formatters. For example, to display integers with comma-grouping for thousands: + +```js +axis.tickFormat(d3.format(",.0f")); +``` + +More commonly, a format specifier is passed to [*axis*.ticks](#axis_ticks): + +```js +axis.ticks(10, ",f"); +``` + +This has the advantage of setting the format precision automatically based on the tick interval. + +## *axis*.tickSize(*size*) {#axis_tickSize} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *size* is specified, sets the [inner](#axis_tickSizeInner) and [outer](#axis_tickSizeOuter) tick size to the specified value and returns the axis. + +```js +const axis = d3.axisBottom(x).tickSize(0); +``` + +If *size* is not specified, returns the current inner tick size, which defaults to 6. + +```js +axis.tickSize() // 0 +``` + +## *axis*.tickSizeInner(size) {#axis_tickSizeInner} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *size* is specified, sets the inner tick size to the specified value and returns the axis. + +```js +const axis = d3.axisBottom(x).tickSizeInner(0); +``` + +If *size* is not specified, returns the current inner tick size, which defaults to 6. + +```js +axis.tickSizeInner() // 0 +``` + +The inner tick size controls the length of the tick lines, offset from the native position of the axis. + +## *axis*.tickSizeOuter(size) {#axis_tickSizeOuter} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *size* is specified, sets the outer tick size to the specified value and returns the axis. + +```js +const axis = d3.axisBottom(x).tickSizeOuter(0); +``` + +If *size* is not specified, returns the current outer tick size, which defaults to 6. + +```js +axis.tickSizeOuter() // 0 +``` + +The outer tick size controls the length of the square ends of the domain path, offset from the native position of the axis. Thus, the “outer ticks” are not actually ticks but part of the domain path, and their position is determined by the associated scale’s domain extent. Thus, outer ticks may overlap with the first or last inner tick. An outer tick size of 0 suppresses the square ends of the domain path, instead producing a straight line. + +## *axis*.tickPadding(padding) {#axis_tickPadding} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *padding* is specified, sets the padding to the specified value in pixels and returns the axis. + +```js +const axis = d3.axisBottom(x).tickPadding(0); +``` + +If *padding* is not specified, returns the current padding which defaults to 3 pixels. + +```js +axis.tickPadding() // 0 +``` + +## *axis*.offset(offset) {#axis_offset} + +[Source](https://github.com/d3/d3-axis/blob/main/src/axis.js) · If *offset* is specified, sets the pixel offset to the specified value in pixels and returns the axis. + +```js +const axis = d3.axisBottom(x).offset(0); +``` + +If *offset* is not specified, returns the current pixel offset. + +```js +axis.offset() // 0 +``` + +The pixel offset defaults to 0 on devices with a [devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio) greater than 1, and 0.5 otherwise. This default pixel offset ensures crisp edges on low-resolution devices. diff --git a/docs/d3-brush.md b/docs/d3-brush.md new file mode 100644 index 00000000000000..84d3b836796a63 --- /dev/null +++ b/docs/d3-brush.md @@ -0,0 +1,147 @@ +# d3-brush + +Brushing is the interactive specification a one- or two-dimensional selected region using a pointing gesture, such as by clicking and dragging the mouse. Brushing is often used to select discrete elements, such as dots in a scatterplot or files on a desktop. It can also be used to zoom-in to a region of interest, or to select continuous regions for [cross-filtering data](https://square.github.io/crossfilter/) or live histograms: + +[Mona Lisa Histogram](https://observablehq.com/@d3/mona-lisa-histogram) + +The d3-brush module implements brushing for mouse and touch events using [SVG](https://www.w3.org/TR/SVG/). Click and drag on the brush selection to translate the selection. Click and drag on one of the selection handles to move the corresponding edge (or edges) of the selection. Click and drag on the invisible overlay to define a new brush selection, or click anywhere within the brushable region while holding down the META (⌘) key. Holding down the ALT (⌥) key while moving the brush causes it to reposition around its center, while holding down SPACE locks the current brush size, allowing only translation. + +Brushes also support programmatic control. For example, you can listen to [*end* events](#brush-events), and then initiate a transition with [*brush*.move](#brush_move) to snap the brush selection to semantic boundaries: + +[Brush Snapping](https://observablehq.com/@d3/brush-snapping-transitions) + +Or you can have the brush recenter when you click outside the current selection: + +[Click-to-Recenter](https://observablehq.com/@d3/click-to-recenter-brush) + +## brush() {#brush} + +[Examples](https://observablehq.com/@d3/brushable-scatterplot) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Creates a new two-dimensional brush. + +## brushX() {#brushX} + +[Examples](https://observablehq.com/@d3/focus-context) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Creates a new one-dimensional brush along the *x*-dimension. + +## brushY() {#brushY} + +[Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Creates a new one-dimensional brush along the *y*-dimension. + +## *brush*(*group*) {#_brush} + +[Examples](https://observablehq.com/@d3/brushable-scatterplot-matrix) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Applies the brush to the specified *group*, which must be a [selection](./d3-selection.md) of SVG [G elements](https://www.w3.org/TR/SVG/struct.html#Groups). This function is typically not invoked directly, and is instead invoked via [*selection*.call](./d3-selection/control-flow.md#selection_call). For example, to render a brush: + +```js +svg.append("g") + .attr("class", "brush") + .call(d3.brush().on("brush", brushed)); +``` + +Internally, the brush uses [*selection*.on](./d3-selection/events.md#selection_on) to bind the necessary event listeners for dragging. The listeners use the name `.brush`, so you can subsequently unbind the brush event listeners as follows: + +```js +group.on(".brush", null); +``` + +The brush also creates the SVG elements necessary to display the brush selection and to receive input events for interaction. You can add, remove or modify these elements as desired to change the brush appearance; you can also apply stylesheets to modify the brush appearance. The structure of a two-dimensional brush is as follows: + +```html + + + + + + + + + + + + +``` + +The overlay rect covers the brushable area defined by [*brush*.extent](#brush_extent). The selection rect covers the area defined by the current [brush selection](#brushSelection). The handle rects cover the edges and corners of the brush selection, allowing the corresponding value in the brush selection to be modified interactively. To modify the brush selection programmatically, use [*brush*.move](#brush_move). + +## *brush*.move(*group*, *selection*, *event*) {#brush_move} + +[Examples](https://observablehq.com/d/93b91f86f9ebc9b9) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Sets the active *selection* of the brush on the specified *group*, which must be a [selection](./d3-selection.md) or a [transition](./d3-transition.md) of SVG [G elements](https://www.w3.org/TR/SVG/struct.html#Groups). The *selection* must be defined as an array of numbers, or null to clear the brush selection. For a [two-dimensional brush](#brush), it must be defined as [[*x0*, *y0*], [*x1*, *y1*]], where *x0* is the minimum *x*-value, *y0* is the minimum *y*-value, *x1* is the maximum *x*-value, and *y1* is the maximum *y*-value. For an [*x*-brush](#brushX), it must be defined as [*x0*, *x1*]; for a [*y*-brush](#brushY), it must be defined as [*y0*, *y1*]. The selection may also be specified as a function which returns such an array; if a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned array defines the brush selection for that element. + +## *brush*.clear(*group*, *event*) {#brush_clear} + +[Examples](https://observablehq.com/@d3/double-click-brush-clear) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · An alias for [*brush*.move](#brush_move) with the null selection. + +## *brush*.extent(*extent*) {#brush_extent} + +[Examples](https://observablehq.com/@d3/brush-snapping) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *extent* is specified, sets the brushable extent to the specified array of points [[*x0*, *y0*], [*x1*, *y1*]], where [*x0*, *y0*] is the top-left corner and [*x1*, *y1*] is the bottom-right corner, and returns this brush. The *extent* may also be specified as a function which returns such an array; if a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. If *extent* is not specified, returns the current extent accessor, which defaults to: + +```js +function defaultExtent() { + var svg = this.ownerSVGElement || this; + if (svg.hasAttribute("viewBox")) { + svg = svg.viewBox.baseVal; + return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; + } + return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; +} +``` + +This default implementation requires that the owner SVG element have a defined [viewBox](https://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute), or [width](https://www.w3.org/TR/SVG/struct.html#SVGElementWidthAttribute) and [height](https://www.w3.org/TR/SVG/struct.html#SVGElementHeightAttribute) attributes. Alternatively, consider using [*element*.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). (In Firefox, [*element*.clientWidth](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth) and [*element*.clientHeight](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight) is zero for SVG elements!) + +The brush extent determines the size of the invisible overlay and also constrains the brush selection; the brush selection cannot go outside the brush extent. + +## *brush*.filter(*filter*) {#brush_filter} + +[Examples](https://observablehq.com/@d3/brush-filter) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *filter* is specified, sets the filter to the specified function and returns the brush. If *filter* is not specified, returns the current filter, which defaults to: + +```js +function filter(event) { + return !event.ctrlKey && !event.button; +} +``` + +If the filter returns falsey, the initiating event is ignored and no brush gesture is started. Thus, the filter determines which input events are ignored. The default filter ignores mousedown events on secondary buttons, since those buttons are typically intended for other purposes, such as the context menu. + +## *brush*.touchable(*touchable*) {#brush_touchable} + +[Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *touchable* is specified, sets the touch support detector to the specified function and returns the brush. If *touchable* is not specified, returns the current touch support detector, which defaults to: + +```js +function touchable() { + return navigator.maxTouchPoints || ("ontouchstart" in this); +} +``` + +Touch event listeners are only registered if the detector returns truthy for the corresponding element when the brush is [applied](#_brush). The default detector works well for most browsers that are capable of touch input, but not all; Chrome’s mobile device emulator, for example, fails detection. + +## *brush*.keyModifiers(*modifiers*) {#brush_keyModifiers} + +[Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *modifiers* is specified, sets whether the brush listens to key events during brushing and returns the brush. If *modifiers* is not specified, returns the current behavior, which defaults to true. + +## *brush*.handleSize(*size*) {#brush_handleSize} + +[Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *size* is specified, sets the size of the brush handles to the specified number and returns the brush. If *size* is not specified, returns the current handle size, which defaults to six. This method must be called before [applying the brush](#_brush) to a selection; changing the handle size does not affect brushes that were previously rendered. + +## *brush*.on(*typenames*, *listener*) {#brush_on} + +[Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · If *listener* is specified, sets the event *listener* for the specified *typenames* and returns the brush. If an event listener was already registered for the same type and name, the existing listener is removed before the new listener is added. If *listener* is null, removes the current event listeners for the specified *typenames*, if any. If *listener* is not specified, returns the first currently-assigned listener matching the specified *typenames*, if any. When a specified event is dispatched, each *listener* will be invoked with the same context and arguments as [*selection*.on](./d3-selection/events.md#selection_on) listeners: the current event `event` and datum `d`, with the `this` context as the current DOM element. + +The *typenames* is a string containing one or more *typename* separated by whitespace. Each *typename* is a *type*, optionally followed by a period (`.`) and a *name*, such as `brush.foo` and `brush.bar`; the name allows multiple listeners to be registered for the same *type*. The *type* must be one of the following: + +* `start` - at the start of a brush gesture, such as on mousedown. +* `brush` - when the brush moves, such as on mousemove. +* `end` - at the end of a brush gesture, such as on mouseup. + +See [*dispatch*.on](./d3-dispatch.md#dispatch_on) and [brush events](#brush-events) for more. + +## brushSelection(*node*) {#brushSelection} + +[Examples](https://observablehq.com/@d3/double-click-brush-clear) · [Source](https://github.com/d3/d3-brush/blob/main/src/brush.js) · Returns the current brush selection for the specified *node*. Internally, an element’s brush state is stored as *element*.\_\_brush; however, you should use this method rather than accessing it directly. If the given *node* has no selection, returns null. Otherwise, the *selection* is defined as an array of numbers. For a [two-dimensional brush](#brush), it is [[*x0*, *y0*], [*x1*, *y1*]], where *x0* is the minimum *x*-value, *y0* is the minimum *y*-value, *x1* is the maximum *x*-value, and *y1* is the maximum *y*-value. For an [*x*-brush](#brushX), it is [*x0*, *x1*]; for a [*y*-brush](#brushY), it is [*y0*, *y1*]. + +## Brush events + +When a [brush event listener](#brush_on) is invoked, it receives the current brush event. The *event* object exposes several fields: + +* `target` - the associated [brush behavior](#brush). +* `type` - the string “start”, “brush” or “end”; see [*brush*.on](#brush_on). +* `selection` - the current [brush selection](#brushSelection). +* `sourceEvent` - the underlying input event, such as mousemove or touchmove. +* `mode` - the string “drag”, “space”, “handle” or “center”; the mode of the brush. diff --git a/docs/d3-chord.md b/docs/d3-chord.md new file mode 100644 index 00000000000000..d8e4bf0b7b5bbc --- /dev/null +++ b/docs/d3-chord.md @@ -0,0 +1,26 @@ +# d3-chord + +Chord diagrams represent flow between a set of nodes in a graph, such as transition probabilities between finite states, or people moving between rooms in a house. + +This flow is typically represented by a square *matrix* of size *n*×*n*, where *n* is the number of nodes in the graph. Each value *matrix*[*i*][*j*] represents the flow from the *i*th node to the *j*th node. (Each number *matrix*[*i*][*j*] must be nonnegative, though it can be zero if there is no flow from node *i* to node *j*.) + +For example, here is a fake dataset from [Circos](http://circos.ca/guide/tables/) which describes a population of people who dyed their hair. Each row and column represents a hair color (*black*, *blond*, *brown*, *red*); each value represents a number of people who dyed their hair from one color to another color. For example, 5,871 people had *black* hair and dyed it *blond*, while 1,951 people had *blond* hair and dyed it *black*. The matrix diagonal represents people who kept the same color. + +```js +const matrix = [ + // to black, blond, brown, red + [11975, 5871, 8916, 2868], // from black + [ 1951, 10048, 2060, 6171], // from blond + [ 8010, 16145, 8090, 8045], // from brown + [ 1013, 990, 940, 6907] // from red +]; +``` + +We can visualize these color transitions by [arranging](./d3-chord/chord.md) the population by starting color along the circumference of a circle and drawing [ribbons](./d3-chord/ribbon.md) between each color. The starting and ending width of the ribbon is proportional to the number of people that had the respective starting and ending color. The color of the ribbon, arbitrarily, is the color with the larger of the two values. + +[Chord Diagram](https://observablehq.com/@d3/chord-diagram) + +See one of: + +- [Chords](./d3-chord/chord.md) - a layout for chord diagrams +- [Ribbons](./d3-chord/ribbon.md) - a shape primitive for chord diagrams diff --git a/docs/d3-chord/chord.md b/docs/d3-chord/chord.md new file mode 100644 index 00000000000000..7dae24d5d97f03 --- /dev/null +++ b/docs/d3-chord/chord.md @@ -0,0 +1,64 @@ +# Chords + +The chord layout computes angles to generate a [chord diagram](../d3-chord.md). + +## chord() {#chord} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · Constructs a new chord layout with the default settings. + +```js +const chord = d3.chord(); +``` + +## *chord*(*matrix*) {#_chord} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · Computes the chord layout for the specified square *matrix* of size *n*×*n*, where the *matrix* represents the directed flow amongst a network (a complete digraph) of *n* nodes. + +The return value of *chord*(*matrix*) is an array of *chords*, where each chord represents the combined bidirectional flow between two nodes *i* and *j* (where *i* may be equal to *j*) and is an object with the following properties: + +* `source` - the source subgroup +* `target` - the target subgroup + +Each source and target subgroup is also an object with the following properties: + +* `startAngle` - the start angle in radians +* `endAngle` - the end angle in radians +* `value` - the flow value *matrix*[*i*][*j*] +* `index` - the node index *i* + +The chords are typically passed to [ribbon](./ribbon.md) to display the network relationships. + +The returned array includes only chord objects for which the value *matrix*[*i*][*j*] or *matrix*[*j*][*i*] is non-zero. Furthermore, the returned array only contains unique chords: a given chord *ij* represents the bidirectional flow from *i* to *j* *and* from *j* to *i*, and does not contain a duplicate chord *ji*; *i* and *j* are chosen such that the chord’s source always represents the larger of *matrix*[*i*][*j*] and *matrix*[*j*][*i*]. + +The *chords* array also defines a secondary array of length *n*, *chords*.groups, where each group represents the combined outflow for node *i*, corresponding to the elements *matrix*[*i*][0 … *n* - 1], and is an object with the following properties: + +* `startAngle` - the start angle in radians +* `endAngle` - the end angle in radians +* `value` - the total outgoing flow value for node *i* +* `index` - the node index *i* + +The groups are typically passed to [arc](../d3-shape/arc.md) to produce a donut chart around the circumference of the chord layout. + +## *chord*.padAngle(*angle*) {#chord_padAngle} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · If *angle* is specified, sets the pad angle between adjacent groups to the specified number in radians and returns this chord layout. If *angle* is not specified, returns the current pad angle, which defaults to zero. + +## *chord*.sortGroups(*compare*) {#chord_sortGroups} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · If *compare* is specified, sets the group comparator to the specified function or null and returns this chord layout. If *compare* is not specified, returns the current group comparator, which defaults to null. If the group comparator is non-null, it is used to sort the groups by their total outflow. See also [ascending](../d3-array/sort.md#ascending) and [descending](../d3-array/sort.md#descending). + +## *chord*.sortSubgroups(*compare*) {#chord_sortSubgroups} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · If *compare* is specified, sets the subgroup comparator to the specified function or null and returns this chord layout. If *compare* is not specified, returns the current subgroup comparator, which defaults to null. If the subgroup comparator is non-null, it is used to sort the subgroups corresponding to *matrix*[*i*][0 … *n* - 1] for a given group *i* by their total outflow. See also [ascending](../d3-array/sort.md#ascending) and [descending](../d3-array/sort.md#descending). + +## *chord*.sortChords(*compare*) {#chord_sortChords} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · If *compare* is specified, sets the chord comparator to the specified function or null and returns this chord layout. If *compare* is not specified, returns the current chord comparator, which defaults to null. If the chord comparator is non-null, it is used to sort the [chords](#_chord) by their combined flow; this only affects the *z*-order of the chords. See also [ascending](../d3-array/sort.md#ascending) and [descending](../d3-array/sort.md#descending). + +## chordDirected() {#chordDirected} + +[Examples](https://observablehq.com/@d3/directed-chord-diagram) · [Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · A chord layout for unidirectional flows. The chord from *i* to *j* is generated from the value in *matrix*[*i*][*j*] only. + +## chordTranspose() {#chordTranspose} + +[Source](https://github.com/d3/d3-chord/blob/main/src/chord.js) · A transposed chord layout. Useful to highlight outgoing (rather than incoming) flows. diff --git a/docs/d3-chord/ribbon.md b/docs/d3-chord/ribbon.md new file mode 100644 index 00000000000000..fd919f4f5189d8 --- /dev/null +++ b/docs/d3-chord/ribbon.md @@ -0,0 +1,145 @@ +# Ribbons + +A ribbon visually represents the volume of flow between two nodes in a [chord diagram](../d3-chord.md). Ribbons come in two varieties: [ribbon](#ribbon) represents a bidirectional flow, while [ribbonArrow](#ribbonArrow) represents a unidirectional flow. The latter is suitable for [chordDirected](./chord.md#chordDirected). + +## ribbon() {#ribbon} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · Creates a new ribbon generator with the default settings. + +```js +const ribbon = d3.ribbon(); +``` + +## *ribbon*(...*arguments*) {#_ribbon} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · Generates a ribbon for the given *arguments*. The *arguments* are arbitrary; they are propagated to the ribbon generator’s accessor functions along with the `this` object. For example, with the default settings, a [chord object](#_chord) expected: + +```js +ribbon({ + source: {startAngle: 0.7524114, endAngle: 1.1212972, radius: 240}, + target: {startAngle: 1.8617078, endAngle: 1.9842927, radius: 240} +}) // "M164.0162810494058,-175.21032946354026A240,240,0,0,1,216.1595644740915,-104.28347273835429Q0,0,229.9158815306728,68.8381247563705A240,240,0,0,1,219.77316791012538,96.43523560788266Q0,0,164.0162810494058,-175.21032946354026Z" +``` + +If the ribbon generator has a [context](#ribbon_context), then the ribbon is rendered to this context as a sequence of path method calls and this function returns void. Otherwise, a path data string is returned. + +## *ribbon*.source(*source*) {#ribbon_source} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *source* is specified, sets the source accessor to the specified function and returns this ribbon generator. If *source* is not specified, returns the current source accessor, which defaults to: + +```js +function source(d) { + return d.source; +} +``` + +## *ribbon*.target(*target*) {#ribbon_target} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *target* is specified, sets the target accessor to the specified function and returns this ribbon generator. If *target* is not specified, returns the current target accessor, which defaults to: + +```js +function target(d) { + return d.target; +} +``` + +## *ribbon*.radius(*radius*) {#ribbon_radius} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *radius* is specified, sets the source and target radius accessor to the specified function and returns this ribbon generator. For example to set a fixed radius of 240 pixels: + +```js +const ribbon = d3.ribbon().radius(240); +``` + +Now the arguments you pass to [*ribbon*](#_ribbon) do not need to specify a *radius* property on the source and target. + +```js +ribbon({ + source: {startAngle: 0.7524114, endAngle: 1.1212972}, + target: {startAngle: 1.8617078, endAngle: 1.9842927} +}) // "M164.0162810494058,-175.21032946354026A240,240,0,0,1,216.1595644740915,-104.28347273835429Q0,0,229.9158815306728,68.8381247563705A240,240,0,0,1,219.77316791012538,96.43523560788266Q0,0,164.0162810494058,-175.21032946354026Z" +``` + +If *radius* is not specified, returns the current source radius accessor, which defaults to: + +```js +function radius(d) { + return d.radius; +} +``` + +## *ribbon*.sourceRadius(*radius*) {#ribbon_sourceRadius} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *radius* is specified, sets the source radius accessor to the specified function and returns this ribbon generator. If *radius* is not specified, returns the current source radius accessor, which defaults to: + +```js +function radius(d) { + return d.radius; +} +``` + +## *ribbon*.targetRadius(*radius*) {#ribbon_targetRadius} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *radius* is specified, sets the target radius accessor to the specified function and returns this ribbon generator. If *radius* is not specified, returns the current target radius accessor, which defaults to: + +```js +function radius(d) { + return d.radius; +} +``` + +By convention, the target radius in asymmetric chord diagrams is typically inset from the source radius, resulting in a gap between the end of the directed link and its associated group arc. + +## *ribbon*.startAngle(*angle*) {#ribbon_startAngle} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *angle* is specified, sets the start angle accessor to the specified function and returns this ribbon generator. If *angle* is not specified, returns the current start angle accessor, which defaults to: + +```js +function startAngle(d) { + return d.startAngle; +} +``` + +The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. + +## *ribbon*.endAngle(*angle*) {#ribbon_endAngle} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *angle* is specified, sets the end angle accessor to the specified function and returns this ribbon generator. If *angle* is not specified, returns the current end angle accessor, which defaults to: + +```js +function endAngle(d) { + return d.endAngle; +} +``` + +The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. + +## *ribbon*.padAngle(*angle*) {#ribbon_padAngle} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *angle* is specified, sets the pad angle accessor to the specified function and returns this ribbon generator. If *angle* is not specified, returns the current pad angle accessor, which defaults to: + +```js +function padAngle() { + return 0; +} +``` + +The pad angle specifies the angular gap between adjacent ribbons. + +## *ribbon*.context(*context*) {#ribbon_context} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *context* is specified, sets the context and returns this ribbon generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated ribbon](#_ribbon) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated ribbon is returned. See also [d3-path](https://github.com/d3/d3-path). + +## ribbonArrow() {#ribbonArrow} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · Creates a new arrow ribbon generator with the default settings. See also [chordDirected](./chord.md#chordDirected). + +## *ribbonArrow*.headRadius(*radius*) {#ribbonArrow_headRadius} + +[Source](https://github.com/d3/d3-chord/blob/main/src/ribbon.js) · If *radius* is specified, sets the arrowhead radius accessor to the specified function and returns this ribbon generator. If *radius* is not specified, returns the current arrowhead radius accessor, which defaults to: + +```js +function headRadius() { + return 10; +} +``` diff --git a/docs/d3-color.md b/docs/d3-color.md new file mode 100644 index 00000000000000..314b5bd22d40ee --- /dev/null +++ b/docs/d3-color.md @@ -0,0 +1,244 @@ +# d3-color + +Even though your browser understands a lot about colors, it doesn’t offer much help in manipulating colors through JavaScript. The d3-color module therefore provides representations for various color spaces, allowing specification, conversion and manipulation. (Also see [d3-interpolate](./d3-interpolate.md) for color interpolation.) + +For example, take the color named “steelblue”: + +```js +const c = d3.color("steelblue"); // {r: 70, g: 130, b: 180, opacity: 1} +``` + +Let’s try converting it to HSL: + +```js +const c = d3.hsl("steelblue"); // {h: 207.27…, s: 0.44, l: 0.4902…, opacity: 1} +``` + +Now rotate the hue by 90°, bump up the saturation, and format as a string for CSS: + +```js +c.h += 90; +c.s += 0.2; +c + ""; // rgb(198, 45, 205) +``` + +To fade the color slightly: + +```js +c.opacity = 0.8; +c + ""; // rgba(198, 45, 205, 0.8) +``` + +In addition to the ubiquitous and machine-friendly [RGB](#rgb) and [HSL](#hsl) color space, d3-color supports color spaces that are designed for humans: + +* [CIELAB](#lab) (*a.k.a.* “Lab”) +* [CIELChab](#lch) (*a.k.a.* “LCh” or “HCL”) +* Dave Green’s [Cubehelix](#cubehelix) + +Cubehelix features monotonic lightness, while CIELAB and its polar form CIELChab are perceptually uniform. + +For additional color spaces, see: + +* [d3-cam16](https://github.com/d3/d3-cam16) +* [d3-cam02](https://github.com/connorgr/d3-cam02) +* [d3-hsv](https://github.com/d3/d3-hsv) +* [d3-hcg](https://github.com/d3/d3-hcg) +* [d3-hsluv](https://github.com/petulla/d3-hsluv) + +To measure color differences, see: + +* [d3-color-difference](https://github.com/Evercoder/d3-color-difference) + +## color(*specifier*) {#color} + +```js +d3.color("steelblue") // {r: 70, g: 130, b: 180, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Parses the specified [CSS Color Module Level 3](http://www.w3.org/TR/css3-color/#colorunits) *specifier* string, returning an [RGB](#rgb) or [HSL](#hsl) color, along with [CSS Color Module Level 4 hex](https://www.w3.org/TR/css-color-4/#hex-notation) *specifier* strings. If the specifier was not valid, null is returned. Some examples: + +* `rgb(255, 255, 255)` +* `rgb(10%, 20%, 30%)` +* `rgba(255, 255, 255, 0.4)` +* `rgba(10%, 20%, 30%, 0.4)` +* `hsl(120, 50%, 20%)` +* `hsla(120, 50%, 20%, 0.4)` +* `#ffeeaa` +* `#fea` +* `#ffeeaa22` +* `#fea2` +* `steelblue` + +The list of supported [named colors](http://www.w3.org/TR/SVG/types.html#ColorKeywords) is specified by CSS. + +Note: this function may also be used with `instanceof` to test if an object is a color instance. The same is true of color subclasses, allowing you to test whether a color is in a particular color space. + +## *color*.opacity {#color_opacity} + +```js +d3.color("steelblue").opacity // 1 +``` + +This color’s opacity, typically in the range [0, 1]. + +## *color*.rgb() {#color_rgb} + +```js +d3.color("hsl(120, 50%, 20%)").rgb() // {r: 25.5, g: 76.5, b: 25.5, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns the [RGB equivalent](#rgb) of this color. For RGB colors, that’s `this`. + +## *color*.copy(*values*) {#color_copy} + +```js +d3.color("steelblue").copy({opacity: 0.5}) // {r: 70, g: 130, b: 180, opacity: 0.5} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a copy of this color. If *values* is specified, any enumerable own properties of *values* are assigned to the new returned color. + +## *color*.brighter(*k*) {#color_brighter} + +```js +d3.color("steelblue").brighter(1) // {r: 100, g: 185.71428571428572, b: 257.14285714285717, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a brighter copy of this color. If *k* is specified, it controls how much brighter the returned color should be. If *k* is not specified, it defaults to 1. The behavior of this method is dependent on the implementing color space. + +## *color*.darker(*k*) {#color_darker} + +```js +d3.color("steelblue").darker(1) // {r: 49, g: 91, b: 126, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a darker copy of this color. If *k* is specified, it controls how much darker the returned color should be. If *k* is not specified, it defaults to 1. The behavior of this method is dependent on the implementing color space. + +## *color*.displayable() {#color_displayable} + +```js +d3.color("steelblue").displayable(1) // true +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns true if and only if the color is displayable on standard hardware. For example, this returns false for an RGB color if any channel value is less than zero or greater than 255 when rounded, or if the opacity is not in the range [0, 1]. + +## *color*.formatHex() {#color_formatHex} + +```js +d3.color("steelblue").formatHex() // "#4682b4" +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a hexadecimal string representing this color in RGB space, such as `#f7eaba`. If this color is not displayable, a suitable displayable color is returned instead. For example, RGB channel values greater than 255 are clamped to 255. + +## *color*.formatHex8() {#color_formatHex8} + +```js +d3.color("steelblue").formatHex8() // "#4682b4ff" +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a hexadecimal string representing this color in RGBA space, such as `#f7eaba90`. If this color is not displayable, a suitable displayable color is returned instead. For example, RGB channel values greater than 255 are clamped to 255. + +## *color*.formatHsl() {#color_formatHsl} + +```js +d3.color("yellow").formatHsl() // "hsl(60, 100%, 50%)" +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a string representing this color according to the [CSS Color Module Level 3 specification](https://www.w3.org/TR/css-color-3/#hsl-color), such as `hsl(257, 50%, 80%)` or `hsla(257, 50%, 80%, 0.2)`. If this color is not displayable, a suitable displayable color is returned instead by clamping S and L channel values to the interval [0, 100]. + +## *color*.formatRgb() {#color_formatRgb} + +```js +d3.color("yellow").formatRgb() // "rgb(255, 255, 0)" +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a string representing this color according to the [CSS Object Model specification](https://drafts.csswg.org/cssom/#serialize-a-css-component-value), such as `rgb(247, 234, 186)` or `rgba(247, 234, 186, 0.2)`. If this color is not displayable, a suitable displayable color is returned instead by clamping RGB channel values to the interval [0, 255]. + +## *color*.toString() {#color_toString} + +```js +d3.color("yellow").toString() // "rgb(255, 255, 0)" +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · An alias for [*color*.formatRgb](#color_formatRgb). + +## rgb(*color*) {#rgb} + +```js +d3.rgb("hsl(60, 100%, 50%)") // {r: 255, g: 255, b: 0, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Constructs a new [RGB](https://en.wikipedia.org/wiki/RGB_color_model) color. The channel values are exposed as `r`, `g` and `b` properties on the returned instance. Use the [RGB color picker](http://bl.ocks.org/mbostock/78d64ca7ef013b4dcf8f) to explore this color space. + +If *r*, *g* and *b* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the RGB color space. See [color](#color) for examples. If a [*color*](#color) instance is specified, it is converted to the RGB color space using [*color*.rgb](#color_rgb). Note that unlike [*color*.rgb](#color_rgb) this method *always* returns a new instance, even if *color* is already an RGB color. + +## *rgb*.clamp() {#rgb_clamp} + +```js +d3.rgb(300, 200, 100).clamp() // {r: 255, g: 200, b: 100, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a new RGB color where the `r`, `g`, and `b` channels are clamped to the range [0, 255] and rounded to the nearest integer value, and the `opacity` is clamped to the range [0, 1]. + +## hsl(*color*) {#hsl} + +```js +d3.hsl("yellow") // {h: 60, s: 1, l: 0.5, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Constructs a new [HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) color. The channel values are exposed as `h`, `s` and `l` properties on the returned instance. Use the [HSL color picker](http://bl.ocks.org/mbostock/debaad4fcce9bcee14cf) to explore this color space. + +If *h*, *s* and *l* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the HSL color space. See [color](#color) for examples. If a [*color*](#color) instance is specified, it is converted to the RGB color space using [*color*.rgb](#color_rgb) and then converted to HSL. (Colors already in the HSL color space skip the conversion to RGB.) + +## *hsl*.clamp() {#hsl_clamp} + +```js +d3.hsl(400, 2, 0.5).clamp() // {h: 40, s: 1, l: 0.5, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/color.js) · Returns a new HSL color where the `h` channel is clamped to the range [0, 360), and the `s`, `l`, and `opacity` channels are clamped to the range [0, 1]. + +## lab(*color*) {#lab} + +```js +d3.lab("red") // {l: 54.29173376861782, a: 80.8124553179771, b: 69.88504032350531, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/lab.js) · Constructs a new [CIELAB](https://en.wikipedia.org/wiki/Lab_color_space#CIELAB) color. The channel values are exposed as `l`, `a` and `b` properties on the returned instance. Use the [CIELAB color picker](http://bl.ocks.org/mbostock/9f37cc207c0cb166921b) to explore this color space. The value of *l* is typically in the range [0, 100], while *a* and *b* are typically in [-160, +160]. + +If *l*, *a* and *b* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the CIELAB color space. See [color](#color) for examples. If a [*color*](#color) instance is specified, it is converted to the RGB color space using [*color*.rgb](#color_rgb) and then converted to CIELAB. (Colors already in the CIELAB color space skip the conversion to RGB, and colors in the HCL color space are converted directly to CIELAB.) + +## gray(*l*, *opacity*) {#gray} + +```js +d3.gray(50) // {l: 50, a: 0, b: 0, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/lab.js) · Constructs a new [CIELAB](#lab) color with the specified *l* value and *a* = *b* = 0. + +## hcl(*color*) {#hcl} + +```js +d3.hcl("yellow") // {h: 99.57458688693687, c: 94.70776566727464, l: 97.60712516622824, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/lab.js) · Equivalent to [d3.lch](#lch), but with reversed argument order. + +## lch(*color*) {#lch} + +```js +d3.lch("yellow") // {h: 99.57458688693687, c: 94.70776566727464, l: 97.60712516622824, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/lab.js) · Constructs a new [CIELChab](https://en.wikipedia.org/wiki/CIELAB_color_space#Cylindrical_representation:_CIELCh_or_CIEHLC) color. The channel values are exposed as `l`, `c` and `h` properties on the returned instance. Use the [CIELChab color picker](http://bl.ocks.org/mbostock/3e115519a1b495e0bd95) to explore this color space. The value of *l* is typically in the range [0, 100], *c* is typically in [0, 230], and *h* is typically in [0, 360). + +If *l*, *c*, and *h* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to CIELChab color space. See [color](#color) for examples. If a [*color*](#color) instance is specified, it is converted to the RGB color space using [*color*.rgb](#color_rgb) and then converted to CIELChab. (Colors already in CIELChab color space skip the conversion to RGB, and colors in CIELAB color space are converted directly to CIELChab.) + +## cubehelix(*color*) {#cubehelix} + +```js +d3.cubehelix("yellow") // {h: 56.942171677321085, s: 4.614386868039714, l: 0.8900004504279901, opacity: 1} +``` + +[Source](https://github.com/d3/d3-color/blob/main/src/cubehelix.js) · Constructs a new [Cubehelix](http://www.mrao.cam.ac.uk/~dag/CUBEHELIX/) color. The channel values are exposed as `h`, `s` and `l` properties on the returned instance. + +If *h*, *s* and *l* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the Cubehelix color space. See [color](#color) for examples. If a [*color*](#color) instance is specified, it is converted to the RGB color space using [*color*.rgb](#color_rgb) and then converted to Cubehelix. (Colors already in the Cubehelix color space skip the conversion to RGB.) diff --git a/docs/d3-contour.md b/docs/d3-contour.md new file mode 100644 index 00000000000000..95ed1d2142152a --- /dev/null +++ b/docs/d3-contour.md @@ -0,0 +1,43 @@ + + +# d3-contour + + + +This module computes contour polygons by applying [marching squares](https://en.wikipedia.org/wiki/Marching_squares) to a rectangular grid of numeric values. For example, the contours above show the topography of [Maungawhau](https://en.wikipedia.org/wiki/Maungawhau_/_Mount_Eden). + +See one of: + +- [Contours](./d3-contour/contour.md) +- [Density estimation](./d3-contour/density.md) diff --git a/docs/d3-contour/contour.md b/docs/d3-contour/contour.md new file mode 100644 index 00000000000000..ae0810e1ecdd5f --- /dev/null +++ b/docs/d3-contour/contour.md @@ -0,0 +1,80 @@ +# Contour polygons + +For each [threshold value](#contours_thresholds), the [contour generator](#_contours) constructs a GeoJSON MultiPolygon geometry object representing the area where the input values are greater than or equal to the threshold value. The geometry is in planar coordinates, where ⟨i + 0.5, j + 0.5⟩ corresponds to element i + jn in the input values array. + +Here is an example that loads a GeoTIFF of surface temperatures, and another that blurs a noisy monochrome PNG to produce smooth contours of cloud fraction: + +[GeoTiff Contours](https://observablehq.com/@d3/geotiff-contours) + +[Cloud Contours](https://observablehq.com/@d3/cloud-contours) + +Since the contour polygons are GeoJSON, you can transform and display them using standard tools; see [geoPath](../d3-geo.md#geoPath), [geoProject](https://github.com/d3/d3-geo-projection/blob/main/README.md#geoProject) and [geoStitch](https://github.com/d3/d3-geo-projection/blob/main/README.md#geoStitch), for example. Here the above contours of surface temperature are displayed in the Natural Earth projection: + +[GeoTiff Contours II](https://observablehq.com/@d3/geotiff-contours-ii) + +Contour plots can also visualize continuous functions by sampling. Here is the Goldstein–Price function (a test function for global optimization) and a trippy animation of *sin*(*x* + *y*)*sin*(*x* - *y*): + +[Contours](https://observablehq.com/@d3/contours) + +[Animated Contours](https://observablehq.com/@d3/animated-contours) + +## contours() {#contours} + +[Examples](https://observablehq.com/collection/@d3/d3-contour) · [Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · Constructs a new contour generator with the default settings. + +```js +const contours = d3.contours() + .size([width, height]) + .thresholds([0, 1, 2, 3, 4]); +``` + +## *contours*(*values*) {#_contours} + +[Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · Computes the contours for the given array of *values*, returning an array of [GeoJSON](http://geojson.org/geojson-spec.html) [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) [geometry objects](http://geojson.org/geojson-spec.html#geometry-objects). + +```js +const polygons = contours(grid); +``` + +Each geometry object represents the area where the input values are greater than or equal to the corresponding [threshold value](#contours_thresholds); the threshold value for each geometry object is exposed as geometry.value. + +The input *values* must be an array of length n×m where [n, m] is the contour generator’s [size](#contours_size); furthermore, each values[i + jn] must represent the value at the position ⟨i, j⟩. For example, to construct a 256×256 grid for the [Goldstein–Price function](https://en.wikipedia.org/wiki/Test_functions_for_optimization) where -2 ≤ x ≤ 2 and -2 ≤ y ≤ 1: + +```js +var n = 256, m = 256, values = new Array(n * m); +for (var j = 0.5, k = 0; j < m; ++j) { + for (var i = 0.5; i < n; ++i, ++k) { + values[k] = goldsteinPrice(i / n * 4 - 2, 1 - j / m * 3); + } +} +``` +```js +function goldsteinPrice(x, y) { + return (1 + Math.pow(x + y + 1, 2) * (19 - 14 * x + 3 * x * x - 14 * y + 6 * x * x + 3 * y * y)) + * (30 + Math.pow(2 * x - 3 * y, 2) * (18 - 32 * x + 12 * x * x + 48 * y - 36 * x * y + 27 * y * y)); +} +``` + +The returned geometry objects are typically passed to [geoPath](../d3-geo.md#geoPath) to display, using null or [geoIdentity](../d3-geo.md#geoIdentity) as the associated projection. + +## *contours*.contour(*values*, *threshold*) {#contours_contour} + +[Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · Computes a single contour, returning a [GeoJSON](http://geojson.org/geojson-spec.html) [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) [geometry object](http://geojson.org/geojson-spec.html#geometry-objects) representing the area where the input values are greater than or equal to the given [*threshold* value](#contours_thresholds); the threshold value for each geometry object is exposed as geometry.value. + +The input *values* must be an array of length n×m where [n, m] is the contour generator’s [size](#contours_size); furthermore, each values[i + jn] must represent the value at the position ⟨i, j⟩. See [*contours*](#_contours) for an example. + +## *contours*.size(*size*) {#contours_size} + +[Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · If *size* is specified, sets the expected size of the input *values* grid to the [contour generator](#_contour) and returns the contour generator. The *size* is specified as an array \[n, m\] where n is the number of columns in the grid and m is the number of rows; *n* and *m* must be positive integers. If *size* is not specified, returns the current size which defaults to [1, 1]. + +## *contours*.smooth(*smooth*) {#contours_smooth} + +[Examples](https://observablehq.com/@d3/contours-smooth) · [Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · If *smooth* is specified, sets whether or not the generated contour polygons are smoothed using linear interpolation. If *smooth* is not specified, returns the current smoothing flag, which defaults to true. + +## *contours*.thresholds(*thresholds*) {#contours_thresholds} + +[Source](https://github.com/d3/d3-contour/blob/main/src/contours.js) · If *thresholds* is specified, sets the threshold generator to the specified function or array and returns this contour generator. If *thresholds* is not specified, returns the current threshold generator, which by default implements [Sturges’ formula](../d3-array/bin.md#thresholdSturges). + +Thresholds are defined as an array of values [*x0*, *x1*, …]. The first [generated contour](#_contour) corresponds to the area where the input values are greater than or equal to *x0*; the second contour corresponds to the area where the input values are greater than or equal to *x1*, and so on. Thus, there is exactly one generated MultiPolygon geometry object for each specified threshold value; the threshold value is exposed as geometry.value. + +If a *count* is specified instead of an array of *thresholds*, then the input values’ [extent](../d3-array/summarize.md#extent) will be uniformly divided into approximately *count* bins; see [ticks](../d3-array/ticks.md#ticks). diff --git a/docs/d3-contour/density.md b/docs/d3-contour/density.md new file mode 100644 index 00000000000000..3afad811f6fb67 --- /dev/null +++ b/docs/d3-contour/density.md @@ -0,0 +1,77 @@ +# Density estimation + +Contours can show the estimated density of point clouds, which is useful to avoid overplotting in large datasets. The [contourDensity](#contourDensity) method implements fast two-dimensional kernel density estimation. + +Here is a scatterplot showing the relationship between the idle duration and eruption duration for Old Faithful: + +[Density Contours](https://observablehq.com/@d3/density-contours) + +And here is a density contour plot showing the relationship between the weight and price of 53,940 diamonds: + +[Density Contours](https://observablehq.com/@d3/density-contours) + +## contourDensity() {#contourDensity} + +[Examples](https://observablehq.com/@d3/density-contours) · [Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · Constructs a new density estimator with the default settings. + +## *density*(*data*) {#_density} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · Estimates the density contours for the given array of *data*, returning an array of [GeoJSON](http://geojson.org/geojson-spec.html) [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) [geometry objects](http://geojson.org/geojson-spec.html#geometry-objects). + +Each geometry object represents the area where the estimated number of points per square pixel is greater than or equal to the corresponding [threshold value](#density_thresholds); the threshold value for each geometry object is exposed as geometry.value. The returned geometry objects are typically passed to [geoPath](https://github.com/d3/d3-geo/blob/main/README.md#geoPath) to display, using null or [geoIdentity](https://github.com/d3/d3-geo/blob/main/README.md#geoIdentity) as the associated projection. See also [contours](./contour.md). + +The x and y coordinate for each data point are computed using [*density*.x](#density_x) and [*density*.y](#density_y). In addition, [*density*.weight](#density_weight) indicates the relative contribution of each data point (default 1). The generated contours are only accurate within the estimator’s [defined size](#density_size). + +## *density*.x(*x*) {#density_x} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *x* is specified, sets the *x*-coordinate accessor. If *x* is not specified, returns the current *x*-coordinate accessor, which defaults to: + +```js +function x(d) { + return d[0]; +} +``` + +## *density*.y(*y*) {#density_y} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *y* is specified, sets the *y*-coordinate accessor. If *y* is not specified, returns the current *y*-coordinate accessor, which defaults to: + +```js +function y(d) { + return d[1]; +} +``` + +## *density*.weight(*weight*) {#density_weight} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *weight* is specified, sets the accessor for point weights. If *weight* is not specified, returns the current point weight accessor, which defaults to: + +```js +function weight() { + return 1; +} +``` + +## *density*.size(*size*) {#density_size} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *size* is specified, sets the size of the density estimator to the specified bounds and returns the estimator. The *size* is specified as an array \[width, height\], where width is the maximum *x*-value and height is the maximum *y*-value. If *size* is not specified, returns the current size which defaults to [960, 500]. The [estimated density contours](#_density) are only accurate within the defined size. + +## *density*.cellSize(*cellSize*) {#density_cellSize} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *cellSize* is specified, sets the size of individual cells in the underlying bin grid to the specified positive integer and returns the estimator. If *cellSize* is not specified, returns the current cell size, which defaults to 4. The cell size is rounded down to the nearest power of two. Smaller cells produce more detailed contour polygons, but are more expensive to compute. + +## *density*.thresholds(*thresholds*) {#density_thresholds} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *thresholds* is specified, sets the threshold generator to the specified function or array and returns this contour generator. If *thresholds* is not specified, returns the current threshold generator, which by default generates about twenty nicely-rounded density thresholds. + +Thresholds are defined as an array of values [*x0*, *x1*, …]. The first [generated density contour](#_density) corresponds to the area where the estimated density is greater than or equal to *x0*; the second contour corresponds to the area where the estimated density is greater than or equal to *x1*, and so on. Thus, there is exactly one generated MultiPolygon geometry object for each specified threshold value; the threshold value is exposed as geometry.value. The first value *x0* should typically be greater than zero. + +If a *count* is specified instead of an array of *thresholds*, then approximately *count* uniformly-spaced nicely-rounded thresholds will be generated; see [ticks](https://github.com/d3/d3-array/blob/main/README.md#ticks). + +## *density*.bandwidth(*bandwidth*) {#density_bandwidth} + +[Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · If *bandwidth* is specified, sets the bandwidth (the standard deviation) of the Gaussian kernel and returns the estimate. If *bandwidth* is not specified, returns the current bandwidth, which defaults to 20.4939…. The specified *bandwidth* is currently rounded to the nearest supported value by this implementation, and must be nonnegative. + +## *density*.contours(*data*) {#density_contours} + +[Examples](https://observablehq.com/@d3/density-contours-data) · [Source](https://github.com/d3/d3-contour/blob/main/src/density.js) · Return a *contour*(*value*) function that can be used to compute an arbitrary contour on the given data without needing to recompute the underlying grid. The returned *contour* function also exposes a *contour*.max value which represents the maximum density of the grid. diff --git a/docs/d3-delaunay.md b/docs/d3-delaunay.md new file mode 100644 index 00000000000000..2f87b7a1b3bc1d --- /dev/null +++ b/docs/d3-delaunay.md @@ -0,0 +1,13 @@ +# d3-delaunay + +

+

Georgy “The Voronator” Voronoy

+ +This is a fast library for computing the [Voronoi diagram](https://en.wikipedia.org/wiki/Voronoi_diagram) of a set of two-dimensional points. It is based on [Delaunator](https://github.com/mapbox/delaunator), a fast library for computing the [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation) using [sweep algorithms](https://github.com/mapbox/delaunator/blob/main/README.md#papers). The Voronoi diagram is constructed by connecting the circumcenters of adjacent triangles in the Delaunay triangulation. + +See one of: + +- [Delaunay triangulations](./d3-delaunay/delaunay.md) +- [Voronoi diagrams](./d3-delaunay/voronoi.md) + +For an interactive explanation of how this library works, see [The Delaunay’s Dual](https://observablehq.com/@mbostock/the-delaunays-dual). diff --git a/docs/d3-delaunay/delaunay.md b/docs/d3-delaunay/delaunay.md new file mode 100644 index 00000000000000..1b8a447d45465e --- /dev/null +++ b/docs/d3-delaunay/delaunay.md @@ -0,0 +1,324 @@ + + +# Delaunay triangulations + + + +The Delaunay triangulation is a triangular mesh formed from a set of points in *x* and *y*. No point is inside the circumcircle of any triangle, which is a nice geometric property for certain applications, and tends to avoid “sliver” triangles. The Delaunay triangulation is the dual of the [Voronoi diagram](./voronoi.md). + +## new Delaunay(*points*) {#Delaunay} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the Delaunay triangulation for the given flat array [*x0*, *y0*, *x1*, *y1*, …] of *points*. + +```js +const delaunay = new d3.Delaunay(Float64Array.of(0, 0, 0, 1, 1, 0, 1, 1)); +``` + +The given *points* may be any array-like type, but is typically a Float64Array. + +### *delaunay*.points {#delaunay_points} + +The coordinates of the points as an array [*x0*, *y0*, *x1*, *y1*, …]. + +### *delaunay*.halfedges {#delaunay_halfedges} + +The halfedge indexes as an Int32Array [*j0*, *j1*, …]. For each index 0 ≤ *i* < *halfedges*.length, there is a halfedge from triangle vertex *j* = *halfedges*[*i*] to triangle vertex *i*. Equivalently, this means that triangle ⌊*i* / 3⌋ is adjacent to triangle ⌊*j* / 3⌋. If *j* is negative, then triangle ⌊*i* / 3⌋ is an exterior triangle on the [convex hull](#delaunay_hull). For example, to render the internal edges of the Delaunay triangulation: + +```js +const {points, halfedges, triangles} = delaunay; +for (let i = 0, n = halfedges.length; i < n; ++i) { + const j = halfedges[i]; + if (j < i) continue; + const ti = triangles[i]; + const tj = triangles[j]; + context.moveTo(points[ti * 2], points[ti * 2 + 1]); + context.lineTo(points[tj * 2], points[tj * 2 + 1]); +} +``` + +See also [*delaunay*.render](#delaunay_render). + +### *delaunay*.hull {#delaunay_hull} + +An Int32Array of point indexes that form the convex hull in counterclockwise order. If the points are collinear, returns them ordered. + +See also [*delaunay*.renderHull](#delaunay_renderHull). + +### *delaunay*.triangles {#delaunay_triangles} + +The triangle vertex indexes as an Uint32Array [*i0*, *j0*, *k0*, *i1*, *j1*, *k1*, …]. Each contiguous triplet of indexes *i*, *j*, *k* forms a counterclockwise triangle. The coordinates of the triangle’s points can be found by going through [*delaunay*.points](#delaunay_points). For example, to render triangle *i*: + +```js +const {points, triangles} = delaunay; +const t0 = triangles[i * 3 + 0]; +const t1 = triangles[i * 3 + 1]; +const t2 = triangles[i * 3 + 2]; +context.moveTo(points[t0 * 2], points[t0 * 2 + 1]); +context.lineTo(points[t1 * 2], points[t1 * 2 + 1]); +context.lineTo(points[t2 * 2], points[t2 * 2 + 1]); +context.closePath(); +``` + +See also [*delaunay*.renderTriangle](#delaunay_renderTriangle). + +### *delaunay*.inedges {#delaunay_inedges} + +The incoming halfedge indexes as a Int32Array [*e0*, *e1*, *e2*, …]. For each point *i*, *inedges*[*i*] is the halfedge index *e* of an incoming halfedge. For coincident points, the halfedge index is -1; for points on the convex hull, the incoming halfedge is on the convex hull; for other points, the choice of incoming halfedge is arbitrary. The *inedges* table can be used to traverse the Delaunay triangulation; see also [*delaunay*.neighbors](#delaunay_neighbors). + +## Delaunay.from(*points*, *fx*, *fy*, *that*) {#Delaunay_from} + +:::tip +Delaunay.from is typically slower than [new Delaunay](#Delaunay) because it requires materializing a new flat array of *xy* coordinates. +::: + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the Delaunay triangulation for the given array or iterable of *points*. If *fx* and *fy* are not specified, then *points* is assumed to be an array of two-element arrays of numbers: [[*x0*, *y0*], [*x1*, *y1*], …]. + +```js +const delaunay = d3.Delaunay.from([[0, 0], [0, 1], [1, 0], [1, 1]]); +``` + +Otherwise, *fx* and *fy* are functions that are invoked for each element in the *points* array in order, and must return the respective x and y coordinate for each point. + +```js +const delaunay = d3.Delaunay.from([{x: 0, y: 0}, {x: 0, y: 1}, {x: 1, y: 0}, {x: 1, y: 1}], (d) => d.x, (d) => d.y); +``` + +If *that* is specified, the functions *fx* and *fy* are invoked with *that* as *this*. (See [Array.from](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/from) for reference.) + +## *delaunay*.find(*x*, *y*, *i*) {#delaunay_find} + + + +```js-vue +delaunay.find({{findState.x}}, {{findState.y}}) // {{findState.i}} +``` + +[Examples](https://observablehq.com/@d3/delaunay-find) · [Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the index of the input point that is closest to the specified point ⟨*x*, *y*⟩. The search is started at the specified point *i*. If *i* is not specified, it defaults to zero. + +## *delaunay*.neighbors(*i*) {#delaunay_neighbors} + + + +```js-vue +delaunay.neighbors({{neighborsState.i}}) // [{{neighborsState.N.join(", ")}}] +``` + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns an iterable over the indexes of the neighboring points to the specified point *i*. The iterable is empty if *i* is a coincident point. + +## *delaunay*.render(*context*) {#delaunay_render} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Renders the edges of the Delaunay triangulation to the specified *context*. The specified *context* must implement the *context*.moveTo and *context*.lineTo methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *delaunay*.renderHull(*context*) {#delaunay_renderHull} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Renders the convex hull of the Delaunay triangulation to the specified *context*. The specified *context* must implement the *context*.moveTo and *context*.lineTo methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *delaunay*.renderTriangle(*i*, *context*) {#delaunay_renderTriangle} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Renders triangle *i* of the Delaunay triangulation to the specified *context*. The specified *context* must implement the *context*.moveTo, *context*.lineTo and *context*.closePath methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *delaunay*.renderPoints(*context*, *radius*) {#delaunay_renderPoints} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Renders the input points of the Delaunay triangulation to the specified *context* as circles with the specified *radius*. If *radius* is not specified, it defaults to 2. The specified *context* must implement the *context*.moveTo and *context*.arc methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *delaunay*.hullPolygon() {#delaunay_hullPolygon} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the closed polygon [[*x0*, *y0*], [*x1*, *y1*], …, [*x0*, *y0*]] representing the convex hull. See also [*delaunay*.renderHull](#delaunay_renderHull). + +## *delaunay*.trianglePolygons() {#delaunay_trianglePolygons} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns an iterable over the [polygons for each triangle](#delaunay_trianglePolygon), in order. See also [*delaunay*.renderTriangle](#delaunay_renderTriangle). + +## *delaunay*.trianglePolygon(*i*) {#delaunay_trianglePolygon} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the closed polygon [[*x0*, *y0*], [*x1*, *y1*], [*x2*, *y2*], [*x0*, *y0*]] representing the triangle *i*. See also [*delaunay*.renderTriangle](#delaunay_renderTriangle). + +## *delaunay*.update() {#delaunay_update} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Recomputes the triangulation after the points have been modified in-place. + +## *delaunay*.voronoi(*bounds*) {#delaunay_voronoi} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the [Voronoi diagram](./voronoi.md) for the given Delaunay triangulation. When rendering, the diagram will be clipped to the specified *bounds* = [*xmin*, *ymin*, *xmax*, *ymax*]. + +```js +const delaunay = d3.Delaunay.from(points); +const voronoi = delaunay.voronoi([0, 0, 640, 480]); +``` + +If *bounds* is not specified, it defaults to [0, 0, 960, 500]. The Voronoi diagram is returned even in degenerate cases where no triangulation exists — namely 0, 1 or 2 points, and collinear points. diff --git a/docs/d3-delaunay/voronoi.md b/docs/d3-delaunay/voronoi.md new file mode 100644 index 00000000000000..c98aceeca10fae --- /dev/null +++ b/docs/d3-delaunay/voronoi.md @@ -0,0 +1,183 @@ + + +# Voronoi diagrams + + + +Given a set of points, the Voronoi diagram partitions the plane into cells representing the region of the plane that is closest to the corresponding point. The Voronoi diagram is the dual of the [Delaunay triangulation](./delaunay.md). + +## *delaunay*.voronoi(*bounds*) {#delaunay_voronoi} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/delaunay.js) · Returns the Voronoi diagram for the given [Delaunay triangulation](./delaunay.md). When rendering, the diagram will be clipped to the specified *bounds* = [*xmin*, *ymin*, *xmax*, *ymax*]. + +```js +const delaunay = d3.Delaunay.from([[0, 0], [0, 100], [100, 0], [100, 100]]); +const voronoi = delaunay.voronoi([0, 0, 640, 480]); +``` + +If *bounds* is not specified, it defaults to [0, 0, 960, 500]. The Voronoi diagram is returned even in degenerate cases where no triangulation exists — namely 0, 1 or 2 points, and collinear points. + +### *voronoi*.delaunay + +The Voronoi diagram’s associated [Delaunay triangulation](#delaunay). + +### *voronoi*.circumcenters + +The [circumcenters](http://mathworld.wolfram.com/Circumcenter.html) of the Delaunay triangles as a Float64Array [*cx0*, *cy0*, *cx1*, *cy1*, …]. Each contiguous pair of coordinates *cx*, *cy* is the circumcenter for the corresponding triangle. These circumcenters form the coordinates of the Voronoi cell polygons. + +### *voronoi*.vectors + +A Float64Array [*vx0*, *vy0*, *wx0*, *wy0*, …] where each non-zero quadruple describes an open (infinite) cell on the outer hull, giving the directions of two open half-lines. + +### *voronoi*.xmin
*voronoi*.ymin
*voronoi*.xmax
*voronoi*.ymax {#voronoi_bounds} + +The bounds of the viewport [*xmin*, *ymin*, *xmax*, *ymax*] for rendering the Voronoi diagram. These values only affect the rendering methods ([*voronoi*.render](#voronoi_render), [*voronoi*.renderBounds](#voronoi_renderBounds), [*voronoi*.renderCell](#voronoi_renderCell)). + +## *voronoi*.contains(*i*, *x*, *y*) {#voronoi_contains} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/cell.js) · Returns true if the cell with the specified index *i* contains the specified point ⟨*x*, *y*⟩; *i.e.*, whether the point *i* is the closest point in the diagram to the specified point. (This method is not affected by the associated Voronoi diagram’s viewport [bounds](#voronoi_bounds).) + +## *voronoi*.neighbors(*i*) {#voronoi_neighbors} + + + +```js-vue +voronoi.neighbors({{neighborsState.i}}) // [{{neighborsState.N.join(", ")}}] +``` + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Returns an iterable over the indexes of the cells that share a common edge with the specified cell *i*. Voronoi neighbors are always neighbors on the Delaunay graph, but the converse is false when the common edge has been clipped out by the Voronoi diagram’s viewport. + +## *voronoi*.render(*context*) {#voronoi_render} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Renders the mesh of Voronoi cells to the specified *context*. The specified *context* must implement the *context*.moveTo and *context*.lineTo methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *voronoi*.renderBounds(*context*) {#voronoi_renderBounds} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Renders the viewport extent to the specified *context*. The specified *context* must implement the *context*.rect method from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). Equivalent to *context*.rect(*voronoi*.xmin, *voronoi*.ymin, *voronoi*.xmax - *voronoi*.xmin, *voronoi*.ymax - *voronoi*.ymin). If a *context* is not specified, an SVG path string is returned instead. + +## *voronoi*.renderCell(*i*, *context*) {#voronoi_renderCell} + + + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Renders the cell with the specified index *i* to the specified *context*. The specified *context* must implement the *context*.moveTo , *context*.lineTo and *context*.closePath methods from the [CanvasPathMethods API](https://www.w3.org/TR/2dcontext/#canvaspathmethods). If a *context* is not specified, an SVG path string is returned instead. + +## *voronoi*.cellPolygons() {#voronoi_cellPolygons} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Returns an iterable over the non-empty [polygons for each cell](#voronoi_cellPolygon), with the cell index as property. See also [*voronoi*.renderCell](#voronoi_renderCell). + +## *voronoi*.cellPolygon(*i*) {#voronoi_cellPolygon} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Returns the convex, closed polygon [[*x0*, *y0*], [*x1*, *y1*], …, [*x0*, *y0*]] representing the cell for the specified point *i*. See also [*voronoi*.renderCell](#voronoi_renderCell). + +## *voronoi*.update() {#voronoi_update} + +[Source](https://github.com/d3/d3-delaunay/blob/main/src/voronoi.js) · Updates the Voronoi diagram and underlying triangulation after the points have been modified in-place — useful for Lloyd’s relaxation. Calls [*delaunay*.update](./delaunay.md#delaunay_update) on the underlying Delaunay triangulation. diff --git a/docs/d3-dispatch.md b/docs/d3-dispatch.md new file mode 100644 index 00000000000000..bd4033de43f577 --- /dev/null +++ b/docs/d3-dispatch.md @@ -0,0 +1,65 @@ +# d3-dispatch + +Dispatching is a low-level interaction mechanism that allows you to register named callbacks and then call them with arbitrary arguments. A variety of D3 interaction components, such as [d3-drag](./d3-drag.md), use [dispatch](#dispatch) to emit events to listeners. Think of this as [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) except every listener has a well-defined name so it’s easy to remove or replace them. + +For example, to create a dispatch for *start* and *end* events: + +```js +const dispatch = d3.dispatch("start", "end"); +``` + +You can then register callbacks for these events using [*dispatch*.on](#dispatch_on): + +```js +dispatch.on("start", callback1); +dispatch.on("start.foo", callback2); +dispatch.on("end", callback3); +``` + +Then, you can invoke all the *start* callbacks using [*dispatch*.call](#dispatch_call) or [*dispatch*.apply](#dispatch_apply): + +```js +dispatch.call("start"); +``` + +Like *function*.call, you may also specify the `this` context and any arguments: + +```js +dispatch.call("start", {about: "I am a context object"}, "I am an argument"); +``` + + + +## dispatch(...*types*) {#dispatch} + +[Source](https://github.com/d3/d3-dispatch/blob/main/src/dispatch.js) · Creates a new dispatch for the specified event *types*. Each *type* is a string, such as `"start"` or `"end"`. + +## *dispatch*.on(*typenames*, *callback*) {#dispatch_on} + +[Source](https://github.com/d3/d3-dispatch/blob/main/src/dispatch.js) · Adds, removes or gets the *callback* for the specified *typenames*. If a *callback* function is specified, it is registered for the specified (fully-qualified) *typenames*. If a callback was already registered for the given *typenames*, the existing callback is removed before the new callback is added. + +The specified *typenames* is a string, such as `start` or `end.foo`. The type may be optionally followed by a period (`.`) and a name; the optional name allows multiple callbacks to be registered to receive events of the same type, such as `start.foo` and `start.bar`. To specify multiple typenames, separate typenames with spaces, such as `start end` or `start.foo start.bar`. + +To remove all callbacks for a given name `foo`, say `dispatch.on(".foo", null)`. + +If *callback* is not specified, returns the current callback for the specified *typenames*, if any. If multiple typenames are specified, the first matching callback is returned. + +## *dispatch*.copy() {#dispatch_copy} + +[Source](https://github.com/d3/d3-dispatch/blob/main/src/dispatch.js) · Returns a copy of this dispatch object. Changes to this dispatch do not affect the returned copy and *vice versa*. + +## *dispatch*.call(*type*, *that*, ...*arguments*) {#dispatch_call} + +[Source](https://github.com/d3/d3-dispatch/blob/main/src/dispatch.js) · Like [*function*.call](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call), invokes each registered callback for the specified *type*, passing the callback the specified *...*argument**, with *that* as the `this` context. See [*dispatch*.apply](#dispatch_apply) for more information. + +## *dispatch*.apply(*type*, *that*, *arguments*) {#dispatch_apply} + +[Source](https://github.com/d3/d3-dispatch/blob/main/src/dispatch.js) · Like [*function*.apply](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call), invokes each registered callback for the specified *type*, passing the callback the specified *arguments*, with *that* as the `this` context. For example, if you wanted to dispatch your *custom* callbacks after handling a native *click* event, while preserving the current `this` context and arguments, you could say: + +```js +selection.on("click", function() { + dispatch.apply("custom", this, arguments); +}); +``` + +You can pass whatever arguments you want to callbacks; most commonly, you might create an object that represents an event, or pass the current datum (*d*) and index (*i*). See [function.call](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call) and [function.apply](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Apply) for further information. diff --git a/docs/d3-drag.md b/docs/d3-drag.md new file mode 100644 index 00000000000000..39f5b94ac45c0b --- /dev/null +++ b/docs/d3-drag.md @@ -0,0 +1,220 @@ +# d3-drag + +[Examples](https://observablehq.com/collection/@d3/d3-drag) · [Drag-and-drop](https://en.wikipedia.org/wiki/Drag_and_drop) is a popular interaction method for manipulating spatial elements: move the pointer to an object, press and hold to grab it, “drag” the object to a new location, and release to “drop”. D3’s drag behavior provides a flexible abstraction for drag-and-drop. For example, you can drag nodes in a [force-directed graph](./d3-force.md): + +[Force-Directed Graph](https://observablehq.com/@d3/force-directed-graph) + +Or a simulation of colliding circles: + +[Force Dragging II](https://observablehq.com/@d3/drag-collisions) + +The drag behavior isn’t just for moving elements around; there are a variety of ways to respond to a drag gesture. For example, you can use it to lasso elements in a scatterplot, or to paint lines on a canvas: + +[Line Drawing](https://observablehq.com/@d3/draw-me) + +The drag behavior can be combined with other behaviors, such as [d3-zoom](./d3-zoom.md) for zooming: + +[Drag & Zoom II](https://observablehq.com/@d3/drag-zoom) + +The drag behavior is agnostic about the DOM, so you can use it with SVG, HTML or even Canvas! And you can extend it with advanced selection techniques, such as a Voronoi overlay or a closest-target search: + +[Circle Dragging IV](https://observablehq.com/@d3/circle-dragging-iii)[Circle Dragging II](https://observablehq.com/@d3/circle-dragging-ii) + +The drag behavior unifies mouse and touch input and avoids browser quirks. In the future the drag behavior will support [Pointer Events](https://www.w3.org/TR/pointerevents/), too. + +## drag() {#drag} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · Creates a new drag behavior. The returned behavior, [*drag*](#_drag), is both an object and a function, and is typically applied to selected elements via [*selection*.call](./d3-selection/control-flow.md#selection_call). + +```js +const drag = d3.drag(); +``` + +## *drag*(*selection*) {#_drag} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · Applies this drag behavior to the specified [*selection*](./d3-selection.md). This function is typically not invoked directly, and is instead invoked via [*selection*.call](./d3-selection/control-flow.md#selection_call). For example, to instantiate a drag behavior and apply it to a selection: + +```js +d3.selectAll(".node").call(d3.drag().on("start", started)); +``` + +Internally, the drag behavior uses [*selection*.on](./d3-selection/events.md#selection_on) to bind the necessary event listeners for dragging. The listeners use the name `.drag`, so you can subsequently unbind the drag behavior as follows: + +```js +selection.on(".drag", null); +``` + +Applying the drag behavior also sets the [-webkit-tap-highlight-color](https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/AdjustingtheTextSize/AdjustingtheTextSize.html#//apple_ref/doc/uid/TP40006510-SW5) style to transparent, disabling the tap highlight on iOS. If you want a different tap highlight color, remove or re-apply this style after applying the drag behavior. + +## *drag*.container(*container*) {#drag_container} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *container* is specified, sets the container accessor to the specified object or function and returns the drag behavior. If *container* is not specified, returns the current container accessor, which defaults to: + +```js +function container() { + return this.parentNode; +} +``` + +The *container* of a drag gesture determines the coordinate system of subsequent [drag events](#drag-events), affecting *event*.x and *event*.y. The element returned by the container accessor is subsequently passed to [pointer](./d3-selection/events.md#pointer) to determine the local coordinates of the pointer. + +The default container accessor returns the parent node of the element in the originating selection (see [*drag*](#_drag)) that received the initiating input event. This is often appropriate when dragging SVG or HTML elements, since those elements are typically positioned relative to a parent. For dragging graphical elements with a Canvas, however, you may want to redefine the container as the initiating element itself: + +```js +function container() { + return this; +} +``` + +Alternatively, the container may be specified as the element directly, such as `drag.container(canvas)`. + + +## *drag*.filter(*filter*) {#drag_filter} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *filter* is specified, sets the event filter to the specified function and returns the drag behavior. If *filter* is not specified, returns the current filter, which defaults to: + +```js +function filter(event) { + return !event.ctrlKey && !event.button; +} +``` + +If the filter returns falsey, the initiating event is ignored and no drag gestures are started. Thus, the filter determines which input events are ignored; the default filter ignores mousedown events on secondary buttons, since those buttons are typically intended for other purposes, such as the context menu. + +## *drag*.touchable(*touchable*) {#drag_touchable} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *touchable* is specified, sets the touch support detector to the specified function and returns the drag behavior. If *touchable* is not specified, returns the current touch support detector, which defaults to: + +```js +function touchable() { + return navigator.maxTouchPoints || ("ontouchstart" in this); +} +``` + +Touch event listeners are only registered if the detector returns truthy for the corresponding element when the drag behavior is [applied](#_drag). The default detector works well for most browsers that are capable of touch input, but not all; Chrome’s mobile device emulator, for example, fails detection. + +## *drag*.subject(*subject*) {#drag_subject} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *subject* is specified, sets the subject accessor to the specified object or function and returns the drag behavior. If *subject* is not specified, returns the current subject accessor, which defaults to: + +```js +function subject(event, d) { + return d == null ? {x: event.x, y: event.y} : d; +} +``` + +The *subject* of a drag gesture represents *the thing being dragged*. It is computed when an initiating input event is received, such as a mousedown or touchstart, immediately before the drag gesture starts. The subject is then exposed as *event*.subject on subsequent [drag events](#drag-events) for this gesture. + +The default subject is the [datum](./d3-selection/joining.md#selection_datum) of the element in the originating selection (see [*drag*](#_drag)) that received the initiating input event; if this datum is undefined, an object representing the coordinates of the pointer is created. When dragging circle elements in SVG, the default subject is thus the datum of the circle being dragged. With [Canvas](https://html.spec.whatwg.org/multipage/scripting.html#the-canvas-element), the default subject is the canvas element’s datum (regardless of where on the canvas you click). In this case, a custom subject accessor would be more appropriate, such as one that picks the closest circle to the mouse within a given search *radius*: + +```js +function subject(event) { + let n = circles.length, + i, + dx, + dy, + d2, + s2 = radius * radius, + circle, + subject; + + for (i = 0; i < n; ++i) { + circle = circles[i]; + dx = event.x - circle.x; + dy = event.y - circle.y; + d2 = dx * dx + dy * dy; + if (d2 < s2) subject = circle, s2 = d2; + } + + return subject; +} +``` + +:::tip +If necessary, the above can be accelerated using [*quadtree*.find](./d3-quadtree.md#quadtree_find), [*simulation*.find](./d3-force.md#simulation_find) or [*delaunay*.find](./d3-delaunay/delaunay.md#delaunay_find). +::: + +The returned subject should be an object that exposes `x` and `y` properties, so that the relative position of the subject and the pointer can be preserved during the drag gesture. If the subject is null or undefined, no drag gesture is started for this pointer; however, other starting touches may yet start drag gestures. See also [*drag*.filter](#drag_filter). + +The subject of a drag gesture may not be changed after the gesture starts. The subject accessor is invoked with the same context and arguments as [*selection*.on](./d3-selection/events.md#selection_on) listeners: the current event (`event`) and datum `d`, with the `this` context as the current DOM element. During the evaluation of the subject accessor, `event` is a beforestart [drag event](#drag-events). Use *event*.sourceEvent to access the initiating input event and *event*.identifier to access the touch identifier. The *event*.x and *event*.y are relative to the [container](#drag_container), and are computed using [pointer](./d3-selection/events.md#pointer). + +## *drag*.clickDistance(*distance*) {#drag_clickDistance} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *distance* is specified, sets the maximum distance that the mouse can move between mousedown and mouseup that will trigger a subsequent click event. If at any point between mousedown and mouseup the mouse is greater than or equal to *distance* from its position on mousedown, the click event following mouseup will be suppressed. If *distance* is not specified, returns the current distance threshold, which defaults to zero. The distance threshold is measured in client coordinates ([*event*.clientX](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX) and [*event*.clientY](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY)). + +## *drag*.on(*typenames*, *listener*) {#drag_on} + +[Source](https://github.com/d3/d3-drag/blob/main/src/drag.js) · If *listener* is specified, sets the event *listener* for the specified *typenames* and returns the drag behavior. If an event listener was already registered for the same type and name, the existing listener is removed before the new listener is added. If *listener* is null, removes the current event listeners for the specified *typenames*, if any. If *listener* is not specified, returns the first currently-assigned listener matching the specified *typenames*, if any. When a specified event is dispatched, each *listener* will be invoked with the same context and arguments as [*selection*.on](./d3-selection/events.md#selection_on) listeners: the current event (`event`) and datum `d`, with the `this` context as the current DOM element. + +The *typenames* is a string containing one or more *typename* separated by whitespace. Each *typename* is a *type*, optionally followed by a period (`.`) and a *name*, such as `drag.foo` and `drag.bar`; the name allows multiple listeners to be registered for the same *type*. The *type* must be one of the following: + +* `start` - after a new pointer becomes active (on mousedown or touchstart). +* `drag` - after an active pointer moves (on mousemove or touchmove). +* `end` - after an active pointer becomes inactive (on mouseup, touchend or touchcancel). + +See [*dispatch*.on](./d3-dispatch.md#dispatch_on) for more. + +Changes to registered listeners via *drag*.on during a drag gesture *do not affect* the current drag gesture. Instead, you must use [*event*.on](#event_on), which also allows you to register temporary event listeners for the current drag gesture. **Separate events are dispatched for each active pointer** during a drag gesture. For example, if simultaneously dragging multiple subjects with multiple fingers, a start event is dispatched for each finger, even if both fingers start touching simultaneously. See [Drag Events](#drag-events) for more. + +## dragDisable(*window*) {#dragDisable} + +[Source](https://github.com/d3/d3-drag/blob/main/src/nodrag.js) · Prevents native drag-and-drop and text selection on the specified *window*. As an alternative to preventing the default action of mousedown events (see [#9](https://github.com/d3/d3-drag/issues/9)), this method prevents undesirable default actions following mousedown. In supported browsers, this means capturing dragstart and selectstart events, preventing the associated default actions, and immediately stopping their propagation. In browsers that do not support selection events, the user-select CSS property is set to none on the document element. This method is intended to be called on mousedown, followed by [dragEnable](#dragEnable) on mouseup. + +## dragEnable(*window*, *noclick*) {#dragEnable} + +[Source](https://github.com/d3/d3-drag/blob/main/src/nodrag.js) · Allows native drag-and-drop and text selection on the specified *window*; undoes the effect of [dragDisable](#dragDisable). This method is intended to be called on mouseup, preceded by [dragDisable](#dragDisable) on mousedown. If *noclick* is true, this method also temporarily suppresses click events. The suppression of click events expires after a zero-millisecond timeout, such that it only suppress the click event that would immediately follow the current mouseup event, if any. + +## Drag events + +When a [drag event listener](#drag_on) is invoked, it receives the current drag event as its first argument. The *event* object exposes several fields: + +* `target` - the associated [drag behavior](#drag). +* `type` - the string “start”, “drag” or “end”; see [*drag*.on](#drag_on). +* `subject` - the drag subject, defined by [*drag*.subject](#drag_subject). +* `x` - the new *x*-coordinate of the subject; see [*drag*.container](#drag_container). +* `y` - the new y coordinate of the subject; see [*drag*.container](#drag_container). +* `dx` - the change in *x*-coordinate since the previous drag event. +* `dy` - the change in y coordinate since the previous drag event. +* `identifier` - the string “mouse”, or a numeric [touch identifier](https://www.w3.org/TR/touch-events/#widl-Touch-identifier). +* `active` - the number of currently active drag gestures (on start and end, not including this one). +* `sourceEvent` - the underlying input event, such as mousemove or touchmove. + +The *event*.active field is useful for detecting the first start event and the last end event in a sequence of concurrent drag gestures: it is zero when the first drag gesture starts, and zero when the last drag gesture ends. + +The *event* object also exposes the [*event*.on](#event_on) method. + +This table describes how the drag behavior interprets native events: + +| Event | Listening Element | Drag Event | Default Prevented? | +| ------------ | ----------------- | ---------- | ------------------ | +| mousedown⁵ | selection | start | no¹ | +| mousemove² | window¹ | drag | yes | +| mouseup² | window¹ | end | yes | +| dragstart² | window | - | yes | +| selectstart² | window | - | yes | +| click³ | window | - | yes | +| touchstart | selection | start | no⁴ | +| touchmove | selection | drag | yes | +| touchend | selection | end | no⁴ | +| touchcancel | selection | end | no⁴ | + +The propagation of all consumed events is [immediately stopped](https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation). If you want to prevent some events from initiating a drag gesture, use [*drag*.filter](#drag_filter). + +¹ Necessary to capture events outside an iframe; see [#9](https://github.com/d3/d3-drag/issues/9). +
² Only applies during an active, mouse-based gesture; see [#9](https://github.com/d3/d3-drag/issues/9). +
³ Only applies immediately after some mouse-based gestures; see [*drag*.clickDistance](#drag_clickDistance). +
⁴ Necessary to allow [click emulation](https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW7) on touch input; see [#9](https://github.com/d3/d3-drag/issues/9). +
⁵ Ignored if within 500ms of a touch gesture ending; assumes [click emulation](https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW7). + +## *event*.on(*typenames*, *listener*) {#event_on} + +[Source](https://github.com/d3/d3-drag/blob/main/src/event.js) · Equivalent to [*drag*.on](#drag_on), but only applies to the current drag gesture. Before the drag gesture starts, a [copy](./d3-dispatch.md#dispatch_copy) of the current drag [event listeners](#drag_on) is made. This copy is bound to the current drag gesture and modified by *event*.on. This is useful for temporary listeners that only receive events for the current drag gesture. For example, this start event listener registers temporary drag and end event listeners as closures: + +```js +function started(event) { + const circle = d3.select(this).classed("dragging", true); + const dragged = (event, d) => circle.raise().attr("cx", d.x = event.x).attr("cy", d.y = event.y); + const ended = () => circle.classed("dragging", false); + event.on("drag", dragged).on("end", ended); +} +``` diff --git a/docs/d3-dsv.md b/docs/d3-dsv.md new file mode 100644 index 00000000000000..06cb37c950da80 --- /dev/null +++ b/docs/d3-dsv.md @@ -0,0 +1,328 @@ +# d3-dsv + +This module provides a parser and formatter for delimiter-separated values, most commonly [comma-separated values](https://en.wikipedia.org/wiki/Comma-separated_values) (CSV) or tab-separated values (TSV). These tabular formats are popular with spreadsheet programs such as Microsoft Excel, and are often more space-efficient than JSON. This implementation is based on [RFC 4180](http://tools.ietf.org/html/rfc4180). + +For example, to parse: + +```js +d3.csvParse("foo,bar\n1,2") // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]] +``` +```js +d3.tsvParse("foo\tbar\n1\t2") // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]] +``` + +To format: + +```js +d3.csvFormat([{foo: "1", bar: "2"}]) // "foo,bar\n1,2" +``` +```js +d3.tsvFormat([{foo: "1", bar: "2"}]) // "foo\tbar\n1\t2" +``` + +To use a different delimiter, such as “|” for pipe-separated values, use [d3.dsvFormat](#dsvFormat): + +```js +d3.dsvFormat("|").parse("foo|bar\n1|2")) // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]] +``` + +For easy loading of DSV files in a browser, see [d3-fetch](./d3-fetch.md)’s [d3.csv](./d3-fetch.md#csv), [d3.tsv](./d3-fetch.md#tsv) and [d3.dsv](./d3-fetch.md#dsv) methods. + +## dsvFormat(*delimiter*) {#dsvFormat} + +```js +const csv = d3.dsvFormat(","); +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Constructs a new DSV parser and formatter for the specified *delimiter*. The *delimiter* must be a single character (*i.e.*, a single 16-bit code unit); so, ASCII delimiters are fine, but emoji delimiters are not. + +## *dsv*.parse(*string*, *row*) {#dsv_parse} + +:::warning CAUTION +This method requires the unsafe-eval [content security policy](#content-security-policy). +::: + +```js +d3.csvParse("foo,bar\n1,2") // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]] +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Parses the specified *string*, which must be in the delimiter-separated values format with the appropriate delimiter, returning an array of objects representing the parsed rows. + +Unlike [*dsv*.parseRows](#dsv_parseRows), this method requires that the first line of the DSV content contains a delimiter-separated list of column names; these column names become the attributes on the returned objects. For example, consider the following CSV file: + +``` +Year,Make,Model,Length +1997,Ford,E350,2.34 +2000,Mercury,Cougar,2.38 +``` + +The resulting JavaScript array is: + +```js +[ + {"Year": "1997", "Make": "Ford", "Model": "E350", "Length": "2.34"}, + {"Year": "2000", "Make": "Mercury", "Model": "Cougar", "Length": "2.38"} +] +``` + +The returned array also exposes a `columns` property containing the column names in input order (in contrast to Object.keys, whose iteration order is arbitrary). For example: + +```js +data.columns // ["Year", "Make", "Model", "Length"] +``` + +If the column names are not unique, only the last value is returned for each name; to access all values, use [*dsv*.parseRows](#dsv_parseRows) instead (see [example](https://observablehq.com/@d3/parse-csv-with-duplicate-column-names)). + +If a *row* conversion function is not specified, field values are strings. For safety, there is no automatic conversion to numbers, dates, or other types. In some cases, JavaScript may coerce strings to numbers for you automatically (for example, using the `+` operator), but better is to specify a *row* conversion function. See [d3.autoType](#autoType) for a convenient *row* conversion function that infers and coerces common types like numbers and strings. + +If a *row* conversion function is specified, the specified function is invoked for each row, being passed an object representing the current row (`d`), the index (`i`) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, the row is skipped and will be omitted from the array returned by *dsv*.parse; otherwise, the returned value defines the corresponding row object. For example: + +```js +const data = d3.csvParse(string, (d) => { + return { + year: new Date(+d.Year, 0, 1), // lowercase and convert "Year" to Date + make: d.Make, // lowercase + model: d.Model, // lowercase + length: +d.Length // lowercase and convert "Length" to number + }; +}); +``` + +Note: using `+` or `Number` rather than [parseInt](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt) or [parseFloat](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseFloat) is typically faster, though more restrictive. For example, `"30px"` when coerced using `+` returns `NaN`, while parseInt and parseFloat return `30`. + +## *dsv*.parseRows(*string*, *row*) {#dsv_parseRows} + +```js +d3.csvParseRows("foo,bar\n1,2") // [["foo", "bar"], ["1", "2"]] +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Parses the specified *string*, which must be in the delimiter-separated values format with the appropriate delimiter, returning an array of arrays representing the parsed rows. + +Unlike [*dsv*.parse](#dsv_parse), this method treats the header line as a standard row, and should be used whenever DSV content does not contain a header. Each row is represented as an array rather than an object. Rows may have variable length. For example, consider the following CSV file, which notably lacks a header line: + +``` +1997,Ford,E350,2.34 +2000,Mercury,Cougar,2.38 +``` + +The resulting JavaScript array is: + +```js +[ + ["1997", "Ford", "E350", "2.34"], + ["2000", "Mercury", "Cougar", "2.38"] +] +``` + +If a *row* conversion function is not specified, field values are strings. For safety, there is no automatic conversion to numbers, dates, or other types. In some cases, JavaScript may coerce strings to numbers for you automatically (for example, using the `+` operator), but better is to specify a *row* conversion function. See [d3.autoType](#autoType) for a convenient *row* conversion function that infers and coerces common types like numbers and strings. + +If a *row* conversion function is specified, the specified function is invoked for each row, being passed an array representing the current row (`d`), the index (`i`) starting at zero for the first row, and the array of column names. If the returned value is null or undefined, the row is skipped and will be omitted from the array returned by *dsv*.parse; otherwise, the returned value defines the corresponding row object. For example: + +```js +const data = d3.csvParseRows(string, (d, i) => { + return { + year: new Date(+d[0], 0, 1), // convert first column to Date + make: d[1], + model: d[2], + length: +d[3] // convert fourth column to number + }; +}); +``` + +In effect, *row* is similar to applying a [map](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) and [filter](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) operator to the returned rows. + +## *dsv*.format(*rows*, *columns*) {#dsv_format} + +```js +d3.csvFormat([{foo: "1", bar: "2"}]) // "foo,bar\n1,2" +``` +```js +d3.csvFormat([{foo: "1", bar: "2"}], ["foo"]) // "foo\n1" +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Formats the specified array of object *rows* as delimiter-separated values, returning a string. This operation is the inverse of [*dsv*.parse](#dsv_parse). Each row will be separated by a newline (`\n`), and each column within each row will be separated by the delimiter (such as a comma, `,`). Values that contain either the delimiter, a double-quote (`"`) or a newline will be escaped using double-quotes. + +If *columns* is not specified, the list of column names that forms the header row is determined by the union of all properties on all objects in *rows*; the order of columns is nondeterministic. If *columns* is specified, it is an array of strings representing the column names. For example: + +```js +const string = d3.csvFormat(data, ["year", "make", "model", "length"]); +``` + +All fields on each row object will be coerced to strings. If the field value is null or undefined, the empty string is used. If the field value is a Date, the [ECMAScript date-time string format](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-date-time-string-format) (a subset of ISO 8601) is used: for example, dates at UTC midnight are formatted as `YYYY-MM-DD`. For more control over which and how fields are formatted, first map *rows* to an array of array of string, and then use [*dsv*.formatRows](#dsv_formatRows). + +## *dsv*.formatBody(*rows*, *columns*) {#dsv_formatBody} + +```js +d3.csvFormatBody([{foo: "1", bar: "2"}]) // "1,2" +``` +```js +d3.csvFormatBody([{foo: "1", bar: "2"}], ["foo"]) // "1" +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Equivalent to [*dsv*.format](#dsv_format), but omits the header row. This is useful, for example, when appending rows to an existing file. + +## *dsv*.formatRows(*rows*) {#dsv_formatRows} + +```js +d3.csvFormatRows([["foo", "bar"], ["1", "2"]]) // "foo,bar\n1,2" +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Formats the specified array of array of string *rows* as delimiter-separated values, returning a string. This operation is the reverse of [*dsv*.parseRows](#dsv_parseRows). Each row will be separated by a newline (`\n`), and each column within each row will be separated by the delimiter (such as a comma, `,`). Values that contain either the delimiter, a double-quote (") or a newline will be escaped using double-quotes. + +To convert an array of objects to an array of arrays while explicitly specifying the columns, use [*array*.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map). For example: + +```js +const string = d3.csvFormatRows(data.map((d, i) => { + return [ + d.year.getUTCFullYear(), // Assuming d.year is a Date object. + d.make, + d.model, + d.length + ]; +})); +``` + +If you like, you can also [*array*.concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) this result with an array of column names to generate the first row: + +```js +const string = d3.csvFormatRows([[ + "year", + "make", + "model", + "length" + ]].concat(data.map((d, i) => { + return [ + d.year.getUTCFullYear(), // Assuming d.year is a Date object. + d.make, + d.model, + d.length + ]; +}))); +``` + +## *dsv*.formatRow(*row*) {#dsv_formatRow} + +```js +d3.csvFormatRow(["foo", "bar"]) // "foo,bar" +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Formats a single array *row* of strings as delimiter-separated values, returning a string. Each column within the row will be separated by the delimiter (such as a comma, `,`). Values that contain either the delimiter, a double-quote (") or a newline will be escaped using double-quotes. + +## *dsv*.formatValue(*value*) {#dsv_formatValue} + +```js +d3.csvFormatValue("foo") // "foo" +``` + +[Source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js) · Format a single *value* or string as a delimiter-separated value, returning a string. A value that contains either the delimiter, a double-quote (") or a newline will be escaped using double-quotes. + +## csvParse(*string*, *row*) {#csvParse} + +Equivalent to [`d3.dsvFormat(",").parse`](#dsv_parse). + +## csvParseRows(*string*, *row*) {#csvParseRows} + +Equivalent to [`d3.dsvFormat(",").parseRows`](#dsv_parseRows). + +## csvFormat(*rows*, *columns*) {#csvFormat} + +Equivalent to [`d3.dsvFormat(",").format`](#dsv_format). + +## csvFormatBody(*rows*, *columns*) {#csvFormatBody} + +Equivalent to [`d3.dsvFormat(",").formatBody`](#dsv_formatBody). + +## csvFormatRows(*rows*) {#csvFormatRows} + +Equivalent to [`d3.dsvFormat(",").formatRows`](#dsv_formatRows). + +## csvFormatRow(*row*) {#csvFormatRow} + +Equivalent to [`d3.dsvFormat(",").formatRow`](#dsv_formatRow). + +## csvFormatValue(*value*) {#csvFormatValue} + +Equivalent to [`d3.dsvFormat(",").formatValue`](#dsv_formatValue). + +## tsvParse(*string*, *row*) {#tsvParse} + +Equivalent to [`d3.dsvFormat("\t").parse`](#dsv_parse). + +## tsvParseRows(*string*, *row*) {#tsvParseRows} + +Equivalent to [`d3.dsvFormat("\t").parseRows`](#dsv_parseRows). + +## tsvFormat(*rows*, *columns*) {#tsvFormat} + +Equivalent to [`d3.dsvFormat("\t").format`](#dsv_format). + +## tsvFormatBody(*rows*, *columns*) {#tsvFormatBody} + +Equivalent to [`d3.dsvFormat("\t").formatBody`](#dsv_formatBody). + +## tsvFormatRows(*rows*) {#tsvFormatRows} + +Equivalent to [`d3.dsvFormat("\t").formatRows`](#dsv_formatRows). + +## tsvFormatRow(*row*) {#tsvFormatRow} + +Equivalent to [`d3.dsvFormat("\t").formatRow`](#dsv_formatRow). + +## tsvFormatValue(*value*) {#tsvFormatValue} + +Equivalent to [`d3.dsvFormat("\t").formatValue`](#dsv_formatValue). + +## autoType(*object*) {#autoType} + +[Source](https://github.com/d3/d3-dsv/blob/main/src/autoType.js) · Given an *object* (or array) representing a parsed row, infers the types of values on the *object* and coerces them accordingly, returning the mutated *object*. This function is intended to be used as a *row* accessor function in conjunction with [*dsv*.parse](#dsv_parse) and [*dsv*.parseRows](#dsv_parseRow). For example, consider the following CSV file: + +``` +Year,Make,Model,Length +1997,Ford,E350,2.34 +2000,Mercury,Cougar,2.38 +``` + +When used with [d3.csvParse](#csvParse), + +```js +d3.csvParse(string, d3.autoType) +``` + +the resulting JavaScript array is: + +```js +[ + {"Year": 1997, "Make": "Ford", "Model": "E350", "Length": 2.34}, + {"Year": 2000, "Make": "Mercury", "Model": "Cougar", "Length": 2.38} +] +``` + +Type inference works as follows. For each *value* in the given *object*, the [trimmed](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) value is computed; the value is then re-assigned as follows: + +1. If empty, then `null`. +1. If exactly `"true"`, then `true`. +1. If exactly `"false"`, then `false`. +1. If exactly `"NaN"`, then `NaN`. +1. Otherwise, if [coercible to a number](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-tonumber-applied-to-the-string-type), then a number. +1. Otherwise, if a [date-only or date-time string](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-date-time-string-format), then a Date. +1. Otherwise, a string (the original untrimmed value). + +Values with leading zeroes may be coerced to numbers; for example `"08904"` coerces to `8904`. However, extra characters such as commas or units (*e.g.*, `"$1.00"`, `"(123)"`, `"1,234"` or `"32px"`) will prevent number coercion, resulting in a string. + +Date strings must be in ECMAScript’s subset of the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). When a date-only string such as YYYY-MM-DD is specified, the inferred time is midnight UTC; however, if a date-time string such as YYYY-MM-DDTHH:MM is specified without a time zone, it is assumed to be local time. + +Automatic type inference is primarily intended to provide safe, predictable behavior in conjunction with [*dsv*.format](#dsv_format) and [*dsv*.formatRows](#dsv_formatRows) for common JavaScript types. If you need different behavior, you should implement your own row accessor function. + +For more, see [the d3.autoType notebook](https://observablehq.com/@d3/d3-autotype). + +## Content security policy + +If a [content security policy](http://www.w3.org/TR/CSP/) is in place, note that [*dsv*.parse](#dsv_parse) requires `unsafe-eval` in the `script-src` directive, due to the (safe) use of dynamic code generation for fast parsing. (See [source](https://github.com/d3/d3-dsv/blob/main/src/dsv.js).) Alternatively, use [*dsv*.parseRows](#dsv_parseRows). + +## Byte-order marks + +DSV files sometimes begin with a [byte order mark (BOM)](https://en.wikipedia.org/wiki/Byte_order_mark); saving a spreadsheet in CSV UTF-8 format from Microsoft Excel, for example, will include a BOM. On the web this is not usually a problem because the [UTF-8 decode algorithm](https://encoding.spec.whatwg.org/#utf-8-decode) specified in the Encoding standard removes the BOM. Node.js, on the other hand, [does not remove the BOM](https://github.com/nodejs/node-v0.x-archive/issues/1918) when decoding UTF-8. + +If the BOM is not removed, the first character of the text is a zero-width non-breaking space. So if a CSV file with a BOM is parsed by [d3.csvParse](#csvParse), the first column’s name will begin with a zero-width non-breaking space. This can be hard to spot since this character is usually invisible when printed. + +To remove the BOM before parsing, consider using [strip-bom](https://www.npmjs.com/package/strip-bom). diff --git a/docs/d3-ease.md b/docs/d3-ease.md new file mode 100644 index 00000000000000..8c024b0debe7a3 --- /dev/null +++ b/docs/d3-ease.md @@ -0,0 +1,308 @@ + + +# d3-ease + +[Examples](https://observablehq.com/@d3/easing) · *Easing* is a method of distorting time to control apparent motion in animation. It is most commonly used for [slow-in, slow-out](https://en.wikipedia.org/wiki/12_basic_principles_of_animation#Slow_In_and_Slow_Out). By easing time, [animated transitions](./d3-transition.md) are smoother and exhibit more plausible motion. + +The easing types in this module implement the [ease method](#_ease) which takes a normalized time *t* and returns the corresponding “eased” time *tʹ*. Both the normalized time and the eased time are typically in the range [0,1], where 0 represents the start of the animation and 1 represents the end; some easing types, such as [easeElastic](#easeElastic), may return eased times slightly outside this range. A good easing type should return 0 if *t* = 0 and 1 if *t* = 1. + +These easing types are largely based on work by [Robert Penner](http://robertpenner.com/easing/). + +## *ease*(*t*) {#_ease} + +Given the specified normalized time *t*, typically in the range [0,1], returns the “eased” time *tʹ*, also typically in [0,1]. 0 represents the start of the animation and 1 represents the end. A good implementation returns 0 if *t* = 0 and 1 if *t* = 1. For example, to apply [easeCubic](#easeCubic) easing: + +```js +const te = d3.easeCubic(t); +``` + +To apply custom [elastic](#easeElastic) easing, create your easing function before the animation starts: + +```js +const ease = d3.easeElastic.period(0.4); +``` + +Then during the animation, apply the easing function: + +```js +const te = ease(t); +``` + +See also [*transition*.ease](./d3-transition/timing.md#transition_ease). + +## easeLinear {#easeLinear} + + + +[Source](https://github.com/d3/d3-ease/blob/main/src/linear.js) · Linear easing; the identity function; *linear*(*t*) returns *t*. + +## easePoly {#easePoly} + +[Source](https://github.com/d3/d3-ease/blob/main/src/poly.js) · Alias for [easePolyInOut](#easePolyInOut). + +### easePolyIn {#easePolyIn} + + + +Polynomial easing; raises *t* to the specified [exponent](#easePoly_exponent). If the exponent is not specified, it defaults to 3, equivalent to [easeCubicIn](#easeCubicIn). + +### easePolyOut {#easePolyOut} + + + +Reverse polynomial easing; equivalent to 1 - [easePolyIn](#easePolyIn)(1 - *t*). If the exponent is not specified, it defaults to 3, equivalent to [easeCubicOut](#easeCubicOut). + +### easePolyInOut {#easePolyInOut} + + + +Symmetric polynomial easing; scales [easePolyIn](#easePolyIn) for *t* in 0–0.5 and [easePolyOut](#easePolyOut) for *t* in 0.5–1. If the exponent is not specified, it defaults to 3, equivalent to [easeCubic](#easeCubic). + +### easePoly.exponent(*e*) {#easePoly_exponent} + +

+ +

+ + + +Returns a new polynomial easing with the specified exponent *e*. For example, to create equivalents of [easeLinear](#easeLinear), [easeQuad](#easeQuad), and [easeCubic](#easeCubic): + +```js +const linear = d3.easePoly.exponent(1); +const quad = d3.easePoly.exponent(2); +const cubic = d3.easePoly.exponent(3); +``` + +## easeQuad {#easeQuad} + +[Source](https://github.com/d3/d3-ease/blob/main/src/quad.js) · Alias for [easeQuadInOut](#easeQuadInOut). + +### easeQuadIn {#easeQuadIn} + + + +Quadratic easing; equivalent to [easePolyIn](#easePolyIn).[exponent](#easePoly_exponent)(2). + +### easeQuadOut {#easeQuadOut} + + + +Reverse quadratic easing; equivalent to 1 - [easeQuadIn](#easeQuadIn)(1 - *t*). Also equivalent to [easePolyOut](#easePolyOut).[exponent](#easePoly_exponent)(2). + +### easeQuadInOut {#easeQuadInOut} + + + +Symmetric quadratic easing; scales [easeQuadIn](#easeQuadIn) for *t* in 0–0.5 and [easeQuadOut](#easeQuadOut) for *t* in 0.5–1. Also equivalent to [easePoly](#easePoly).[exponent](#easePoly_exponent)(2). + +## easeCubic {#easeCubic} + +[Source](https://github.com/d3/d3-ease/blob/main/src/cubic.js) · Alias for [easeCubicInOut](#easeCubicInOut). + +### easeCubicIn {#easeCubicIn} + + + +Cubic easing; equivalent to [easePolyIn](#easePolyIn).[exponent](#easePoly_exponent)(3). + +### easeCubicOut {#easeCubicOut} + + + +Reverse cubic easing; equivalent to 1 - [easeCubicIn](#easeCubicIn)(1 - *t*). Also equivalent to [easePolyOut](#easePolyOut).[exponent](#easePoly_exponent)(3). + +### easeCubicInOut {#easeCubicInOut} + + + +Symmetric cubic easing; scales [easeCubicIn](#easeCubicIn) for *t* in 0–0.5 and [easeCubicOut](#easeCubicOut) for *t* in 0.5–1. Also equivalent to [easePoly](#easePoly).[exponent](#easePoly_exponent)(3). + +## easeSin {#easeSin} + +[Source](https://github.com/d3/d3-ease/blob/main/src/sin.js) · Alias for [easeSinInOut](#easeSinInOut). + +### easeSinIn {#easeSinIn} + + + +Sinusoidal easing; returns sin(*t*). + +### easeSinOut {#easeSinOut} + + + +Reverse sinusoidal easing; equivalent to 1 - [easeSinIn](#easeSinIn)(1 - *t*). + +### easeSinInOut {#easeSinInOut} + + + +Symmetric sinusoidal easing; scales [easeSinIn](#easeSinIn) for *t* in 0–0.5 and [easeSinOut](#easeSinOut) for *t* in 0.5–1. + +## easeExp {#easeExp} + +[Source](https://github.com/d3/d3-ease/blob/main/src/exp.js) · Alias for [easeExpInOut](#easeExpInOut). + +### easeExpIn {#easeExpIn} + + + +Exponential easing; raises 2 to the exponent 10 × (*t* - 1). + +### easeExpOut {#easeExpOut} + + + +Reverse exponential easing; equivalent to 1 - [easeExpIn](#easeExpIn)(1 - *t*). + +### easeExpInOut {#easeExpInOut} + + + +Symmetric exponential easing; scales [easeExpIn](#easeExpIn) for *t* in 0–0.5 and [easeExpOut](#easeExpOut) for *t* in 0.5–1. + +## easeCircle {#easeCircle} + +[Source](https://github.com/d3/d3-ease/blob/main/src/circle.js) · Alias for [easeCircleInOut](#easeCircleInOut). + +### easeCircleIn {#easeCircleIn} + + + +Circular easing. + +### easeCircleOut {#easeCircleOut} + + + +Reverse circular easing; equivalent to 1 - [easeCircleIn](#easeCircleIn)(1 - *t*). + +### easeCircleInOut {#easeCircleInOut} + + + +Symmetric circular easing; scales [easeCircleIn](#easeCircleIn) for *t* in 0–0.5 and [easeCircleOut](#easeCircleOut) for *t* in 0.5–1. + +## easeElastic {#easeElastic} + +[Source](https://github.com/d3/d3-ease/blob/main/src/elastic.js) · Alias for [easeElasticOut](#easeElasticOut). + +### easeElasticIn {#easeElasticIn} + + + +Elastic easing, like a rubber band. The [amplitude](#easeElastic_amplitude) and [period](#easeElastic_period) of the oscillation are configurable; if not specified, they default to 1 and 0.3, respectively. + +### easeElasticOut {#easeElasticOut} + + + +Reverse elastic easing; equivalent to 1 - [elasticIn](#easeElasticIn)(1 - *t*). + +### easeElasticInOut {#easeElasticInOut} + + + +Symmetric elastic easing; scales [elasticIn](#easeElasticIn) for *t* in 0–0.5 and [elasticOut](#easeElasticOut) for *t* in 0.5–1. + +### easeElastic.amplitude(*a*) {#easeElastic_amplitude} + +

+ +

+ + + +Returns a new elastic easing with the specified amplitude *a*. The amplitude *a* must be greater than or equal to 1. + +### easeElastic.period(*p*) {#easeElastic_period} + +

+ +

+ + + +Returns a new elastic easing with the specified period *p*. + +## easeBack {#easeBack} + +[Source](https://github.com/d3/d3-ease/blob/main/src/back.js) · Alias for [easeBackInOut](#easeBackInOut). + +### easeBackIn {#easeBackIn} + + + +[Anticipatory](https://en.wikipedia.org/wiki/12_basic_principles_of_animation#Anticipation) easing like a dancer bending her knees before jumping off the floor. The degree of [overshoot](#easeBack_overshoot) is configurable; if not specified, it defaults to 1.70158. + +### easeBackOut {#easeBackOut} + + + +Reverse anticipatory easing; equivalent to 1 - [easeBackIn](#easeBackIn)(1 - *t*). + +### easeBackInOut {#easeBackInOut} + + + +Symmetric anticipatory easing; scales [easeBackIn](#easeBackIn) for *t* in 0–0.5 and [easeBackOut](#easeBackOut) for *t* in 0.5–1. + +### easeBack.overshoot(*s*) {#easeBack_overshoot} + +

+ +

+ + + +Returns a new back easing with the specified overshoot *s*. + +## easeBounce {#easeBounce} + +[Source](https://github.com/d3/d3-ease/blob/main/src/bounce.js) · Alias for [easeBounceOut](#easeBounceOut). + +### easeBounceIn {#easeBounceIn} + + + +Bounce easing, like a rubber ball. + +### easeBounceOut {#easeBounceOut} + + + +Reverse bounce easing; equivalent to 1 - [easeBounceIn](#easeBounceIn)(1 - *t*). + +### easeBounceInOut {#easeBounceInOut} + + + +Symmetric bounce easing; scales [easeBounceIn](#easeBounceIn) for *t* in 0–0.5 and [easeBounceOut](#easeBounceOut) for *t* in 0.5–1. diff --git a/docs/d3-fetch.md b/docs/d3-fetch.md new file mode 100644 index 00000000000000..685c9a7084083a --- /dev/null +++ b/docs/d3-fetch.md @@ -0,0 +1,120 @@ +# d3-fetch + +This module provides convenient parsing on top of [Fetch](https://fetch.spec.whatwg.org/). For example, to load a text file: + +```js +const text = await d3.text("hello-world.txt"); // "Hello, world!" +``` + +To load and parse a CSV file: + +```js +const data = await d3.csv("hello-world.csv"); // [{"Hello": "world"}, …] +``` + +This module has built-in support for parsing [JSON](#json), [CSV](#csv), and [TSV](#tsv). You can parse additional formats by using [text](#text) directly. (This module replaced [d3-request](https://github.com/d3/d3-request).) + +## blob(*input*, *init*) {#blob} + +```js +const blob = await d3.blob("example.db"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/blob.js) · Fetches the binary file at the specified *input* URL as a Blob. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. + +## buffer(*input*, *init*) {#buffer} + +```js +const buffer = await d3.buffer("example.db"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/buffer.js) · Fetches the binary file at the specified *input* URL as an ArrayBuffer. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. + +## csv(*input*, *init*, *row*) {#csv} + +```js +const data = await d3.csv("example.csv"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/dsv.js) · Equivalent to [d3.dsv](#dsv) with the comma character as the delimiter. + +## dsv(*delimiter*, *input*, *init*, *row*) {#dsv} + +```js +const data = await d3.dsv(",", "example.csv"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/dsv.js) · Fetches the [DSV](https://github.com/d3/d3-dsv) file at the specified *input* URL. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. An optional *row* conversion function may be specified to map and filter row objects to a more-specific representation; see [*dsv*.parse](https://github.com/d3/d3-dsv#dsv_parse) for details. For example: + +```js +const data = await d3.dsv(",", "example.csv", (d) => { + return { + year: new Date(+d.Year, 0, 1), // convert "Year" column to Date + make: d.Make, + model: d.Model, + length: +d.Length // convert "Length" column to number + }; +}); +``` + +If only one of *init* and *row* is specified, it is interpreted as the *row* conversion function if it is a function, and otherwise an *init* object. See also [d3.csv](#csv) and [d3.tsv](#tsv). + +## html(*input*, *init*) {#html} + +```js +const document = await d3.html("example.html"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/xml.js) · Fetches the file at the specified *input* URL as [text](#text) and then [parses it](https://developer.mozilla.org/docs/Web/API/DOMParser) as HTML. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. + +## image(*input*, *init*) {#image} + +```js +const image = await d3.image("example.png"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/image.js) · Fetches the image at the specified *input* URL. If *init* is specified, sets any additional properties on the image before loading. For example, to enable an anonymous [cross-origin request](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image): + +```js +const image = await d3.image("https://example.com/image.png", {crossOrigin: "anonymous"}); +``` + +## json(*input*, *init*) {#json} + +```js +const data = await d3.json("example.json"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/json.js) · Fetches the [JSON](http://json.org) file at the specified *input* URL. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. If the server returns a status code of [204 No Content](https://developer.mozilla.org/docs/Web/HTTP/Status/204) or [205 Reset Content](https://developer.mozilla.org/docs/Web/HTTP/Status/205), the promise resolves to `undefined`. + +## svg(*input*, *init*) {#svg} + +```js +const document = await d3.svg("example.svg"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/xml.js) · Fetches the file at the specified *input* URL as [text](#text) and then [parses it](https://developer.mozilla.org/docs/Web/API/DOMParser) as SVG. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. + +## text(*input*, *init*) {#text} + +```js +const text = await d3.text("example.txt"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/text.js) · Fetches the text file at the specified *input* URL. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. + +## tsv(input, init, row) {#tsv} + +```js +const data = await d3.tsv("example.tsv"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/dsv.js) · Equivalent to [d3.dsv](#dsv) with the tab character as the delimiter. + +## xml(*input*, *init*) {#xml} + +```js +const document = await d3.xml("example.xml"); +``` + +[Source](https://github.com/d3/d3-fetch/blob/main/src/xml.js) · Fetches the file at the specified *input* URL as [text](#text) and then [parses it](https://developer.mozilla.org/docs/Web/API/DOMParser) as XML. If *init* is specified, it is passed along to the underlying call to [fetch](https://fetch.spec.whatwg.org/#fetch-method); see [RequestInit](https://fetch.spec.whatwg.org/#requestinit) for allowed fields. diff --git a/docs/d3-force.md b/docs/d3-force.md new file mode 100644 index 00000000000000..a071b6f1809071 --- /dev/null +++ b/docs/d3-force.md @@ -0,0 +1,50 @@ +# d3-force + +This module implements a [velocity Verlet](https://en.wikipedia.org/wiki/Verlet_integration) numerical integrator for simulating physical forces on particles. Force simulations can be used to visualize [networks](https://observablehq.com/@d3/force-directed-graph) and [hierarchies](https://observablehq.com/@d3/force-directed-tree): + +[Force-Directed Graph](https://observablehq.com/@d3/force-directed-graph) + +[Force-Directed Tree](https://observablehq.com/@d3/force-directed-tree) + +You can also simulate circles (disks) with collision, such as for [bubble charts](http://www.nytimes.com/interactive/2012/09/06/us/politics/convention-word-counts.html): + +[Collision Detection](https://observablehq.com/@d3/collision-detection) + +You can even use it as a rudimentary physics engine, say to simulate cloth: + +[Force-Directed Lattice](https://observablehq.com/@d3/force-directed-lattice) + +To use this module, create a [simulation](#simulation) for an array of [nodes](./d3-force/simulation.md#simulation_nodes), and compose the desired [forces](./d3-force/simulation.md#simulation_force). Then [listen](./d3-force/simulation.md#simulation_on) for tick events to render the nodes as they update in your preferred graphics system, such as Canvas or SVG. + +See one of: + +* [Force simulations](./d3-force/simulation.md) +* [Center force](./d3-force/center.md) +* [Collide force](./d3-force/collide.md) +* [Link force](./d3-force/link.md) +* [Many-body force](./d3-force/many-body.md) +* [Position forces](./d3-force/position.md) + +## Custom forces + +A *force* is a function that modifies nodes’ positions or velocities. It can simulate a physical force such as electrical charge or gravity, or it can resolve a geometric constraint such as keeping nodes within a bounding box or keeping linked nodes a fixed distance apart. For example, here is a force that moves nodes towards the origin: + +```js +function force(alpha) { + for (let i = 0, n = nodes.length, node, k = alpha * 0.1; i < n; ++i) { + node = nodes[i]; + node.vx -= node.x * k; + node.vy -= node.y * k; + } +} +``` + +Forces typically read the node’s current position ⟨*x*,*y*⟩ and then mutate the node’s velocity ⟨*vx*,*vy*⟩. Forces may also “peek ahead” to the anticipated next position of the node, ⟨*x* + *vx*,*y* + *vy*⟩; this is necessary for resolving geometric constraints through [iterative relaxation](https://en.wikipedia.org/wiki/Relaxation_\(iterative_method\)). Forces may also modify the position directly, which is sometimes useful to avoid adding energy to the simulation, such as when recentering the simulation in the viewport. + +### *force*(*alpha*) {#_force} + +Applies this force, optionally observing the specified *alpha*. Typically, the force is applied to the array of nodes previously passed to [*force*.initialize](#force_initialize), however, some forces may apply to a subset of nodes, or behave differently. For example, [forceLink](./d3-force/link.md) applies to the source and target of each link. + +### *force*.initialize(*nodes*) {#force_initialize} + +Supplies the array of *nodes* and *random* source to this force. This method is called when a force is bound to a simulation via [*simulation*.force](./d3-force/simulation.md#simulation_force) and when the simulation’s nodes change via [*simulation*.nodes](./d3-force/simulation.md#simulation_nodes). A force may perform necessary work during initialization, such as evaluating per-node parameters, to avoid repeatedly performing work during each application of the force. diff --git a/docs/d3-force/center.md b/docs/d3-force/center.md new file mode 100644 index 00000000000000..766e075a9ace92 --- /dev/null +++ b/docs/d3-force/center.md @@ -0,0 +1,23 @@ +# Center force + +The center force translates nodes uniformly so that the mean position of all nodes (the center of mass if all nodes have equal weight) is at the given position ⟨[*x*](#center_x),[*y*](#center_y)⟩. This force modifies the positions of nodes on each application; it does not modify velocities, as doing so would typically cause the nodes to overshoot and oscillate around the desired center. This force helps keeps nodes in the center of the viewport, and unlike the [position forces](./position.md), it does not distort their relative positions. + +## forceCenter(*x*, *y*) {#forceCenter} + +[Source](https://github.com/d3/d3-force/blob/main/src/center.js) · Creates a new center force with the specified [*x*-](#center_x) and [*y*-](#center_y) coordinates. If *x* and *y* are not specified, they default to ⟨0,0⟩. + +```js +const center = d3.forceCenter(width / 2, height / 2); +``` + +## *center*.x(*x*) {#center_x} + +[Source](https://github.com/d3/d3-force/blob/main/src/center.js) · If *x* is specified, sets the *x*-coordinate of the centering position to the specified number and returns this force. If *x* is not specified, returns the current *x*-coordinate, which defaults to zero. + +## *center*.y(*y*) {#center_y} + +[Source](https://github.com/d3/d3-force/blob/main/src/center.js) · If *y* is specified, sets the y coordinate of the centering position to the specified number and returns this force. If *y* is not specified, returns the current y coordinate, which defaults to zero. + +## *center*.strength(*strength*) {#center_strength} + +[Examples](https://observablehq.com/@d3/forcecenter-strength) · [Source](https://github.com/d3/d3-force/blob/main/src/center.js) · If *strength* is specified, sets the center force’s strength. A reduced strength of e.g. 0.05 softens the movements on interactive graphs in which new nodes enter or exit the graph. If *strength* is not specified, returns the force’s current strength, which defaults to 1. diff --git a/docs/d3-force/collide.md b/docs/d3-force/collide.md new file mode 100644 index 00000000000000..b650f04ed458be --- /dev/null +++ b/docs/d3-force/collide.md @@ -0,0 +1,33 @@ +# Collide force + +The collide force treats nodes as circles with a given [radius](#collide_radius), rather than points, and prevents nodes from overlapping. More formally, two nodes *a* and *b* are separated so that the distance between *a* and *b* is at least *radius*(*a*) + *radius*(*b*). To reduce jitter, this is by default a “soft” constraint with a configurable [strength](#collide_strength) and [iteration count](#collide_iterations). + +## forceCollide(*radius*) {#forceCollide} + +[Source](https://github.com/d3/d3-force/blob/main/src/collide.js) · Creates a new circle collide force with the specified [*radius*](#collide_radius). If *radius* is not specified, it defaults to the constant one for all nodes. + +```js +const collide = d3.forceCollide((d) => d.r); +``` + +## *collide*.radius(*radius*) {#collide_radius} + +[Source](https://github.com/d3/d3-force/blob/main/src/collide.js) · If *radius* is specified, sets the radius accessor to the specified number or function, re-evaluates the radius accessor for each node, and returns this force. If *radius* is not specified, returns the current radius accessor, which defaults to: + +```js +function radius() { + return 1; +} +``` + +The radius accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the radius of each node is only recomputed when the force is initialized or when this method is called with a new *radius*, and not on every application of the force. + +## *collide*.strength(*strength*) {#collide_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/collide.js) · If *strength* is specified, sets the force strength to the specified number in the range [0,1] and returns this force. If *strength* is not specified, returns the current strength which defaults to 1. + +Overlapping nodes are resolved through iterative relaxation. For each node, the other nodes that are anticipated to overlap at the next tick (using the anticipated positions ⟨*x* + *vx*,*y* + *vy*⟩) are determined; the node’s velocity is then modified to push the node out of each overlapping node. The change in velocity is dampened by the force’s strength such that the resolution of simultaneous overlaps can be blended together to find a stable solution. + +## *collide*.iterations(*iterations*) {#collide_iterations} + +[Source](https://github.com/d3/d3-force/blob/main/src/collide.js) · If *iterations* is specified, sets the number of iterations per application to the specified number and returns this force. If *iterations* is not specified, returns the current iteration count which defaults to 1. Increasing the number of iterations greatly increases the rigidity of the constraint and avoids partial overlap of nodes, but also increases the runtime cost to evaluate the force. diff --git a/docs/d3-force/link.md b/docs/d3-force/link.md new file mode 100644 index 00000000000000..100afdbb91488a --- /dev/null +++ b/docs/d3-force/link.md @@ -0,0 +1,107 @@ +# Link force + +The link force pushes linked nodes together or apart according to the desired [link distance](#link_distance). The strength of the force is proportional to the difference between the linked nodes’ distance and the target distance, similar to a spring force. + +## forceLink(*links*) {#forceLink} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · Creates a new link force with the specified *links* and default parameters. If *links* is not specified, it defaults to the empty array. + +```js +const link = d3.forceLink(links).id((d) => d.id); +``` + +## *link*.links(*links*) {#link_links} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · If *links* is specified, sets the array of links associated with this force, recomputes the [distance](#link_distance) and [strength](#link_strength) parameters for each link, and returns this force. If *links* is not specified, returns the current array of links, which defaults to the empty array. + +Each link is an object with the following properties: + +* `source` - the link’s source node; see [*simulation*.nodes](./simulation.md#simulation_nodes) +* `target` - the link’s target node; see [*simulation*.nodes](./simulation.md#simulation_nodes) +* `index` - the zero-based index into *links*, assigned by this method + +For convenience, a link’s source and target properties may be initialized using numeric or string identifiers rather than object references; see [*link*.id](#link_id). When the link force is [initialized](#force_initialize) (or re-initialized, as when the nodes or links change), any *link*.source or *link*.target property which is *not* an object is replaced by an object reference to the corresponding *node* with the given identifier. + +If the specified array of *links* is modified, such as when links are added to or removed from the simulation, this method must be called again with the new (or changed) array to notify the force of the change; the force does not make a defensive copy of the specified array. + +## *link*.id(*id*) {#link_id} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · If *id* is specified, sets the node id accessor to the specified function and returns this force. If *id* is not specified, returns the current node id accessor, which defaults to the numeric *node*.index: + +```js +function id(d) { + return d.index; +} +``` + +The default id accessor allows each link’s source and target to be specified as a zero-based index into the [nodes](./simulation.md#simulation_nodes) array. For example: + +```js +const nodes = [ + {"id": "Alice"}, + {"id": "Bob"}, + {"id": "Carol"} +]; + +const links = [ + {"source": 0, "target": 1}, // Alice → Bob + {"source": 1, "target": 2} // Bob → Carol +]; +``` + +Now consider a different id accessor that returns a string: + +```js +function id(d) { + return d.id; +} +``` + +With this accessor, you can use named sources and targets: + +```js +const nodes = [ + {"id": "Alice"}, + {"id": "Bob"}, + {"id": "Carol"} +]; + +const links = [ + {"source": "Alice", "target": "Bob"}, + {"source": "Bob", "target": "Carol"} +]; +``` + +This is particularly useful when representing graphs in JSON, as JSON does not allow references. See [this example](https://bl.ocks.org/mbostock/f584aa36df54c451c94a9d0798caed35). + +The id accessor is invoked for each node whenever the force is initialized, as when the [nodes](./simulation.md#simulation_nodes) or [links](#link_links) change, being passed the node and its zero-based index. + +## *link*.distance(*distance*) {#link_distance} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · If *distance* is specified, sets the distance accessor to the specified number or function, re-evaluates the distance accessor for each link, and returns this force. If *distance* is not specified, returns the current distance accessor, which defaults to: + +```js +function distance() { + return 30; +} +``` + +The distance accessor is invoked for each [link](#link_links), being passed the *link* and its zero-based *index*. The resulting number is then stored internally, such that the distance of each link is only recomputed when the force is initialized or when this method is called with a new *distance*, and not on every application of the force. + +## *link*.strength(*strength*) {#link_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · If *strength* is specified, sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each link, and returns this force. If *strength* is not specified, returns the current strength accessor, which defaults to: + +```js +function strength(link) { + return 1 / Math.min(count(link.source), count(link.target)); +} +``` + +Where *count*(*node*) is a function that returns the number of links with the given node as a source or target. This default was chosen because it automatically reduces the strength of links connected to heavily-connected nodes, improving stability. + +The strength accessor is invoked for each [link](#link_links), being passed the *link* and its zero-based *index*. The resulting number is then stored internally, such that the strength of each link is only recomputed when the force is initialized or when this method is called with a new *strength*, and not on every application of the force. + +## *link*.iterations(*iterations*) {#link_iterations} + +[Source](https://github.com/d3/d3-force/blob/main/src/link.js) · If *iterations* is specified, sets the number of iterations per application to the specified number and returns this force. If *iterations* is not specified, returns the current iteration count which defaults to 1. Increasing the number of iterations greatly increases the rigidity of the constraint and is useful for [complex structures such as lattices](https://observablehq.com/@d3/force-directed-lattice), but also increases the runtime cost to evaluate the force. diff --git a/docs/d3-force/many-body.md b/docs/d3-force/many-body.md new file mode 100644 index 00000000000000..43956530cac3bb --- /dev/null +++ b/docs/d3-force/many-body.md @@ -0,0 +1,39 @@ +# Many-body force + +The many-body (or *n*-body) force applies mutually amongst all [nodes](./simulation.md#simulation_nodes). It can be used to simulate gravity (attraction) if the [strength](#manyBody_strength) is positive, or electrostatic charge (repulsion) if the strength is negative. This implementation uses a quadtree and the [Barnes–Hut approximation](https://en.wikipedia.org/wiki/Barnes–Hut_simulation) to greatly improve performance; the accuracy can be customized using the [theta](#manyBody_theta) parameter. + +Unlike the [link force](./link.md), which only affect two linked nodes, the charge force is global: every node affects every other node, even if they are on disconnected subgraphs. + +## forceManyBody() {#forceManyBody} + +[Source](https://github.com/d3/d3-force/blob/main/src/manyBody.js) · Creates a new many-body force with the default parameters. + +```js +const manyBody = d3.forceManyBody().strength(-100); +``` + +## *manyBody*.strength(*strength*) {#manyBody_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/manyBody.js) · If *strength* is specified, sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each node, and returns this force. A positive value causes nodes to attract each other, similar to gravity, while a negative value causes nodes to repel each other, similar to electrostatic charge. If *strength* is not specified, returns the current strength accessor, which defaults to: + +```js +function strength() { + return -30; +} +``` + +The strength accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the strength of each node is only recomputed when the force is initialized or when this method is called with a new *strength*, and not on every application of the force. + +## *manyBody*.theta(*theta*) {#manyBody_theta} + +[Source](https://github.com/d3/d3-force/blob/main/src/manyBody.js) · If *theta* is specified, sets the Barnes–Hut approximation criterion to the specified number and returns this force. If *theta* is not specified, returns the current value, which defaults to 0.9. + +To accelerate computation, this force implements the [Barnes–Hut approximation](http://en.wikipedia.org/wiki/Barnes–Hut_simulation) which takes O(*n* log *n*) per application where *n* is the number of [nodes](./simulation.md#simulation_nodes). For each application, a [quadtree](../d3-quadtree.md) stores the current node positions; then for each node, the combined force of all other nodes on the given node is computed. For a cluster of nodes that is far away, the charge force can be approximated by treating the cluster as a single, larger node. The *theta* parameter determines the accuracy of the approximation: if the ratio *w* / *l* of the width *w* of the quadtree cell to the distance *l* from the node to the cell’s center of mass is less than *theta*, all nodes in the given cell are treated as a single node rather than individually. + +## *manyBody*.distanceMin(*distance*) {#manyBody_distanceMin} + +[Source](https://github.com/d3/d3-force/blob/main/src/manyBody.js) · If *distance* is specified, sets the minimum distance between nodes over which this force is considered. If *distance* is not specified, returns the current minimum distance, which defaults to 1. A minimum distance establishes an upper bound on the strength of the force between two nearby nodes, avoiding instability. In particular, it avoids an infinitely-strong force if two nodes are exactly coincident; in this case, the direction of the force is random. + +## *manyBody*.distanceMax(*distance*) {#manyBody_distanceMax} + +[Source](https://github.com/d3/d3-force/blob/main/src/manyBody.js) · If *distance* is specified, sets the maximum distance between nodes over which this force is considered. If *distance* is not specified, returns the current maximum distance, which defaults to infinity. Specifying a finite maximum distance improves performance and produces a more localized layout. diff --git a/docs/d3-force/position.md b/docs/d3-force/position.md new file mode 100644 index 00000000000000..1f52a48092225a --- /dev/null +++ b/docs/d3-force/position.md @@ -0,0 +1,107 @@ +# Position forces + +The [*x*](#forceX)- and [*y*](#forceY)-position forces push nodes towards a desired position along the given dimension with a configurable strength. The [*radial*](#forceRadial) force is similar, except it pushes nodes towards the closest point on a given circle. The strength of the force is proportional to the one-dimensional distance between the node’s position and the target position. While these forces can be used to position individual nodes, they are intended primarily for global forces that apply to all (or most) nodes. + +## forceX(*x*) {#forceX} + +[Source](https://github.com/d3/d3-force/blob/main/src/x.js) · Creates a new position force along the *x*-axis towards the given position [*x*](#x_x). If *x* is not specified, it defaults to 0. + +```js +const x = d3.forceX(width / 2); +``` + +## *x*.strength(*strength*) {#x_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/x.js) · If *strength* is specified, sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each node, and returns this force. The *strength* determines how much to increment the node’s *x*-velocity: ([*x*](#x_x) - *node*.x) × *strength*. For example, a value of 0.1 indicates that the node should move a tenth of the way from its current *x*-position to the target *x*-position with each application. Higher values moves nodes more quickly to the target position, often at the expense of other forces or constraints. A value outside the range [0,1] is not recommended. + +If *strength* is not specified, returns the current strength accessor, which defaults to: + +```js +function strength() { + return 0.1; +} +``` + +The strength accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the strength of each node is only recomputed when the force is initialized or when this method is called with a new *strength*, and not on every application of the force. + +## *x*.x(*x*) {#x_x} + +[Source](https://github.com/d3/d3-force/blob/main/src/x.js) · If *x* is specified, sets the *x*-coordinate accessor to the specified number or function, re-evaluates the *x*-accessor for each node, and returns this force. If *x* is not specified, returns the current *x*-accessor, which defaults to: + +```js +function x() { + return 0; +} +``` + +The *x*-accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the target *x*-coordinate of each node is only recomputed when the force is initialized or when this method is called with a new *x*, and not on every application of the force. + +## forceY(*y*) {#forceY} + +[Source](https://github.com/d3/d3-force/blob/main/src/y.js) · Creates a new position force along the *y*-axis towards the given position [*y*](#y_y). If *y* is not specified, it defaults to 0. + +```js +const y = d3.forceY(height / 2); +``` + +## *y*.strength(*strength*) {#y_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/y.js) · If *strength* is specified, sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each node, and returns this force. The *strength* determines how much to increment the node’s *y*-velocity: ([*y*](#y_y) - *node*.y) × *strength*. For example, a value of 0.1 indicates that the node should move a tenth of the way from its current *y*-position to the target *y*-position with each application. Higher values moves nodes more quickly to the target position, often at the expense of other forces or constraints. A value outside the range [0,1] is not recommended. + +If *strength* is not specified, returns the current strength accessor, which defaults to: + +```js +function strength() { + return 0.1; +} +``` + +The strength accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the strength of each node is only recomputed when the force is initialized or when this method is called with a new *strength*, and not on every application of the force. + +## *y*.y(*y*) {#y_y} + +[Source](https://github.com/d3/d3-force/blob/main/src/y.js) · If *y* is specified, sets the *y*-coordinate accessor to the specified number or function, re-evaluates the *y*-accessor for each node, and returns this force. If *y* is not specified, returns the current *y*-accessor, which defaults to: + +```js +function y() { + return 0; +} +``` + +The *y*-accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the target y coordinate of each node is only recomputed when the force is initialized or when this method is called with a new *y*, and not on every application of the force. + +## forceRadial(*radius*, *x*, *y*) {#forceRadial} + +[Source](https://github.com/d3/d3-force/blob/main/src/radial.js) · Creates a new position force towards a circle of the specified [*radius*](#radial_radius) centered at ⟨[*x*](#radial_x),[*y*](#radial_y)⟩. If *x* and *y* are not specified, they default to ⟨0,0⟩. + +```js +const radial = d3.forceRadial(r, width / 2, height / 2); +``` + +## *radial*.strength(*strength*) {#radial_strength} + +[Source](https://github.com/d3/d3-force/blob/main/src/radial.js) · If *strength* is specified, sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each node, and returns this force. The *strength* determines how much to increment the node’s *x*- and *y*-velocity. For example, a value of 0.1 indicates that the node should move a tenth of the way from its current position to the closest point on the circle with each application. Higher values moves nodes more quickly to the target position, often at the expense of other forces or constraints. A value outside the range [0,1] is not recommended. + +If *strength* is not specified, returns the current strength accessor, which defaults to: + +```js +function strength() { + return 0.1; +} +``` + +The strength accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the strength of each node is only recomputed when the force is initialized or when this method is called with a new *strength*, and not on every application of the force. + +## *radial*.radius(*radius*) {#radial_radius} + +[Source](https://github.com/d3/d3-force/blob/main/src/radial.js) · If *radius* is specified, sets the circle *radius* to the specified number or function, re-evaluates the *radius* accessor for each node, and returns this force. If *radius* is not specified, returns the current *radius* accessor. + +The *radius* accessor is invoked for each [node](./simulation.md#simulation_nodes) in the simulation, being passed the *node* and its zero-based *index*. The resulting number is then stored internally, such that the target radius of each node is only recomputed when the force is initialized or when this method is called with a new *radius*, and not on every application of the force. + +## *radial*.x(*x*) {#radial_x} + +[Source](https://github.com/d3/d3-force/blob/main/src/radial.js) · If *x* is specified, sets the *x*-coordinate of the circle center to the specified number and returns this force. If *x* is not specified, returns the current *x*-coordinate of the center, which defaults to zero. + +## *radial*.y(*y*) {#radial_y} + +[Source](https://github.com/d3/d3-force/blob/main/src/radial.js) · If *y* is specified, sets the y coordinate of the circle center to the specified number and returns this force. If *y* is not specified, returns the current y coordinate of the center, which defaults to zero. diff --git a/docs/d3-force/simulation.md b/docs/d3-force/simulation.md new file mode 100644 index 00000000000000..5c8110dc0a3abd --- /dev/null +++ b/docs/d3-force/simulation.md @@ -0,0 +1,116 @@ +# Force simulations + +A force simulation implements a [velocity Verlet](https://en.wikipedia.org/wiki/Verlet_integration) numerical integrator for simulating physical forces on particles (nodes). The simulation assumes a constant unit time step Δ*t* = 1 for each step and a constant unit mass *m* = 1 for all particles. As a result, a force *F* acting on a particle is equivalent to a constant acceleration *a* over the time interval Δ*t*, and can be simulated simply by adding to the particle’s velocity, which is then added to the particle’s position. + +## forceSimulation(*nodes*) {#forceSimulation} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · Creates a new simulation with the specified array of [*nodes*](#simulation_nodes) and no [forces](#simulation_force). If *nodes* is not specified, it defaults to the empty array. The simulator [starts](#simulation_restart) automatically; use [*simulation*.on](#simulation_on) to listen for tick events as the simulation runs. If you wish to run the simulation manually instead, call [*simulation*.stop](#simulation_stop), and then call [*simulation*.tick](#simulation_tick) as desired. + +```js +const simulation = d3.forceSimulation(nodes); +``` + +## *simulation*.restart() {#simulation_restart} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · Restarts the simulation’s internal timer and returns the simulation. In conjunction with [*simulation*.alphaTarget](#simulation_alphaTarget) or [*simulation*.alpha](#simulation_alpha), this method can be used to “reheat” the simulation during interaction, such as when dragging a node, or to resume the simulation after temporarily pausing it with [*simulation*.stop](#simulation_stop). + +## *simulation*.stop() {#simulation_stop} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · Stops the simulation’s internal timer, if it is running, and returns the simulation. If the timer is already stopped, this method does nothing. This method is useful for running the simulation manually; see [*simulation*.tick](#simulation_tick). + +## *simulation*.tick(*iterations*) {#simulation_tick} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · Manually steps the simulation by the specified number of *iterations*, and returns the simulation. If *iterations* is not specified, it defaults to 1 (single step). + +For each iteration, it increments the current [*alpha*](#simulation_alpha) by ([*alphaTarget*](#simulation_alphaTarget) - *alpha*) × [*alphaDecay*](#simulation_alphaDecay); then invokes each registered [force](#simulation_force), passing the new *alpha*; then decrements each [node](#simulation_nodes)’s velocity by *velocity* × [*velocityDecay*](#simulation_velocityDecay); lastly increments each node’s position by *velocity*. + +This method does not dispatch [events](#simulation_on); events are only dispatched by the internal timer when the simulation is started automatically upon [creation](#forceSimulation) or by calling [*simulation*.restart](#simulation_restart). The natural number of ticks when the simulation is started is ⌈*log*([*alphaMin*](#simulation_alphaMin)) / *log*(1 - [*alphaDecay*](#simulation_alphaDecay))⌉; by default, this is 300. + +This method can be used in conjunction with [*simulation*.stop](#simulation_stop) to compute a [static force layout](https://bl.ocks.org/mbostock/1667139). For large graphs, static layouts should be computed [in a web worker](https://bl.ocks.org/mbostock/01ab2e85e8727d6529d20391c0fd9a16) to avoid freezing the user interface. + +## *simulation*.nodes(*nodes*) {#simulation_nodes} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *nodes* is specified, sets the simulation’s nodes to the specified array of objects, initializing their positions and velocities if necessary, and then [re-initializes](#force_initialize) any bound [forces](#simulation_force); returns the simulation. If *nodes* is not specified, returns the simulation’s array of nodes as specified to the [constructor](#forceSimulation). + +Each *node* must be an object. The following properties are assigned by the simulation: + +* `index` - the node’s zero-based index into *nodes* +* `x` - the node’s current *x*-position +* `y` - the node’s current *y*-position +* `vx` - the node’s current *x*-velocity +* `vy` - the node’s current *y*-velocity + +The position ⟨*x*,*y*⟩ and velocity ⟨*vx*,*vy*⟩ may be subsequently modified by [forces](../d3-force.md#custom-forces) and by the simulation. If either *vx* or *vy* is NaN, the velocity is initialized to ⟨0,0⟩. If either *x* or *y* is NaN, the position is initialized in a [phyllotaxis arrangement](https://observablehq.com/@d3/force-layout-phyllotaxis), so chosen to ensure a deterministic, uniform distribution. + +To fix a node in a given position, you may specify two additional properties: + +* `fx` - the node’s fixed *x*-position +* `fy` - the node’s fixed *y*-position + +At the end of each [tick](#simulation_tick), after the application of any forces, a node with a defined *node*.fx has *node*.x reset to this value and *node*.vx set to zero; likewise, a node with a defined *node*.fy has *node*.y reset to this value and *node*.vy set to zero. To unfix a node that was previously fixed, set *node*.fx and *node*.fy to null, or delete these properties. + +If the specified array of *nodes* is modified, such as when nodes are added to or removed from the simulation, this method must be called again with the new (or changed) array to notify the simulation and bound forces of the change; the simulation does not make a defensive copy of the specified array. + +## *simulation*.alpha(*alpha*) {#simulation_alpha} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · *alpha* is roughly analogous to temperature in [simulated annealing](https://en.wikipedia.org/wiki/Simulated_annealing#Overview). It decreases over time as the simulation “cools down”. When *alpha* reaches *alphaMin*, the simulation stops; see [*simulation*.restart](#simulation_restart). + +If *alpha* is specified, sets the current alpha to the specified number in the range [0,1] and returns this simulation. If *alpha* is not specified, returns the current alpha value, which defaults to 1. + +## *simulation*.alphaMin(*min*) {#simulation_alphaMin} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *min* is specified, sets the minimum *alpha* to the specified number in the range [0,1] and returns this simulation. If *min* is not specified, returns the current minimum *alpha* value, which defaults to 0.001. The simulation’s internal timer stops when the current [*alpha*](#simulation_alpha) is less than the minimum *alpha*. The default [alpha decay rate](#simulation_alphaDecay) of ~0.0228 corresponds to 300 iterations. + +## *simulation*.alphaDecay(*decay*) {#simulation_alphaDecay} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *decay* is specified, sets the [*alpha*](#simulation_alpha) decay rate to the specified number in the range [0,1] and returns this simulation. If *decay* is not specified, returns the current *alpha* decay rate, which defaults to 0.0228… = 1 - *pow*(0.001, 1 / 300) where 0.001 is the default [minimum *alpha*](#simulation_alphaMin). + +The alpha decay rate determines how quickly the current alpha interpolates towards the desired [target *alpha*](#simulation_alphaTarget); since the default target *alpha* is zero, by default this controls how quickly the simulation cools. Higher decay rates cause the simulation to stabilize more quickly, but risk getting stuck in a local minimum; lower values cause the simulation to take longer to run, but typically converge on a better layout. To have the simulation run forever at the current *alpha*, set the *decay* rate to zero; alternatively, set a [target *alpha*](#simulation_alphaTarget) greater than the [minimum *alpha*](#simulation_alphaMin). + +## *simulation*.alphaTarget(*target*) {#simulation_alphaTarget} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *target* is specified, sets the current target [*alpha*](#simulation_alpha) to the specified number in the range [0,1] and returns this simulation. If *target* is not specified, returns the current target alpha value, which defaults to 0. + +## *simulation*.velocityDecay(*decay*) {#simulation_velocityDecay} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *decay* is specified, sets the velocity decay factor to the specified number in the range [0,1] and returns this simulation. If *decay* is not specified, returns the current velocity decay factor, which defaults to 0.4. The decay factor is akin to atmospheric friction; after the application of any forces during a [tick](#simulation_tick), each node’s velocity is multiplied by 1 - *decay*. As with lowering the [alpha decay rate](#simulation_alphaDecay), less velocity decay may converge on a better solution, but risks numerical instabilities and oscillation. + +## *simulation*.force(*name*, *force*) {#simulation_force} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *force* is specified, assigns the [force](../d3-force.md#custom-forces) for the specified *name* and returns this simulation. If *force* is not specified, returns the force with the specified name, or undefined if there is no such force. (By default, new simulations have no forces.) For example, to create a new simulation to layout a graph, you might say: + +```js +const simulation = d3.forceSimulation(nodes) + .force("charge", d3.forceManyBody()) + .force("link", d3.forceLink(links)) + .force("center", d3.forceCenter()); +``` + +To remove the force with the given *name*, pass null as the *force*. For example, to remove the charge force: + +```js +simulation.force("charge", null); +``` + +## *simulation*.find(*x*, *y*, *radius*) {#simulation_find} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · Returns the node closest to the position ⟨*x*,*y*⟩ with the given search *radius*. If *radius* is not specified, it defaults to infinity. If there is no node within the search area, returns undefined. + +## *simulation*.randomSource(*source*) {#simulation_randomSource} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js "Source")) + +If *source* is specified, sets the function used to generate random numbers; this should be a function that returns a number between 0 (inclusive) and 1 (exclusive). If *source* is not specified, returns this simulation’s current random source which defaults to a fixed-seed [linear congruential generator](https://en.wikipedia.org/wiki/Linear_congruential_generator). See also [*random*.source](../d3-random.md#random_source). + +## *simulation*.on(*typenames*, *listener*) {#simulation_on} + +[Source](https://github.com/d3/d3-force/blob/main/src/simulation.js) · If *listener* is specified, sets the event *listener* for the specified *typenames* and returns this simulation. If an event listener was already registered for the same type and name, the existing listener is removed before the new listener is added. If *listener* is null, removes the current event listeners for the specified *typenames*, if any. If *listener* is not specified, returns the first currently-assigned listener matching the specified *typenames*, if any. When a specified event is dispatched, each *listener* will be invoked with the `this` context as the simulation. + +The *typenames* is a string containing one or more *typename* separated by whitespace. Each *typename* is a *type*, optionally followed by a period (`.`) and a *name*, such as `tick.foo` and `tick.bar`; the name allows multiple listeners to be registered for the same *type*. The *type* must be one of the following: + +* `tick` - after each tick of the simulation’s internal timer. +* `end` - after the simulation’s timer stops when *alpha* < [*alphaMin*](#simulation_alphaMin). + +Note that *tick* events are not dispatched when [*simulation*.tick](#simulation_tick) is called manually; events are only dispatched by the internal timer and are intended for interactive rendering of the simulation. To affect the simulation, register [forces](#simulation_force) instead of modifying nodes’ positions or velocities inside a tick event listener. + +See [*dispatch*.on](../d3-dispatch.md#dispatch_on) for details. diff --git a/docs/d3-format.md b/docs/d3-format.md new file mode 100644 index 00000000000000..5635a15fcfe795 --- /dev/null +++ b/docs/d3-format.md @@ -0,0 +1,384 @@ +# d3-format + +Ever noticed how sometimes JavaScript doesn’t display numbers the way you expect? Like, you tried to print tenths with a simple loop: + +```js +for (let i = 0; i < 10; ++i) { + console.log(0.1 * i); +} +``` + +And you got this: + +``` +0 +0.1 +0.2 +0.30000000000000004 +0.4 +0.5 +0.6000000000000001 +0.7000000000000001 +0.8 +0.9 +``` + +Welcome to [binary floating point](https://en.wikipedia.org/wiki/Double-precision_floating-point_format)! ಠ_ಠ + +Yet rounding error is not the only reason to customize number formatting. A table of numbers should be formatted consistently for comparison; above, 0.0 would be better than 0. Large numbers should have grouped digits (e.g., 42,000) or be in scientific or metric notation (4.2e+4, 42k). Currencies should have fixed precision ($3.50). Reported numerical results should be rounded to significant digits (4021 becomes 4000). Number formats should appropriate to the reader’s locale (42.000,00 or 42,000.00). The list goes on. + +Formatting numbers for human consumption is the purpose of d3-format, which is modeled after Python 3’s [format specification mini-language](https://docs.python.org/3/library/string.html#format-specification-mini-language) ([PEP 3101](https://www.python.org/dev/peps/pep-3101/)). Revisiting the example above: + +```js +const f = d3.format(".1f"); +for (let i = 0; i < 10; ++i) { + console.log(f(0.1 * i)); +} +``` + +Now you get this: + +``` +0.0 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +``` + +But d3-format is much more than an alias for [number.toFixed](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)! A few more examples: + +```js +d3.format(".0%")(0.123) // rounded percentage, "12%" +``` +```js +d3.format("($.2f")(-3.5) // localized fixed-point currency, "(£3.50)" +``` +```js +d3.format("+20")(42) // space-filled and signed, " +42" +``` +```js +d3.format(".^20")(42) // dot-filled and centered, ".........42........." +``` +```js +d3.format(".2s")(42e6) // SI-prefix with two significant digits, "42M" +``` +```js +d3.format("#x")(48879) // prefixed lowercase hexadecimal, "0xbeef" +``` +```js +d3.format(",.2r")(4223) // grouped thousands with two significant digits, "4,200" +``` + +See [*locale*.format](#locale_format) for a detailed specification, and try running [d3.formatSpecifier](#formatSpecifier) on the above formats to decode their meaning. + +Also see [*number*.toLocaleString](https://observablehq.com/@mbostock/number-formatting). + +## format(*specifier*) {#format} + +```js +const f = d3.format(".2f"); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/defaultLocale.js) · An alias for [*locale*.format](#locale_format) on the [default locale](#formatDefaultLocale). + +## formatPrefix(*specifier*, *value*) {#formatPrefix} + +```js +const f = d3.formatPrefix(",.0", 1e-6); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/defaultLocale.js) · An alias for [*locale*.formatPrefix](#locale_formatPrefix) on the [default locale](#formatDefaultLocale). + +## formatLocale(*definition*) {#formatLocale} + +```js +const enUs = d3.formatLocale({ + thousands: ",", + grouping: [3], + currency: ["$", ""] +}); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/locale.js) · Returns a *locale* object for the specified *definition* with [*locale*.format](#locale_format) and [*locale*.formatPrefix](#locale_formatPrefix) methods. The *definition* must include the following properties: + +* `decimal` - the decimal point (e.g., `"."`). +* `thousands` - the group separator (e.g., `","`). +* `grouping` - the array of group sizes (e.g., `[3]`), cycled as needed. +* `currency` - the currency prefix and suffix (e.g., `["$", ""]`). +* `numerals` - optional; an array of ten strings to replace the numerals 0-9. +* `percent` - optional; the percent sign (defaults to `"%"`). +* `minus` - optional; the minus sign (defaults to `"−"`). +* `nan` - optional; the not-a-number value (defaults `"NaN"`). + +Note that the *thousands* property is a misnomer, as the grouping definition allows groups other than thousands. + +## formatDefaultLocale(*definition*) {#formatDefaultLocale} + +```js +const enUs = d3.formatDefaultLocale({ + thousands: ",", + grouping: [3], + currency: ["$", ""] +}); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/defaultLocale.js) · Equivalent to [d3.formatLocale](#formatLocale), except it also redefines [d3.format](#format) and [d3.formatPrefix](#formatPrefix) to the new locale’s [*locale*.format](#locale_format) and [*locale*.formatPrefix](#locale_formatPrefix). If you do not set a default locale, it defaults to [U.S. English](https://github.com/d3/d3-format/blob/main/locale/en-US.json). + +## *locale*.format(*specifier*) {#locale_format} + +```js +const f = d3.format(".2f"); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/locale.js) · Returns a new format function for the given string *specifier*. The returned function takes a number as the only argument, and returns a string representing the formatted number. The general form of a specifier is: + +``` +[​[fill]align][sign][symbol][0][width][,][.precision][~][type] +``` + +The *fill* can be any character. The presence of a fill character is signaled by the *align* character following it, which must be one of the following: + +* `>` - Forces the field to be right-aligned within the available space. (Default behavior). +* `<` - Forces the field to be left-aligned within the available space. +* `^` - Forces the field to be centered within the available space. +* `=` - like `>`, but with any sign and symbol to the left of any padding. + +The *sign* can be: + +* `-` - nothing for zero or positive and a minus sign for negative. (Default behavior.) +* `+` - a plus sign for zero or positive and a minus sign for negative. +* `(` - nothing for zero or positive and parentheses for negative. +* ` ` (space) - a space for zero or positive and a minus sign for negative. + +The *symbol* can be: + +* `$` - apply currency symbols per the locale definition. +* `#` - for binary, octal, or hexadecimal notation, prefix by `0b`, `0o`, or `0x`, respectively. + +The *zero* (`0`) option enables zero-padding; this implicitly sets *fill* to `0` and *align* to `=`. The *width* defines the minimum field width; if not specified, then the width will be determined by the content. The *comma* (`,`) option enables the use of a group separator, such as a comma for thousands. + +Depending on the *type*, the *precision* either indicates the number of digits that follow the decimal point (types `f` and `%`), or the number of significant digits (types `​`, `e`, `g`, `r`, `s` and `p`). If the precision is not specified, it defaults to 6 for all types except `​` (none), which defaults to 12. Precision is ignored for integer formats (types `b`, `o`, `d`, `x`, and `X`) and character data (type `c`). See [precisionFixed](#precisionFixed) and [precisionRound](#precisionRound) for help picking an appropriate precision. + +The `~` option trims insignificant trailing zeros across all format types. This is most commonly used in conjunction with types `r`, `e`, `s` and `%`. For example: + +```js +d3.format("s")(1500) // "1.50000k" +``` +```js +d3.format("~s")(1500) // "1.5k" +``` + +The available *type* values are: + +* `e` - exponent notation. +* `f` - fixed point notation. +* `g` - either decimal or exponent notation, rounded to significant digits. +* `r` - decimal notation, rounded to significant digits. +* `s` - decimal notation with an [SI prefix](#locale_formatPrefix), rounded to significant digits. +* `%` - multiply by 100, and then decimal notation with a percent sign. +* `p` - multiply by 100, round to significant digits, and then decimal notation with a percent sign. +* `b` - binary notation, rounded to integer. +* `o` - octal notation, rounded to integer. +* `d` - decimal notation, rounded to integer. +* `x` - hexadecimal notation, using lower-case letters, rounded to integer. +* `X` - hexadecimal notation, using upper-case letters, rounded to integer. +* `c` - character data, for a string of text. + +The type `​` (none) is also supported as shorthand for `~g` (with a default precision of 12 instead of 6), and the type `n` is shorthand for `,g`. For the `g`, `n` and `​` (none) types, decimal notation is used if the resulting string would have *precision* or fewer digits; otherwise, exponent notation is used. For example: + +```js +d3.format(".2")(42) // "42" +``` +```js +d3.format(".2")(4.2) // "4.2" +``` +```js +d3.format(".1")(42) // "4e+1" +``` +```js +d3.format(".1")(4.2) // "4" +``` + +## *locale*.formatPrefix(*specifier*, *value*) {#locale_formatPrefix} + +```js +const f = d3.formatPrefix(",.0", 1e-6); +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/locale.js) · Equivalent to [*locale*.format](#locale_format), except the returned function will convert values to the units of the appropriate [SI prefix](https://en.wikipedia.org/wiki/Metric_prefix#List_of_SI_prefixes) for the specified numeric reference *value* before formatting in fixed point notation. The following prefixes are supported: + +* `y` - yocto, 10⁻²⁴ +* `z` - zepto, 10⁻²¹ +* `a` - atto, 10⁻¹⁸ +* `f` - femto, 10⁻¹⁵ +* `p` - pico, 10⁻¹² +* `n` - nano, 10⁻⁹ +* `µ` - micro, 10⁻⁶ +* `m` - milli, 10⁻³ +* `​` (none) - 10⁰ +* `k` - kilo, 10³ +* `M` - mega, 10⁶ +* `G` - giga, 10⁹ +* `T` - tera, 10¹² +* `P` - peta, 10¹⁵ +* `E` - exa, 10¹⁸ +* `Z` - zetta, 10²¹ +* `Y` - yotta, 10²⁴ + +Unlike [*locale*.format](#locale_format) with the `s` format type, this method returns a formatter with a consistent SI prefix, rather than computing the prefix dynamically for each number. In addition, the *precision* for the given *specifier* represents the number of digits past the decimal point (as with `f` fixed point notation), not the number of significant digits. For example: + +```js +const f = d3.formatPrefix(",.0", 1e-6); +f(0.00042); // "420µ" +f(0.0042); // "4,200µ" +``` + +This method is useful when formatting multiple numbers in the same units for easy comparison. See [precisionPrefix](#precisionPrefix) for help picking an appropriate precision. + +## formatSpecifier(*specifier*) {#formatSpecifier} + +```js +d3.formatSpecifier(".1f") +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/formatSpecifier.js) · Parses the specified *specifier*, returning an object with exposed fields that correspond to the [format specification mini-language](#locale_format) and a toString method that reconstructs the specifier. For example, `formatSpecifier("s")` returns: + +```js +FormatSpecifier { + "fill": " ", + "align": ">", + "sign": "-", + "symbol": "", + "zero": false, + "width": undefined, + "comma": false, + "precision": undefined, + "trim": false, + "type": "s" +} +``` + +This method is useful for understanding how format specifiers are parsed and for deriving new specifiers. For example, you might compute an appropriate precision based on the numbers you want to format using [precisionFixed](#precisionFixed) and then create a new format: + +```js +const s = d3.formatSpecifier("f"); +s.precision = d3.precisionFixed(0.01); +const f = d3.format(s); +f(42); // "42.00"; +``` + +## new d3.FormatSpecifier(*specifier*) {#FormatSpecifier} + +```js +new d3.FormatSpecifier({type: "f", precision: 1}) +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/formatSpecifier.js) · Given the specified *specifier* object, returning an object with exposed fields that correspond to the [format specification mini-language](#locale_format) and a toString method that reconstructs the specifier. For example, `new FormatSpecifier({type: "s"})` returns: + +```js +FormatSpecifier { + "fill": " ", + "align": ">", + "sign": "-", + "symbol": "", + "zero": false, + "width": undefined, + "comma": false, + "precision": undefined, + "trim": false, + "type": "s" +} +``` + +## precisionFixed(*step*) {#precisionFixed} + +```js +d3.precisionFixed(0.01) // 2 +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/precisionFixed.js) · Returns a suggested decimal precision for fixed point notation given the specified numeric *step* value. The *step* represents the minimum absolute difference between values that will be formatted. (This assumes that the values to be formatted are also multiples of *step*.) For example, given the numbers 1, 1.5, and 2, the *step* should be 0.5 and the suggested precision is 1: + +```js +const p = d3.precisionFixed(0.5); +const f = d3.format("." + p + "f"); +f(1); // "1.0" +f(1.5); // "1.5" +f(2); // "2.0" +``` + +Whereas for the numbers 1, 2 and 3, the *step* should be 1 and the suggested precision is 0: + +```js +const p = d3.precisionFixed(1); +const f = d3.format("." + p + "f"); +f(1); // "1" +f(2); // "2" +f(3); // "3" +``` + +Note: for the `%` format type, subtract two: + +```js +const p = Math.max(0, d3.precisionFixed(0.05) - 2); +const f = d3.format("." + p + "%"); +f(0.45); // "45%" +f(0.50); // "50%" +f(0.55); // "55%" +``` + +## precisionPrefix(*step*, *value*) {#precisionPrefix} + +```js +d3.precisionPrefix(1e5, 1.3e6) // 1 +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/precisionPrefix.js) · Returns a suggested decimal precision for use with [*locale*.formatPrefix](#locale_formatPrefix) given the specified numeric *step* and reference *value*. The *step* represents the minimum absolute difference between values that will be formatted, and *value* determines which SI prefix will be used. (This assumes that the values to be formatted are also multiples of *step*.) For example, given the numbers 1.1e6, 1.2e6, and 1.3e6, the *step* should be 1e5, the *value* could be 1.3e6, and the suggested precision is 1: + +```js +const p = d3.precisionPrefix(1e5, 1.3e6); +const f = d3.formatPrefix("." + p, 1.3e6); +f(1.1e6); // "1.1M" +f(1.2e6); // "1.2M" +f(1.3e6); // "1.3M" +``` + +## precisionRound(*step*, *max*) {#precisionRound} + +```js +d3.precisionRound(0.01, 1.01) // 3 +``` + +[Source](https://github.com/d3/d3-format/blob/main/src/precisionRound.js) · Returns a suggested decimal precision for format types that round to significant digits given the specified numeric *step* and *max* values. The *step* represents the minimum absolute difference between values that will be formatted, and the *max* represents the largest absolute value that will be formatted. (This assumes that the values to be formatted are also multiples of *step*.) For example, given the numbers 0.99, 1.0, and 1.01, the *step* should be 0.01, the *max* should be 1.01, and the suggested precision is 3: + +```js +const p = d3.precisionRound(0.01, 1.01); +const f = d3.format("." + p + "r"); +f(0.99); // "0.990" +f(1.0); // "1.00" +f(1.01); // "1.01" +``` + +Whereas for the numbers 0.9, 1.0, and 1.1, the *step* should be 0.1, the *max* should be 1.1, and the suggested precision is 2: + +```js +const p = d3.precisionRound(0.1, 1.1); +const f = d3.format("." + p + "r"); +f(0.9); // "0.90" +f(1.0); // "1.0" +f(1.1); // "1.1" +``` + +Note: for the `e` format type, subtract one: + +```js +const p = Math.max(0, d3.precisionRound(0.01, 1.01) - 1); +const f = d3.format("." + p + "e"); +f(0.01); // "1.00e-2" +f(1.01); // "1.01e+0" +``` diff --git a/docs/d3-geo.md b/docs/d3-geo.md new file mode 100644 index 00000000000000..2c2568feebbb7f --- /dev/null +++ b/docs/d3-geo.md @@ -0,0 +1,37 @@ +# d3-geo + +Map projections are sometimes implemented as point transformations: a function that takes a given longitude *lambda* and latitude *phi*, and returns the corresponding *xy* position on the plane. For instance, here is the spherical Mercator projection (in radians): + +```js +function mercator(lambda, phi) { + const x = lambda; + const y = Math.log(Math.tan(Math.PI / 4 + phi / 2)); + return [x, y]; +} +``` + +This is a reasonable approach if your geometry consists only of points. But what about discrete geometry such as polygons and polylines? + +Discrete geometry introduces new challenges when projecting from the sphere to the plane. The edges of a spherical polygon are [geodesics](https://en.wikipedia.org/wiki/Geodesic) (segments of great circles), not straight lines. Geodesics become curves in all map projections except [gnomonic](#geoGnomonic), and thus accurate projection requires interpolation along each arc. D3 uses [adaptive sampling](https://observablehq.com/@d3/adaptive-sampling) inspired by [Visvalingam’s line simplification method](https://bost.ocks.org/mike/simplify/) to balance accuracy and performance. + +The projection of polygons and polylines must also deal with the topological differences between the sphere and the plane. Some projections require cutting geometry that [crosses the antimeridian](https://observablehq.com/@d3/antimeridian-cutting), while others require [clipping geometry to a great circle](https://observablehq.com/@d3/orthographic-shading). Spherical polygons also require a [winding order convention](https://observablehq.com/@d3/winding-order) to determine which side of the polygon is the inside: the exterior ring for polygons smaller than a hemisphere must be clockwise, while the exterior ring for polygons [larger than a hemisphere](https://observablehq.com/@d3/oceans) must be anticlockwise. Interior rings representing holes must use the opposite winding order of their exterior ring. + + + +D3 uses spherical [GeoJSON](http://geojson.org/geojson-spec.html) to represent geographic features in JavaScript. D3 supports a wide variety of [common](./d3-geo/projection.md) and [unusual](https://github.com/d3/d3-geo-projection) map projections. And because D3 uses spherical geometry to represent data, you can apply any aspect to any projection by rotating geometry. + +See one of: + +- [Paths](./d3-geo/path.md) - generate SVG path data from GeoJSON +- [Projections](./d3-geo/projection.md) - project spherical geometry to the plane +- [Streams](./d3-geo/stream.md) - transform (either spherical or planar) geometry +- [Shapes](./d3-geo/shape.md) - generate circles, lines, and other spherical geometry +- [Spherical math](./d3-geo/math.md) - low-level methods for spherical geometry + +:::tip +To convert shapefiles to GeoJSON, use [shp2json](https://github.com/mbostock/shapefile/blob/main/README.md#shp2json), part of the [shapefile package](https://github.com/mbostock/shapefile). See [Command-Line Cartography](https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c) for an introduction to d3-geo and related tools. See also [TopoJSON](https://github.com/topojson), an extension of GeoJSON that is significantly more compact and encodes topology. +::: + +:::warning CAUTION +D3’s winding order convention is also used by [TopoJSON](https://github.com/topojson) and [ESRI shapefiles](https://github.com/mbostock/shapefile); however, it is the opposite convention of GeoJSON’s [RFC 7946](https://tools.ietf.org/html/rfc7946#section-3.1.6). Also note that standard GeoJSON WGS84 uses planar equirectangular coordinates, not spherical coordinates, and thus may require [stitching](https://github.com/d3/d3-geo-projection/blob/main/README.md#geostitch) to remove antimeridian cuts. +::: diff --git a/docs/d3-geo/azimuthal.md b/docs/d3-geo/azimuthal.md new file mode 100644 index 00000000000000..5f4c4a276f3f4e --- /dev/null +++ b/docs/d3-geo/azimuthal.md @@ -0,0 +1,43 @@ +# Azimuthal projections + +Azimuthal projections project the sphere directly onto a plane. + +## geoAzimuthalEqualArea() {#geoAzimuthalEqualArea} + +[](https://observablehq.com/@d3/azimuthal-equal-area) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/azimuthalEqualArea.js) · The azimuthal equal-area projection. + + + +## geoAzimuthalEquidistant() {#geoAzimuthalEquidistant} + +[](https://observablehq.com/@d3/azimuthal-equidistant) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/azimuthalEquidistant.js) · The azimuthal equidistant projection. + + + +## geoGnomonic() {#geoGnomonic} + +[](https://observablehq.com/@d3/gnomonic) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/gnomonic.js) · The gnomonic projection. + + + +## geoOrthographic() {#geoOrthographic} + +[](https://observablehq.com/@d3/orthographic) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/orthographic.js) · The orthographic projection. + + + +## geoStereographic() {#geoStereographic} + +[](https://observablehq.com/@d3/stereographic) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/stereographic.js) · The stereographic projection. + + diff --git a/docs/d3-geo/conic.md b/docs/d3-geo/conic.md new file mode 100644 index 00000000000000..718da00832c569 --- /dev/null +++ b/docs/d3-geo/conic.md @@ -0,0 +1,45 @@ +# Conic projections + +Conic projections project the sphere onto a cone, and then unroll the cone onto the plane. Conic projections have [two standard parallels](#conic_parallels). + +## *conic*.parallels(*parallels*) {#conic_parallels} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/conic.js) · The [two standard parallels](https://en.wikipedia.org/wiki/Map_projection#Conic) that define the map layout in conic projections. + +## geoConicConformal() {#geoConicConformal} + +[](https://observablehq.com/@d3/conic-conformal) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/conicConformal.js) · The conic conformal projection. The parallels default to [30°, 30°] resulting in flat top. + + + +## geoConicEqualArea() {#geoConicEqualArea} + +[](https://observablehq.com/@d3/conic-equal-area) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/conicEqualArea.js) · The Albers’ equal-area conic projection. + + + +## geoConicEquidistant() {#geoConicEquidistant} + +[](https://observablehq.com/@d3/conic-equidistant) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/conicEquidistant.js) · The conic equidistant projection. + + + +## geoAlbers() {#geoAlbers} + +[](https://observablehq.com/@d3/u-s-map) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/albers.js) · The Albers’ equal area-conic projection. This is a U.S.-centric configuration of [geoConicEqualArea](#geoConicEqualArea). + +## geoAlbersUsa() {#geoAlbersUsa} + +[](https://observablehq.com/@d3/u-s-map) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/albersUsa.js) · This is a U.S.-centric composite projection of three [geoConicEqualArea](#geoConicEqualArea) projections: [geoAlbers](#geoAlbers) is used for the lower forty-eight states, and separate conic equal-area projections are used for Alaska and Hawaii. The scale for Alaska is diminished: it is projected at 0.35× its true relative area. See [Albers USA with Territories](https://www.npmjs.com/package/geo-albers-usa-territories) for an extension to all US territories, and [d3-composite-projections](http://geoexamples.com/d3-composite-projections/) for more examples. + +The constituent projections have fixed clip, center and rotation, and thus this projection does not support [*projection*.center](./projection.md#projection_center), [*projection*.rotate](./projection.md#projection_rotate), [*projection*.clipAngle](./projection.md#projection_clipAngle), or [*projection*.clipExtent](./projection.md#projection_clipExtent). diff --git a/docs/d3-geo/cylindrical.md b/docs/d3-geo/cylindrical.md new file mode 100644 index 00000000000000..6efa22e84f7404 --- /dev/null +++ b/docs/d3-geo/cylindrical.md @@ -0,0 +1,43 @@ +# Cylindrical projections + +Cylindrical projections project the sphere onto a containing cylinder, and then unroll the cylinder onto the plane. [Pseudocylindrical projections](https://web.archive.org/web/20150928042327/http://www.progonos.com/furuti/MapProj/Normal/ProjPCyl/projPCyl.html) are a generalization of cylindrical projections. + +## geoEquirectangular() {#geoEquirectangular} + +[](https://observablehq.com/@d3/equirectangular) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/equirectangular.js) · The equirectangular (plate carrée) projection. + + + +## geoMercator() {#geoMercator} + +[](https://observablehq.com/@d3/mercator) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/mercator.js) · The spherical Mercator projection. Defines a default [*projection*.clipExtent](./projection.md#projection_clipExtent) such that the world is projected to a square, clipped to approximately ±85° latitude. + + + +## geoTransverseMercator() {#geoTransverseMercator} + +[](https://observablehq.com/@d3/transverse-mercator) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/transverseMercator.js) · The transverse spherical Mercator projection. Defines a default [*projection*.clipExtent](./projection.md#projection_clipExtent) such that the world is projected to a square, clipped to approximately ±85° latitude. + + + +## geoEqualEarth() {#geoEqualEarth} + +[](https://observablehq.com/@d3/equal-earth) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/equalEarth.js) · The Equal Earth projection, an equal-area projection, by Bojan Šavrič _et al._, 2018. + + + +## geoNaturalEarth1() {#geoNaturalEarth1} + +[](https://observablehq.com/@d3/natural-earth) + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/naturalEarth1.js) · The [Natural Earth projection](http://www.shadedrelief.com/NE_proj/) is a pseudocylindrical projection designed by Tom Patterson. It is neither conformal nor equal-area, but appealing to the eye for small-scale maps of the whole world. + + diff --git a/docs/d3-geo/math.md b/docs/d3-geo/math.md new file mode 100644 index 00000000000000..19543a965c63a4 --- /dev/null +++ b/docs/d3-geo/math.md @@ -0,0 +1,43 @@ +# Spherical math + +Low-level utilities for spherical geometry. + +## geoArea(*object*) {#geoArea} + +[Source](https://github.com/d3/d3-geo/blob/main/src/area.js) · Returns the spherical area of the specified GeoJSON *object* in [steradians](https://en.wikipedia.org/wiki/Steradian). This is the spherical equivalent of [*path*.area](./path.md#path_area). + +## geoBounds(*object*) {#geoBounds} + +[Source](https://github.com/d3/d3-geo/blob/main/src/bounds.js) · Returns the [spherical bounding box](https://www.jasondavies.com/maps/bounds/) for the specified GeoJSON *object*. The bounding box is represented by a two-dimensional array: \[\[*left*, *bottom*], \[*right*, *top*\]\], where *left* is the minimum longitude, *bottom* is the minimum latitude, *right* is maximum longitude, and *top* is the maximum latitude. All coordinates are given in degrees. (Note that in projected planar coordinates, the minimum latitude is typically the maximum *y*-value, and the maximum latitude is typically the minimum *y*-value.) This is the spherical equivalent of [*path*.bounds](./path.md#path_bounds). + +## geoCentroid(*object*) {#geoCentroid} + +[Source](https://github.com/d3/d3-geo/blob/main/src/centroid.js) · Returns the spherical centroid of the specified GeoJSON *object*. This is the spherical equivalent of [*path*.centroid](./path.md#path_centroid). + +## geoDistance(*a*, *b*) {#geoDistance} + +[Source](https://github.com/d3/d3-geo/blob/main/src/distance.js) · Returns the great-arc distance in [radians](http://mathworld.wolfram.com/Radian.html) between the two points *a* and *b*. Each point must be specified as a two-element array \[*longitude*, *latitude*\] in degrees. This is the spherical equivalent of [*path*.measure](./path.md#path_measure) given a LineString of two points. + +## geoLength(*object*) {#geoLength} + +[Source](https://github.com/d3/d3-geo/blob/main/src/length.js) · Returns the great-arc length of the specified GeoJSON *object* in [radians](http://mathworld.wolfram.com/Radian.html). For polygons, returns the perimeter of the exterior ring plus that of any interior rings. This is the spherical equivalent of [*path*.measure](./path.md#path_measure). + +## geoInterpolate(*a*, *b*) {#geoInterpolate} + +[Source](https://github.com/d3/d3-geo/blob/main/src/interpolate.js) · Returns an interpolator function given two points *a* and *b*. Each point must be specified as a two-element array \[*longitude*, *latitude*\] in degrees. The returned interpolator function takes a single argument *t*, where *t* is a number ranging from 0 to 1; a value of 0 returns the point *a*, while a value of 1 returns the point *b*. Intermediate values interpolate from *a* to *b* along the great arc that passes through both *a* and *b*. If *a* and *b* are antipodes, an arbitrary great arc is chosen. + +## geoContains(*object*, *point*) {#geoContains} + +[Source](https://github.com/d3/d3-geo/blob/main/src/contains.js) · Returns true if and only if the specified GeoJSON *object* contains the specified *point*, or false if the *object* does not contain the *point*. The point must be specified as a two-element array \[*longitude*, *latitude*\] in degrees. For Point and MultiPoint geometries, an exact test is used; for a Sphere, true is always returned; for other geometries, an epsilon threshold is applied. + +## geoRotation(*angles*) {#geoRotation} + +[Source](https://github.com/d3/d3-geo/blob/main/src/rotation.js) · Returns a [rotation function](#_rotation) for the given *angles*, which must be a two- or three-element array of numbers [*lambda*, *phi*, *gamma*] specifying the rotation angles in degrees about [each spherical axis](https://observablehq.com/@d3/three-axis-rotation). (These correspond to [yaw, pitch and roll](https://en.wikipedia.org/wiki/Aircraft_principal_axes).) If the rotation angle *gamma* is omitted, it defaults to 0. See also [*projection*.rotate](./projection.md#projection_rotate). + +### *rotation*(*point*) {#_rotation} + +[Source](https://github.com/d3/d3-geo/blob/main/src/rotation.js) · Returns a new array \[*longitude*, *latitude*\] in degrees representing the rotated point of the given *point*. The point must be specified as a two-element array \[*longitude*, *latitude*\] in degrees. + +### *rotation*.invert(*point*) {#rotation_invert} + +[Source](https://github.com/d3/d3-geo/blob/main/src/rotation.js) · Returns a new array \[*longitude*, *latitude*\] in degrees representing the point of the given rotated *point*; the inverse of [*rotation*](#_rotation). The point must be specified as a two-element array \[*longitude*, *latitude*\] in degrees. diff --git a/docs/d3-geo/path.md b/docs/d3-geo/path.md new file mode 100644 index 00000000000000..dadb9ca9d26d46 --- /dev/null +++ b/docs/d3-geo/path.md @@ -0,0 +1,158 @@ +# Paths + +The geographic path generator, [geoPath](#geoPath), takes a given GeoJSON geometry or feature object and generates SVG path data string or [renders to a Canvas](https://observablehq.com/@d3/u-s-map-canvas). Paths can be used with [projections](./projection.md) or [transforms](./projection.md#transforms), or they can be used to render planar geometry directly to Canvas or SVG. + +## geoPath(*projection*, *context*) {#geoPath} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · Creates a new geographic path generator with the default settings. If *projection* is specified, sets the [current projection](#path_projection). If *context* is specified, sets the [current context](#path_context). + +```js +const path = d3.geoPath(projection); // for SVG +``` +```js +const path = d3.geoPath(projection, context); // for canvas +``` + +## *path*(*object*, ...*arguments*) {#_path} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · Renders the given *object*, which may be any GeoJSON feature or geometry object: + +* *Point* - a single position +* *MultiPoint* - an array of positions +* *LineString* - an array of positions forming a continuous line +* *MultiLineString* - an array of arrays of positions forming several lines +* *Polygon* - an array of arrays of positions forming a polygon (possibly with holes) +* *MultiPolygon* - a multidimensional array of positions forming multiple polygons +* *GeometryCollection* - an array of geometry objects +* *Feature* - a feature containing one of the above geometry objects +* *FeatureCollection* - an array of feature objects + +The type *Sphere* is also supported, which is useful for rendering the outline of the globe; a sphere has no coordinates. Any additional *arguments* are passed along to the [pointRadius](#path_pointRadius) accessor. + +To display multiple features, combine them into a feature collection: + +```js +svg.append("path") + .datum({type: "FeatureCollection", features: features}) + .attr("d", d3.geoPath()); +``` + +Or use multiple path elements: + +```js +svg.selectAll() + .data(features) + .join("path") + .attr("d", d3.geoPath()); +``` + +Separate path elements are typically slower than a single path element. However, distinct path elements are useful for styling and interaction (e.g., click or mouseover). Canvas rendering (see [*path*.context](#path_context)) is typically faster than SVG, but requires more effort to implement styling and interaction. + +## *path*.area(*object*) {#path_area} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/area.js) · Returns the projected planar area (typically in square pixels) for the specified GeoJSON *object*. + +```js +path.area(california) // 17063.1671837991 px² +``` + +Point, MultiPoint, LineString and MultiLineString geometries have zero area. For Polygon and MultiPolygon geometries, this method first computes the area of the exterior ring, and then subtracts the area of any interior holes. This method observes any clipping performed by the [projection](#path_projection); see [*projection*.clipAngle](./projection.md#projection_clipAngle) and [*projection*.clipExtent](./projection.md#projection_clipExtent). This is the planar equivalent of [geoArea](./math.md#geoArea). + +## *path*.bounds(*object*) {#path_bounds} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/bounds.js) · Returns the projected planar bounding box (typically in pixels) for the specified GeoJSON *object*. + +```js +path.bounds(california) // [[18.48513821663947, 159.95146883594333], [162.7651668852596, 407.09641570706725]] +``` + +The bounding box is represented by a two-dimensional array: \[\[*x₀*, *y₀*\], \[*x₁*, *y₁*\]\], where *x₀* is the minimum *x*-coordinate, *y₀* is the minimum y coordinate, *x₁* is maximum *x*-coordinate, and *y₁* is the maximum y coordinate. This is handy for, say, zooming in to a particular feature. (Note that in projected planar coordinates, the minimum latitude is typically the maximum *y*-value, and the maximum latitude is typically the minimum *y*-value.) This method observes any clipping performed by the [projection](#path_projection); see [*projection*.clipAngle](./projection.md#projection_clipAngle) and [*projection*.clipExtent](./projection.md#projection_clipExtent). This is the planar equivalent of [geoBounds](./math.md#geoBounds). + +## *path*.centroid(*object*) {#path_centroid} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/centroid.js) · Returns the projected planar centroid (typically in pixels) for the specified GeoJSON *object*. + +```js +path.centroid(california) // [82.08679434495191, 288.14204870673404] +``` + +This is handy for, say, labeling state or county boundaries, or displaying a symbol map. For example, a [noncontiguous cartogram](https://observablehq.com/@d3/non-contiguous-cartogram) might scale each state around its centroid. This method observes any clipping performed by the [projection](#path_projection); see [*projection*.clipAngle](./projection.md#projection_clipAngle) and [*projection*.clipExtent](./projection.md#projection_clipExtent). This is the planar equivalent of [geoCentroid](./math.md#geoCentroid). + +## *path*.digits(*digits*) {#path_digits} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · If *digits* is specified (as a non-negative number), sets the number of fractional digits for coordinates generated in SVG path strings. + +```js +const path = d3.geoPath().digits(3); +``` + +If *projection* is not specified, returns the current number of digits, which defaults to 3. + +```js +path.digits() // 3 +``` + +This option only applies when the associated [*context*](#path_context) is null, as when this arc generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). + +## *path*.measure(*object*) {#path_measure} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/measure.js) · Returns the projected planar length (typically in pixels) for the specified GeoJSON *object*. + +```js +path.measure(california) // 825.7124297512761 +``` + +Point and MultiPoint geometries have zero length. For Polygon and MultiPolygon geometries, this method computes the summed length of all rings. This method observes any clipping performed by the [projection](#path_projection); see [*projection*.clipAngle](./projection.md#projection_clipAngle) and [*projection*.clipExtent](./projection.md#projection_clipExtent). This is the planar equivalent of [geoLength](./math.md#geoLength). + +## *path*.projection(*projection*) {#path_projection} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · If a *projection* is specified, sets the current projection to the specified projection. + +```js +const path = d3.geoPath().projection(d3.geoAlbers()); +``` + +If *projection* is not specified, returns the current projection. + +```js +path.projection() // a d3.geoAlbers instance +``` + +The projection defaults to null, which represents the identity transformation: the input geometry is not projected and is instead rendered directly in raw coordinates. This can be useful for fast rendering of [pre-projected geometry](https://observablehq.com/@d3/u-s-map), or for fast rendering of the equirectangular projection. + +The given *projection* is typically one of D3’s built-in [geographic projections](./projection.md); however, any object that exposes a [*projection*.stream](./projection.md#projection_stream) function can be used, enabling the use of [custom projections](https://bl.ocks.org/mbostock/5663666). See D3’s [transforms](./projection.md#transforms) for more examples of arbitrary geometric transformations. + +## *path*.context(*context*) {#path_context} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · If *context* is specified, sets the current render context and returns the path generator. + +```js +const context = canvas.getContext("2d"); +const path = d3.geoPath().context(context); +``` + +If the *context* is null, then the [path generator](#_path) will return an SVG path string; if the context is non-null, the path generator will instead call methods on the specified context to render geometry. The context must implement the following subset of the [CanvasRenderingContext2D API](https://www.w3.org/TR/2dcontext/#canvasrenderingcontext2d): + +* *context*.beginPath() +* *context*.moveTo(*x*, *y*) +* *context*.lineTo(*x*, *y*) +* *context*.arc(*x*, *y*, *radius*, *startAngle*, *endAngle*) +* *context*.closePath() + +If a *context* is not specified, returns the current render context which defaults to null. See also [d3-path](../d3-path.md). + +## *path*.pointRadius(*radius*) {#path_pointRadius} + +[Source](https://github.com/d3/d3-geo/blob/main/src/path/index.js) · If *radius* is specified, sets the radius used to display Point and MultiPoint geometries to the specified number. + +```js +const path = d3.geoPath().pointRadius(10); +``` + +If *radius* is not specified, returns the current radius accessor. + +```js +path.pointRadius() // 10 +``` + +The radius accessor defaults to 4.5. While the radius is commonly specified as a number constant, it may also be specified as a function which is computed per feature, being passed the any arguments passed to the [path generator](#_path). For example, if your GeoJSON data has additional properties, you might access those properties inside the radius function to vary the point size; alternatively, you could [symbol](../d3-shape/symbol.md) and a [projection](./projection.md) for greater flexibility. diff --git a/docs/d3-geo/projection.md b/docs/d3-geo/projection.md new file mode 100644 index 00000000000000..34628d66188cac --- /dev/null +++ b/docs/d3-geo/projection.md @@ -0,0 +1,204 @@ +# Projections + +Projections transform spherical polygonal geometry to planar polygonal geometry. D3 provides implementations of several classes of standard projections: + +* [Azimuthal projections](./azimuthal.md) +* [Conic projections](./conic.md) +* [Cylindrical projections](./cylindrical.md) + +For more projections, see [d3-geo-projection](https://github.com/d3/d3-geo-projection) and [d3-geo-polygon](https://github.com/d3/d3-geo-polygon). You can implement [custom projections](#raw-projections) using [geoProjection](#geoProjection) or [geoProjectionMutator](#geoProjectionMutator). + +## *projection*(*point*) {#_projection} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Returns a new array [*x*, *y*] (typically in pixels) representing the projected point of the given *point*. The point must be specified as a two-element array [*longitude*, *latitude*] in degrees. May return null if the specified *point* has no defined projected position, such as when the point is outside the clipping bounds of the projection. + +## *projection*.invert(*point*) {#projection_invert} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Returns a new array [*longitude*, *latitude*] in degrees representing the unprojected point of the given projected *point*. The point must be specified as a two-element array [*x*, *y*] (typically in pixels). May return null if the specified *point* has no defined projected position, such as when the point is outside the clipping bounds of the projection. + +This method is only defined on invertible projections. + +## *projection*.stream(*stream*) {#projection_stream} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Returns a [projection stream](./stream.md) for the specified output *stream*. Any input geometry is projected before being streamed to the output stream. A typical projection involves several geometry transformations: the input geometry is first converted to radians, rotated on three axes, clipped to the small circle or cut along the antimeridian, and lastly projected to the plane with adaptive resampling, scale and translation. + +## *projection*.preclip(*preclip*) {#projection_preclip} + +If *preclip* is specified, sets the projection’s spherical clipping to the specified function and returns the projection; *preclip* is a function that takes a [projection stream](./stream.md) and returns a clipped stream. If *preclip* is not specified, returns the current spherical clipping function. Preclipping is commonly used to cut along the antimeridian line or along a small circle. + +## *projection*.postclip(*postclip*) {#projection_postclip} + +If *postclip* is specified, sets the projection’s Cartesian clipping to the specified function and returns the projection; *postclip* is a function that takes a [projection stream](./stream.md) and returns a clipped stream. If *postclip* is not specified, returns the current Cartesian clipping function. Post-clipping occurs on the plane, when a projection is bounded to a certain extent such as a rectangle. + +## *projection*.clipAngle(*angle*) {#projection_clipAngle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *angle* is specified, sets the projection’s clipping circle radius to the specified angle in degrees and returns the projection. If *angle* is null, switches to [antimeridian cutting](https://observablehq.com/@d3/antimeridian-cutting) rather than small-circle clipping. If *angle* is not specified, returns the current clip angle which defaults to null. Small-circle clipping is independent of viewport clipping via [*projection*.clipExtent](#projection_clipExtent). See also [*projection*.preclip](#projection_preclip), [geoClipAntimeridian](#geoClipAntimeridian), [geoClipCircle](#geoClipCircle). + +## *projection*.clipExtent(*extent*) {#projection_clipExtent} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *extent* is specified, sets the projection’s viewport clip extent to the specified bounds in pixels and returns the projection. The *extent* bounds are specified as an array \[\[x₀, y₀\], \[x₁, y₁\]\], where x₀ is the left-side of the viewport, y₀ is the top, x₁ is the right and y₁ is the bottom. If *extent* is null, no viewport clipping is performed. If *extent* is not specified, returns the current viewport clip extent which defaults to null. Viewport clipping is independent of small-circle clipping via [*projection*.clipAngle](#projection_clipAngle). See also [*projection*.postclip](#projection_postclip), [geoClipRectangle](#geoClipRectangle). + +## *projection*.scale(*scale*) {#projection_scale} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *scale* is specified, sets the projection’s scale factor to the specified value and returns the projection. If *scale* is not specified, returns the current scale factor; the default scale is projection-specific. The scale factor corresponds linearly to the distance between projected points; however, absolute scale factors are not equivalent across projections. + +## *projection*.translate(*translate*) {#projection_translate} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *translate* is specified, sets the projection’s translation offset to the specified two-element array [tx, ty] and returns the projection. If *translate* is not specified, returns the current translation offset which defaults to [480, 250]. The translation offset determines the pixel coordinates of the projection’s [center](#projection_center). The default translation offset places ⟨0°,0°⟩ at the center of a 960×500 area. + +## *projection*.center(*center*) {#projection_center} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *center* is specified, sets the projection’s center to the specified *center*, a two-element array of [*longitude*, *latitude*] in degrees and returns the projection. If *center* is not specified, returns the current center, which defaults to ⟨0°,0°⟩. + +## *projection*.angle(*angle*) {#projection_angle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *angle* is specified, sets the projection’s post-projection planar rotation angle to the specified *angle* in degrees and returns the projection. If *angle* is not specified, returns the projection’s current angle, which defaults to 0°. Note that it may be faster to rotate during rendering (e.g., using [*context*.rotate](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rotate)) rather than during projection. + +## *projection*.reflectX(*reflect*) {#projection_reflectX} + +If *reflect* is specified, sets whether or not the *x*-dimension is reflected (negated) in the output. If *reflect* is not specified, returns true if *x*-reflection is enabled, which defaults to false. This can be useful to display sky and astronomical data with the orb seen from below: right ascension (eastern direction) will point to the left when North is pointing up. + +## *projection*.reflectY(*reflect*) {#projection_reflectY} + +If *reflect* is specified, sets whether or not the *y*-dimension is reflected (negated) in the output. If *reflect* is not specified, returns true if *y*-reflection is enabled, which defaults to false. This is especially useful for transforming from standard [spatial reference systems](https://en.wikipedia.org/wiki/Spatial_reference_system), which treat positive *y* as pointing up, to display coordinate systems such as Canvas and SVG, which treat positive *y* as pointing down. + +## *projection*.rotate(*angles*) {#projection_rotate} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *rotation* is specified, sets the projection’s [three-axis spherical rotation](https://observablehq.com/@d3/three-axis-rotation) to the specified *angles*, which must be a two- or three-element array of numbers [*lambda*, *phi*, *gamma*] specifying the rotation angles in degrees about [each spherical axis](https://observablehq.com/@d3/three-axis-rotation). (These correspond to [yaw, pitch and roll](https://en.wikipedia.org/wiki/Aircraft_principal_axes).) If the rotation angle *gamma* is omitted, it defaults to 0. See also [geoRotation](./math.md#geoRotation). If *rotation* is not specified, returns the current rotation which defaults [0, 0, 0]. + +## *projection*.precision(*precision*) {#projection_precision} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · If *precision* is specified, sets the threshold for the projection’s [adaptive resampling](https://observablehq.com/@d3/adaptive-sampling) to the specified value in pixels and returns the projection. This value corresponds to the [Douglas–Peucker](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) distance. If *precision* is not specified, returns the projection’s current resampling precision which defaults to √0.5 ≅ 0.70710… + +## *projection*.fitExtent(*extent*, *object*) {#projection_fitExtent} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Sets the projection’s [scale](#projection_scale) and [translate](#projection_translate) to fit the specified GeoJSON *object* in the center of the given *extent*. The extent is specified as an array \[\[x₀, y₀\], \[x₁, y₁\]\], where x₀ is the left side of the bounding box, y₀ is the top, x₁ is the right and y₁ is the bottom. Returns the projection. + +For example, to scale and translate the [New Jersey State Plane projection](https://bl.ocks.org/mbostock/5126418) to fit a GeoJSON object *nj* in the center of a 960×500 bounding box with 20 pixels of padding on each side: + +```js +var projection = d3.geoTransverseMercator() + .rotate([74 + 30 / 60, -38 - 50 / 60]) + .fitExtent([[20, 20], [940, 480]], nj); +``` + +Any [clip extent](#projection_clipExtent) is ignored when determining the new scale and translate. The [precision](#projection_precision) used to compute the bounding box of the given *object* is computed at an effective scale of 150. + +## *projection*.fitSize(*size*, *object*) {#projection_fitSize} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · A convenience method for [*projection*.fitExtent](#projection_fitExtent) where the top-left corner of the extent is [0, 0]. The following two statements are equivalent: + +```js +projection.fitExtent([[0, 0], [width, height]], object); +projection.fitSize([width, height], object); +``` + +## *projection*.fitWidth(*width*, *object*) {#projection_fitWidth} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · A convenience method for [*projection*.fitSize](#projection_fitSize) where the height is automatically chosen from the aspect ratio of *object* and the given constraint on *width*. + +## *projection*.fitHeight(*height*, *object*) {#projection_fitHeight} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · A convenience method for [*projection*.fitSize](#projection_fitSize) where the width is automatically chosen from the aspect ratio of *object* and the given constraint on *height*. + +## Raw projections + +Raw projections are point transformation functions that are used to implement custom projections; they typically passed to [geoProjection](#geoProjection) or [geoProjectionMutator](#geoProjectionMutator). They are exposed here to facilitate the derivation of related projections. Raw projections take spherical coordinates [*lambda*, *phi*] in radians (not degrees!) and return a point [*x*, *y*], typically in the unit square centered around the origin. + +### *project*(*lambda*, *phi*) + +Projects the specified point [lambda, phi] in radians, returning a new point [*x*, *y*] in unitless coordinates. + +### *project*.invert(*x*, *y*) + +The inverse of [*project*](#_project). + +## geoProjection(*project*) {#geoProjection} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Constructs a new projection from the specified [raw projection](#_project), *project*. The *project* function takes the *longitude* and *latitude* of a given point in [radians](http://mathworld.wolfram.com/Radian.html), often referred to as *lambda* (λ) and *phi* (φ), and returns a two-element array [*x*, *y*] representing its unit projection. The *project* function does not need to scale or translate the point, as these are applied automatically by [*projection*.scale](#projection_scale), [*projection*.translate](#projection_translate), and [*projection*.center](#projection_center). Likewise, the *project* function does not need to perform any spherical rotation, as [*projection*.rotate](#projection_rotate) is applied prior to projection. + +For example, a spherical Mercator projection can be implemented as: + +```js +var mercator = d3.geoProjection(function(x, y) { + return [x, Math.log(Math.tan(Math.PI / 4 + y / 2))]; +}); +``` + +If the *project* function exposes an *invert* method, the returned projection will also expose [*projection*.invert](#projection_invert). + +## geoProjectionMutator(*factory*) {#geoProjectionMutator} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/index.js) · Constructs a new projection from the specified [raw projection](#_project) *factory* and returns a *mutate* function to call whenever the raw projection changes. The *factory* must return a raw projection. The returned *mutate* function returns the wrapped projection. For example, a conic projection typically has two configurable parallels. A suitable *factory* function, such as [geoConicEqualAreaRaw](./conic.md#geoConicEqualArea), would have the form: + +```js +// y0 and y1 represent two parallels +function conicFactory(phi0, phi1) { + return function conicRaw(lambda, phi) { + return […, …]; + }; +} +``` + +Using d3.geoProjectionMutator, you can implement a standard projection that allows the parallels to be changed, reassigning the raw projection used internally by [geoProjection](#geoProjection): + +```js +function conicCustom() { + var phi0 = 29.5, + phi1 = 45.5, + mutate = d3.geoProjectionMutator(conicFactory), + projection = mutate(phi0, phi1); + + projection.parallels = function(_) { + return arguments.length ? mutate(phi0 = +_[0], phi1 = +_[1]) : [phi0, phi1]; + }; + + return projection; +} +``` + +When creating a mutable projection, the *mutate* function is typically not exposed. + +## geoTransform(*methods*) {#geoTransform} + +[Source](https://github.com/d3/d3-geo/blob/main/src/transform.js) · Defines an arbitrary transform using the methods defined on the specified *methods* object. Any undefined methods will use pass-through methods that propagate inputs to the output stream. + +For example, to reflect the *y*-dimension (see also [*projection*.reflectY](#projection_reflectY)): + +```js +const reflectY = d3.geoTransform({ + point(x, y) { + this.stream.point(x, -y); + } +}); +``` + +Or to define an affine matrix transformation: + +```js +function matrix(a, b, c, d, tx, ty) { + return d3.geoTransform({ + point(x, y) { + this.stream.point(a * x + b * y + tx, c * x + d * y + ty); + } + }); +} +``` + +A transform is a generalized projection; it implements [*projection*.stream](#projection_stream) and can be passed to [*path*.projection](./path.md#path_projection). However, it implements only a subset of the other projection methods, and represent arbitrary geometric transformations rather than projections from spherical to planar coordinates. + +## geoIdentity() {#geoIdentity} + +[Source](https://github.com/d3/d3-geo/blob/main/src/projection/identity.js) · The identity transform can be used to scale, translate and clip planar geometry. It implements [*projection*.scale](#projection_scale), [*projection*.translate](#projection_translate), [*projection*.fitExtent](#projection_fitExtent), [*projection*.fitSize](#projection_fitSize), [*projection*.fitWidth](#projection_fitWidth), [*projection*.fitHeight](#projection_fitHeight), [*projection*.clipExtent](#projection_clipExtent), [*projection*.angle](#projection_angle), [*projection*.reflectX](#projection_reflectX) and [*projection*.reflectY](#projection_reflectY). + +## geoClipAntimeridian {#geoClipAntimeridian} + +[Source](https://github.com/d3/d3-geo/blob/main/src/clip/antimeridian.js) · A clipping function which transforms a stream such that geometries (lines or polygons) that cross the antimeridian line are cut in two, one on each side. Typically used for pre-clipping. + +## geoClipCircle(*angle*) {#geoClipCircle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/clip/circle.js) · Generates a clipping function which transforms a stream such that geometries are bounded by a small circle of radius *angle* around the projection’s [center](#projection_center). Typically used for pre-clipping. + +## geoClipRectangle(*x0*, *y0*, *x1*, *y1*) {#geoClipRectangle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/clip/rectangle.js) · Generates a clipping function which transforms a stream such that geometries are bounded by a rectangle of coordinates [[x0, y0], [x1, y1]]. Typically used for post-clipping. diff --git a/docs/d3-geo/shape.md b/docs/d3-geo/shape.md new file mode 100644 index 00000000000000..d96b3e589d9dbc --- /dev/null +++ b/docs/d3-geo/shape.md @@ -0,0 +1,103 @@ +# Spherical shapes + +These shape generators return spherical GeoJSON for use with [geoPath](./path.md). + +:::tip +To generate a [great arc](https://en.wikipedia.org/wiki/Great-circle_distance) (a segment of a great circle), pass a GeoJSON LineString geometry object to a [geoPath](./path.md). D3’s projections use geodesic interpolation for intermediate points. +::: + +## geoGraticule() {#geoGraticule} + + + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · Constructs a geometry generator for creating graticules: a uniform grid of [meridians](https://en.wikipedia.org/wiki/Meridian_\(geography\)) and [parallels](https://en.wikipedia.org/wiki/Circle_of_latitude) for showing projection distortion. The default graticule has meridians and parallels every 10° between ±80° latitude; for the polar regions, there are meridians every 90°. + +## *graticule*() {#_graticule} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · Returns a GeoJSON MultiLineString geometry object representing all meridians and parallels for this graticule. + +## *graticule*.lines() {#graticule_lines} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · Returns an array of GeoJSON LineString geometry objects, one for each meridian or parallel for this graticule. + +## *graticule*.outline() {#graticule_outline} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · Returns a GeoJSON Polygon geometry object representing the outline of this graticule, i.e. along the meridians and parallels defining its extent. + +## *graticule*.extent(*extent*) {#graticule_extent} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *extent* is specified, sets the major and minor extents of this graticule. If *extent* is not specified, returns the current minor extent, which defaults to ⟨⟨-180°, -80° - ε⟩, ⟨180°, 80° + ε⟩⟩. + +## *graticule*.extentMajor(*extent*) {#graticule_extentMajor} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *extent* is specified, sets the major extent of this graticule. If *extent* is not specified, returns the current major extent, which defaults to ⟨⟨-180°, -90° + ε⟩, ⟨180°, 90° - ε⟩⟩. + +## *graticule*.extentMinor(*extent*) {#graticule_extentMinor} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *extent* is specified, sets the minor extent of this graticule. If *extent* is not specified, returns the current minor extent, which defaults to ⟨⟨-180°, -80° - ε⟩, ⟨180°, 80° + ε⟩⟩. + +## *graticule*.step(*step*) {#graticule_step} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *step* is specified, sets the major and minor step for this graticule. If *step* is not specified, returns the current minor step, which defaults to ⟨10°, 10°⟩. + +## *graticule*.stepMajor(*step*) {#graticule_stepMajor} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *step* is specified, sets the major step for this graticule. If *step* is not specified, returns the current major step, which defaults to ⟨90°, 360°⟩. + +## *graticule*.stepMinor(*step*) {#graticule_stepMinor} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *step* is specified, sets the minor step for this graticule. If *step* is not specified, returns the current minor step, which defaults to ⟨10°, 10°⟩. + +## *graticule*.precision(*angle*) {#graticule_precision} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · If *precision* is specified, sets the precision for this graticule, in degrees. If *precision* is not specified, returns the current precision, which defaults to 2.5°. + +## geoGraticule10() {#geoGraticule10} + +[Source](https://github.com/d3/d3-geo/blob/main/src/graticule.js) · A convenience method for directly generating the default 10° global graticule as a GeoJSON MultiLineString geometry object. Equivalent to: + +```js +function geoGraticule10() { + return d3.geoGraticule()(); +} +``` + +## geoCircle() {#geoCircle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/circle.js) · Returns a new circle generator. + +## *circle*(...*arguments*) {#_circle} + +[Source](https://github.com/d3/d3-geo/blob/main/src/circle.js) · Returns a new GeoJSON geometry object of type “Polygon” approximating a circle on the surface of a sphere, with the current [center](#circle_center), [radius](#circle_radius) and [precision](#circle_precision). Any *arguments* are passed to the accessors. + +## *circle*.center(*center*) {#circle_center} + +[Source](https://github.com/d3/d3-geo/blob/main/src/circle.js) · If *center* is specified, sets the circle center to the specified point \[*longitude*, *latitude*\] in degrees, and returns this circle generator. The center may also be specified as a function; this function will be invoked whenever a circle is [generated](#_circle), being passed any arguments passed to the circle generator. If *center* is not specified, returns the current center accessor, which defaults to: + +```js +function center() { + return [0, 0]; +} +``` + +## *circle*.radius(*radius*) {#circle_radius} + +[Source](https://github.com/d3/d3-geo/blob/main/src/circle.js) · If *radius* is specified, sets the circle radius to the specified angle in degrees, and returns this circle generator. The radius may also be specified as a function; this function will be invoked whenever a circle is [generated](#_circle), being passed any arguments passed to the circle generator. If *radius* is not specified, returns the current radius accessor, which defaults to: + +```js +function radius() { + return 90; +} +``` + +## *circle*.precision(*angle*) {#circle_precision} + +[Source](https://github.com/d3/d3-geo/blob/main/src/circle.js) · If *precision* is specified, sets the circle precision to the specified angle in degrees, and returns this circle generator. The precision may also be specified as a function; this function will be invoked whenever a circle is [generated](#_circle), being passed any arguments passed to the circle generator. If *precision* is not specified, returns the current precision accessor, which defaults to: + +```js +function precision() { + return 6; +} +``` + +Small circles do not follow great arcs and thus the generated polygon is only an approximation. Specifying a smaller precision angle improves the accuracy of the approximate polygon, but also increase the cost to generate and render it. diff --git a/docs/d3-geo/stream.md b/docs/d3-geo/stream.md new file mode 100644 index 00000000000000..30b7f229eddee1 --- /dev/null +++ b/docs/d3-geo/stream.md @@ -0,0 +1,51 @@ +# Streams + +Rather than materializing intermediate representations, streams transform geometry through function calls to minimize overhead. Streams must implement several methods to receive input geometry. Streams are inherently stateful; the meaning of a [point](#point) depends on whether the point is inside of a [line](#lineStart), and likewise a line is distinguished from a ring by a [polygon](#polygonStart). Despite the name “stream”, these method calls are currently synchronous. + +## geoStream(*object*, *stream*) {#geoStream} + +[Source](https://github.com/d3/d3-geo/blob/main/src/stream.js) · Streams the specified [GeoJSON](http://geojson.org) *object* to the specified [projection *stream*](#projection-streams). While both features and geometry objects are supported as input, the stream interface only describes the geometry, and thus additional feature properties are not visible to streams. + +## *stream*.point(*x*, *y*, *z*) {#stream_point} + +Indicates a point with the specified coordinates *x* and *y* (and optionally *z*). The coordinate system is unspecified and implementation-dependent; for example, [projection streams](./projection.md#projection_stream) require spherical coordinates in degrees as input. Outside the context of a polygon or line, a point indicates a point geometry object ([Point](http://www.geojson.org/geojson-spec.html#point) or [MultiPoint](http://www.geojson.org/geojson-spec.html#multipoint)). Within a line or polygon ring, the point indicates a control point. + +## *stream*.lineStart() {#stream_lineStart} + +Indicates the start of a line or ring. Within a polygon, indicates the start of a ring. The first ring of a polygon is the exterior ring, and is typically clockwise. Any subsequent rings indicate holes in the polygon, and are typically counterclockwise. + +## *stream*.lineEnd() {#stream_lineEnd} + +Indicates the end of a line or ring. Within a polygon, indicates the end of a ring. Unlike GeoJSON, the redundant closing coordinate of a ring is *not* indicated via [point](#point), and instead is implied via lineEnd within a polygon. Thus, the given polygon input: + +```json +{ + "type": "Polygon", + "coordinates": [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +} +``` + +Will produce the following series of method calls on the stream: + +```js +stream.polygonStart(); +stream.lineStart(); +stream.point(0, 0); +stream.point(0, 1); +stream.point(1, 1); +stream.point(1, 0); +stream.lineEnd(); +stream.polygonEnd(); +``` + +## *stream*.polygonStart() {#stream_polygonStart} + +Indicates the start of a polygon. The first line of a polygon indicates the exterior ring, and any subsequent lines indicate interior holes. + +## *stream*.polygonEnd() {#stream_polygonEnd} + +Indicates the end of a polygon. + +## *stream*.sphere() {#stream_sphere} + +Indicates the sphere (the globe; the unit sphere centered at ⟨0,0,0⟩). diff --git a/docs/d3-hierarchy.md b/docs/d3-hierarchy.md new file mode 100644 index 00000000000000..39aaf9a4472e19 --- /dev/null +++ b/docs/d3-hierarchy.md @@ -0,0 +1,21 @@ +# d3-hierarchy + +Many datasets are intrinsically hierarchical: [geographic entities](https://www.census.gov/programs-surveys/geography/guidance/hierarchy.html), such as census blocks, census tracts, counties and states; the command structure of businesses and governments; file systems; software packages. And even non-hierarchical data may be arranged hierarchically as with [*k*-means clustering](https://en.wikipedia.org/wiki/K-means_clustering) or [phylogenetic trees](https://observablehq.com/@d3/tree-of-life). A good hierarchical visualization facilitates rapid multiscale inference: micro-observations of individual elements and macro-observations of large groups. + +This module implements several popular techniques for visualizing hierarchical data: + +**Node-link diagrams** show topology using discrete marks for nodes and links, such as a circle for each node and a line connecting each parent and child. The [“tidy” tree](./d3-hierarchy/tree.md) is delightfully compact, while the [dendrogram](./d3-hierarchy/cluster.md) places leaves at the same level. (These have both polar and Cartesian forms.) [Indented trees](https://observablehq.com/@d3/indented-tree) are useful for interactive browsing. + +**Adjacency diagrams** show topology through the relative placement of nodes. They may also encode a quantitative dimension in the area of each node, for example to show revenue or file size. The [“icicle” diagram](./d3-hierarchy/partition.md) uses rectangles, while the “sunburst” uses annular segments. + +**Enclosure diagrams** also use an area encoding, but show topology through containment. A [treemap](./d3-hierarchy/treemap.md) recursively subdivides area into rectangles. [Circle-packing](./d3-hierarchy/pack.md) tightly nests circles; this is not as space-efficient as a treemap, but perhaps more readily shows topology. + +See one of: + +- [Hierarchies](./d3-hierarchy/hierarchy.md) - represent and manipulate hierarchical data +- [Stratify](./d3-hierarchy/stratify.md) - organize tabular data into a [hierarchy](./d3-hierarchy/hierarchy.md) +- [Tree](./d3-hierarchy/tree.md) - construct “tidy” tree diagrams of hierarchies +- [Cluster](./d3-hierarchy/cluster.md) - construct tree diagrams that place leaf nodes at the same depth +- [Partition](./d3-hierarchy/partition.md) - construct space-filling adjacency diagrams +- [Pack](./d3-hierarchy/pack.md) - construct enclosure diagrams by tightly nesting circles +- [Treemap](./d3-hierarchy/treemap.md) - recursively subdivide rectangles by quantitative value diff --git a/docs/d3-hierarchy/cluster.md b/docs/d3-hierarchy/cluster.md new file mode 100644 index 00000000000000..c05e0acfd57e0d --- /dev/null +++ b/docs/d3-hierarchy/cluster.md @@ -0,0 +1,62 @@ + + +# Cluster {#Cluster} + + + +[Examples](https://observablehq.com/@d3/cluster-dendrogram) · The cluster layout produces [dendrograms](http://en.wikipedia.org/wiki/Dendrogram): node-link diagrams that place leaf nodes of the tree at the same depth. Dendrograms are typically less compact than [tidy trees](./tree.md), but are useful when all the leaves should be at the same level, such as for hierarchical clustering or [phylogenetic tree diagrams](https://observablehq.com/@d3/tree-of-life). + +## cluster() {#cluster} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/cluster.js) · Creates a new cluster layout with default settings. + +## *cluster*(*root*) {#_cluster} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/cluster.js) · Lays out the specified *root* [hierarchy](./hierarchy.md), assigning the following properties on *root* and its descendants: + +* *node*.x - the *x*-coordinate of the node +* *node*.y - the y coordinate of the node + +The coordinates *x* and *y* represent an arbitrary coordinate system; for example, you can treat *x* as an angle and *y* as a radius to produce a [radial layout](https://observablehq.com/@d3/radial-dendrogram). You may want to call [*root*.sort](./hierarchy.md#node_sort) before passing the hierarchy to the cluster layout. + +## *cluster*.size(*size*) {#cluster_size} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/cluster.js) · If *size* is specified, sets this cluster layout’s size to the specified two-element array of numbers [*width*, *height*] and returns this cluster layout. If *size* is not specified, returns the current layout size, which defaults to [1, 1]. A layout size of null indicates that a [node size](#cluster_nodeSize) will be used instead. The coordinates *x* and *y* represent an arbitrary coordinate system; for example, to produce a [radial layout](https://observablehq.com/@d3/radial-dendrogram), a size of [360, *radius*] corresponds to a breadth of 360° and a depth of *radius*. + +## *cluster*.nodeSize(*size*) {#cluster_nodeSize} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/cluster.js) · If *size* is specified, sets this cluster layout’s node size to the specified two-element array of numbers [*width*, *height*] and returns this cluster layout. If *size* is not specified, returns the current node size, which defaults to null. A node size of null indicates that a [layout size](#cluster_size) will be used instead. When a node size is specified, the root node is always positioned at ⟨0, 0⟩. + +## *cluster*.separation(*separation*) {#cluster_separation} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/cluster.js) · If *separation* is specified, sets the separation accessor to the specified function and returns this cluster layout. If *separation* is not specified, returns the current separation accessor, which defaults to: + +```js +function separation(a, b) { + return a.parent == b.parent ? 1 : 2; +} +``` + +The separation accessor is used to separate neighboring leaves. The separation function is passed two leaves *a* and *b*, and must return the desired separation. The nodes are typically siblings, though the nodes may be more distantly related if the layout decides to place such nodes adjacent. diff --git a/docs/d3-hierarchy/hierarchy.md b/docs/d3-hierarchy/hierarchy.md new file mode 100644 index 00000000000000..c655538bab61e0 --- /dev/null +++ b/docs/d3-hierarchy/hierarchy.md @@ -0,0 +1,182 @@ +# Hierarchies + +Before you can compute a [hierarchical layout](../d3-hierarchy.md), you need a root node. If your data is already in a hierarchical format, such as JSON, you can pass it directly to [hierarchy](#hierarchy); otherwise, you can rearrange tabular data, such as comma-separated values (CSV), into a hierarchy using [stratify](./stratify.md). + +## hierarchy(*data*, *children*) {#hierarchy} + +[Examples](https://observablehq.com/@d3/d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/index.js) · Constructs a root node from the specified hierarchical *data*. The specified *data* must be an object representing the root node. For example: + +```js +const data = { + name: "Eve", + children: [ + {name: "Cain"}, + {name: "Seth", children: [{name: "Enos"}, {name: "Noam"}]}, + {name: "Abel"}, + {name: "Awan", children: [{name: "Enoch"}]}, + {name: "Azura"} + ] +}; +``` + +To construct a hierarchy: + +```js +const root = d3.hierarchy(data); +``` + +The specified *children* accessor function is invoked for each datum, starting with the root *data*, and must return an iterable of data representing the children, if any. If the children accessor is not specified, it defaults to: + +```js +function children(d) { + return d.children; +} +``` + +If *data* is a Map, it is implicitly converted to the entry [undefined, *data*], and the children accessor instead defaults to: + +```js +function children(d) { + return Array.isArray(d) ? d[1] : null; +} +``` + +This allows you to pass the result of [group](../d3-array/group.md#group) or [rollup](../d3-array/group.md#rollup) to hierarchy. + +The returned root node and each descendant has the following properties: + +* *node*.data - the associated data as passed to [hierarchy](#hierarchy) +* *node*.depth - zero for the root, increasing by one for each descendant generation +* *node*.height - the greatest distance from any descendant leaf, or zero for leaves +* *node*.parent - the parent node, or null for the root node +* *node*.children - an array of child nodes, if any, or undefined for leaves +* *node*.value - the optional summed value of the node and its [descendants](#node_descendants) + +This method can also be used to test if a node is an `instanceof d3.hierarchy` and to extend the node prototype. + +## *node*.ancestors() {#node_ancestors} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/ancestors.js) · Returns the array of ancestors nodes, starting with this node, then followed by each parent up to the root. + +## *node*.descendants() {#node_descendants} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/descendants.js) · Returns the array of descendant nodes, starting with this node, then followed by each child in topological order. + +## *node*.leaves() {#node_leaves} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/leaves.js) · Returns the array of leaf nodes in traversal order. A *leaf* is a node with no children. + +## *node*.find(*filter*) {#node_find} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/find.js) · Returns the first node in the hierarchy from this *node* for which the specified *filter* returns a truthy value. Returns undefined if no such node is found. + +## *node*.path(*target*) {#node_path} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/path.js) · Returns the shortest path through the hierarchy from this *node* to the specified *target* node. The path starts at this *node*, ascends to the least common ancestor of this *node* and the *target* node, and then descends to the *target* node. This is useful for [hierarchical edge bundling](https://observablehq.com/@d3/hierarchical-edge-bundling). + +## *node*.links() {#node_links} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/links.js) · Returns an array of links for this *node* and its descendants, where each *link* is an object that defines source and target properties. The source of each link is the parent node, and the target is a child node. + +## *node*.sum(*value*) {#node_sum} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/sum.js) · Evaluates the specified *value* function for this *node* and each descendant in [post-order traversal](#node_eachAfter), and returns this *node*. The *node*.value property of each node is set to the numeric value returned by the specified function plus the combined value of all children. The function is passed the node’s data, and must return a non-negative number. The *value* accessor is evaluated for *node* and every descendant, including internal nodes; if you only want leaf nodes to have internal value, then return zero for any node with children. [For example](https://observablehq.com/@d3/treemap-by-count), as an alternative to [*node*.count](#node_count): + +```js +root.sum((d) => d.value ? 1 : 0); +``` + +You must call *node*.sum or [*node*.count](#node_count) before invoking a hierarchical layout that requires *node*.value, such as [treemap](./treemap.md). For example: + +```js +// Construct the treemap layout. +const treemap = d3.treemap(); +treemap.size([width, height]); +treemap.padding(2); + +// Sum and sort the data. +root.sum((d) => d.value); +root.sort((a, b) => b.height - a.height || b.value - a.value); + +// Compute the treemap layout. +treemap(root); + +// Retrieve all descendant nodes. +const nodes = root.descendants(); +``` + +Since the API supports [method chaining](https://en.wikipedia.org/wiki/Method_chaining), you can also say: + +```js +d3.treemap() + .size([width, height]) + .padding(2) + (root + .sum((d) => d.value) + .sort((a, b) => b.height - a.height || b.value - a.value)) + .descendants() +``` + +This example assumes that the node data has a value field. + +## *node*.count() {#node_count} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/count.js) · Computes the number of leaves under this *node* and assigns it to *node*.value, and similarly for every descendant of *node*. If this *node* is a leaf, its count is one. Returns this *node*. See also [*node*.sum](#node_sum). + +## *node*.sort(compare) {#node_sort} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/sort.js) · Sorts the children of this *node*, if any, and each of this *node*’s descendants’ children, in [pre-order traversal](#node_eachBefore) using the specified *compare* function, and returns this *node*. + +The specified function is passed two nodes *a* and *b* to compare. If *a* should be before *b*, the function must return a value less than zero; if *b* should be before *a*, the function must return a value greater than zero; otherwise, the relative order of *a* and *b* are not specified. See [*array*.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) for more. + +Unlike [*node*.sum](#node_sum), the *compare* function is passed two [nodes](#hierarchy) rather than two nodes’ data. For example, if the data has a value property, this sorts nodes by the descending aggregate value of the node and all its descendants, as is recommended for [circle-packing](./pack.md): + +```js +root + .sum((d) => d.value) + .sort((a, b) => b.value - a.value); +``` + +Similarly, to sort nodes by descending height (greatest distance from any descendant leaf) and then descending value, as is recommended for [treemaps](./treemap.md) and [icicles](./partition.md): + +```js +root + .sum((d) => d.value) + .sort((a, b) => b.height - a.height || b.value - a.value); +``` + +To sort nodes by descending height and then ascending id, as is recommended for [trees](./tree.md) and [dendrograms](./cluster.md): + +```js +root + .sum((d) => d.value) + .sort((a, b) => b.height - a.height || d3.ascending(a.id, b.id)); +``` + +You must call *node*.sort before invoking a hierarchical layout if you want the new sort order to affect the layout; see [*node*.sum](#node_sum) for an example. + +## node[Symbol.iterator]\(\) {#node_iterator} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/iterator.js) · Returns an iterator over the *node*’s descendants in breadth-first order. For example: + +```js +for (const descendant of node) { + console.log(descendant); +} +``` + +## *node*.each(*function*, *that*) {#node_each} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/each.js) · Invokes the specified *function* for *node* and each descendant in [breadth-first order](https://en.wikipedia.org/wiki/Breadth-first_search), such that a given *node* is only visited if all nodes of lesser depth have already been visited, as well as all preceding nodes of the same depth. The specified function is passed the current *descendant*, the zero-based traversal *index*, and this *node*. If *that* is specified, it is the this context of the callback. + +## *node*.eachAfter(*function*, *that*) {#node_eachAfter} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/eachAfter.js) · Invokes the specified *function* for *node* and each descendant in [post-order traversal](https://en.wikipedia.org/wiki/Tree_traversal#Post-order), such that a given *node* is only visited after all of its descendants have already been visited. The specified function is passed the current *descendant*, the zero-based traversal *index*, and this *node*. If *that* is specified, it is the this context of the callback. + +## *node*.eachBefore(*function*, *that*) {#node_eachBefore} + +[Examples](https://observablehq.com/@d3/visiting-a-d3-hierarchy) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/eachBefore.js) · Invokes the specified *function* for *node* and each descendant in [pre-order traversal](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order), such that a given *node* is only visited after all of its ancestors have already been visited. The specified function is passed the current *descendant*, the zero-based traversal *index*, and this *node*. If *that* is specified, it is the this context of the callback. + +## *node*.copy() {#node_copy} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/hierarchy/index.js) · Return a deep copy of the subtree starting at this *node*. (The returned deep copy shares the same data, however.) The returned node is the root of a new tree; the returned node’s parent is always null and its depth is always zero. diff --git a/docs/d3-hierarchy/pack.md b/docs/d3-hierarchy/pack.md new file mode 100644 index 00000000000000..2e82d559bc23de --- /dev/null +++ b/docs/d3-hierarchy/pack.md @@ -0,0 +1,44 @@ +# Pack {#Pack} + +[Circle-Packing](https://observablehq.com/@d3/circle-packing) + +[Examples](https://observablehq.com/@d3/circle-packing) · Enclosure diagrams use containment (nesting) to represent a hierarchy. The size of the leaf circles encodes a quantitative dimension of the data. The enclosing circles show the approximate cumulative size of each subtree, but due to wasted space there is some distortion; only the leaf nodes can be compared accurately. Although [circle packing](http://en.wikipedia.org/wiki/Circle_packing) does not use space as efficiently as a [treemap](./treemap.md), the “wasted” space more prominently reveals the hierarchical structure. + +## pack() {#pack} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/index.js) · Creates a new pack layout with the default settings. + +### *pack*(*root*) {#_pack} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/index.js) · Lays out the specified *root* [hierarchy](./hierarchy.md), assigning the following properties on *root* and its descendants: + +* *node*.x - the *x*-coordinate of the circle’s center +* *node*.y - the y coordinate of the circle’s center +* *node*.r - the radius of the circle + +You must call [*root*.sum](./hierarchy.md#node_sum) before passing the hierarchy to the pack layout. You probably also want to call [*root*.sort](./hierarchy.md#node_sort) to order the hierarchy before computing the layout. + +## *pack*.radius(*radius*) {#pack_radius} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/index.js) · If *radius* is specified, sets the pack layout’s radius accessor to the specified function and returns this pack layout. If *radius* is not specified, returns the current radius accessor, which defaults to null. If the radius accessor is null, the radius of each leaf circle is derived from the leaf *node*.value (computed by [*node*.sum](./hierarchy.md#node_sum)); the radii are then scaled proportionally to fit the [layout size](#pack_size). If the radius accessor is not null, the radius of each leaf circle is specified exactly by the function. + +## *pack*.size(*size*) {#pack_size} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/index.js) · If *size* is specified, sets this pack layout’s size to the specified two-element array of numbers [*width*, *height*] and returns this pack layout. If *size* is not specified, returns the current size, which defaults to [1, 1]. + +## *pack*.padding(*padding*) {#pack_padding} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/index.js) · If *padding* is specified, sets this pack layout’s padding accessor to the specified number or function and returns this pack layout. If *padding* is not specified, returns the current padding accessor, which defaults to the constant zero. When siblings are packed, tangent siblings will be separated by approximately the specified padding; the enclosing parent circle will also be separated from its children by approximately the specified padding. If an [explicit radius](#pack_radius) is not specified, the padding is approximate because a two-pass algorithm is needed to fit within the [layout size](#pack_size): the circles are first packed without padding; a scaling factor is computed and applied to the specified padding; and lastly the circles are re-packed with padding. + +## packSiblings(*circles*) {#packSiblings} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/siblings.js) · Packs the specified array of *circles*, each of which must have a *circle*.r property specifying the circle’s radius. Assigns the following properties to each circle: + +* *circle*.x - the *x*-coordinate of the circle’s center +* *circle*.y - the y coordinate of the circle’s center + +The circles are positioned according to the front-chain packing algorithm by [Wang *et al.*](https://dl.acm.org/citation.cfm?id=1124851) + +## packEnclose(*circles*) {#packEnclose} + +[Examples](https://observablehq.com/@d3/d3-packenclose) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/pack/enclose.js) · Computes the [smallest circle](https://en.wikipedia.org/wiki/Smallest-circle_problem) that encloses the specified array of *circles*, each of which must have a *circle*.r property specifying the circle’s radius, and *circle*.x and *circle*.y properties specifying the circle’s center. The enclosing circle is computed using the [Matoušek-Sharir-Welzl algorithm](http://www.inf.ethz.ch/personal/emo/PublFiles/SubexLinProg_ALG16_96.pdf). (See also [Apollonius’ Problem](https://bl.ocks.org/mbostock/751fdd637f4bc2e3f08b).) diff --git a/docs/d3-hierarchy/partition.md b/docs/d3-hierarchy/partition.md new file mode 100644 index 00000000000000..73177e2d51980b --- /dev/null +++ b/docs/d3-hierarchy/partition.md @@ -0,0 +1,32 @@ +# Partition {#Partition} + +[Partition](https://observablehq.com/@d3/icicle) + +[Examples](https://observablehq.com/@d3/icicle) · The partition layout produces adjacency diagrams: a space-filling variant of a [node-link tree diagram](./tree.md). Rather than drawing a link between parent and child in the hierarchy, nodes are drawn as solid areas (either arcs or rectangles), and their placement relative to other nodes reveals their position in the hierarchy. The size of the nodes encodes a quantitative dimension that would be difficult to show in a node-link diagram. + +## partition() {#partition} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/partition.js) · Creates a new partition layout with the default settings. + +## *partition*(*root*) {#_partition} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/partition.js) · Lays out the specified *root* [hierarchy](./hierarchy.md), assigning the following properties on *root* and its descendants: + +* *node*.x0 - the left edge of the rectangle +* *node*.y0 - the top edge of the rectangle +* *node*.x1 - the right edge of the rectangle +* *node*.y1 - the bottom edge of the rectangle + +You must call [*root*.sum](./hierarchy.md#node_sum) before passing the hierarchy to the partition layout. You probably also want to call [*root*.sort](./hierarchy.md#node_sort) to order the hierarchy before computing the layout. + +## *partition*.size(*size*) {#partition_size} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/partition.js) · If *size* is specified, sets this partition layout’s size to the specified two-element array of numbers [*width*, *height*] and returns this partition layout. If *size* is not specified, returns the current size, which defaults to [1, 1]. + +## *partition*.round(*round*) {#partition_round} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/partition.js) · If *round* is specified, enables or disables rounding according to the given boolean and returns this partition layout. If *round* is not specified, returns the current rounding state, which defaults to false. + +## *partition*.padding(*padding*) {#partition_padding} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/partition.js) · If *padding* is specified, sets the padding to the specified number and returns this partition layout. If *padding* is not specified, returns the current padding, which defaults to zero. The padding is used to separate a node’s adjacent children. diff --git a/docs/d3-hierarchy/stratify.md b/docs/d3-hierarchy/stratify.md new file mode 100644 index 00000000000000..b7348536707823 --- /dev/null +++ b/docs/d3-hierarchy/stratify.md @@ -0,0 +1,141 @@ +# Stratify {#Stratify} + +[Examples](https://observablehq.com/@d3/d3-stratify) · Consider the following table of relationships: + +Name | Parent +------|-------- +Eve | +Cain | Eve +Seth | Eve +Enos | Seth +Noam | Seth +Abel | Eve +Awan | Eve +Enoch | Awan +Azura | Eve + +These names are conveniently unique, so we can unambiguously represent the hierarchy as a CSV file: + +``` +name,parent +Eve, +Cain,Eve +Seth,Eve +Enos,Seth +Noam,Seth +Abel,Eve +Awan,Eve +Enoch,Awan +Azura,Eve +``` + +To parse the CSV using [csvParse](../d3-dsv.md#csvParse): + +```js +const table = d3.csvParse(text); +``` + +This returns an array of {*name*, *parent*} objects: + +```json +[ + {"name": "Eve", "parent": ""}, + {"name": "Cain", "parent": "Eve"}, + {"name": "Seth", "parent": "Eve"}, + {"name": "Enos", "parent": "Seth"}, + {"name": "Noam", "parent": "Seth"}, + {"name": "Abel", "parent": "Eve"}, + {"name": "Awan", "parent": "Eve"}, + {"name": "Enoch", "parent": "Awan"}, + {"name": "Azura", "parent": "Eve"} +] +``` + +To convert to a [hierarchy](./hierarchy.md): + +```js +const root = d3.stratify() + .id((d) => d.name) + .parentId((d) => d.parent) + (table); +``` + +This hierarchy can now be passed to a hierarchical layout, such as [tree](./tree.md), for visualization. + +The stratify operator also works with [delimited paths](#stratify_path) as is common in file systems. + +## stratify() {#stratify} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js) · Constructs a new stratify operator with the default settings. + +```js +const stratify = d3.stratify(); +``` + +## *stratify*(*data*) {#_stratify} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js) · Generates a new hierarchy from the specified tabular *data*. + +```js +const root = stratify(data); +``` + +## *stratify*.id(*id*) {#stratify_id} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js) · If *id* is specified, sets the id accessor to the given function and returns this stratify operator. Otherwise, returns the current id accessor, which defaults to: + +```js +function id(d) { + return d.id; +} +``` + +The id accessor is invoked for each element in the input data passed to the [stratify operator](#_stratify), being passed the current datum (*d*) and the current index (*i*). The returned string is then used to identify the node’s relationships in conjunction with the [parent id](#stratify_parentId). For leaf nodes, the id may be undefined; otherwise, the id must be unique. (Null and the empty string are equivalent to undefined.) + +## *stratify*.parentId(*parentId*) {#stratify_parentId} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js) · If *parentId* is specified, sets the parent id accessor to the given function and returns this stratify operator. Otherwise, returns the current parent id accessor, which defaults to: + +```js +function parentId(d) { + return d.parentId; +} +``` + +The parent id accessor is invoked for each element in the input data passed to the [stratify operator](#_stratify), being passed the current datum (*d*) and the current index (*i*). The returned string is then used to identify the node’s relationships in conjunction with the [id](#stratify_id). For the root node, the parent id should be undefined. (Null and the empty string are equivalent to undefined.) There must be exactly one root node in the input data, and no circular relationships. + +## *stratify*.path(*path*) {#stratify_path} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/stratify.js) · If *path* is specified, sets the path accessor to the given function and returns this stratify operator. Otherwise, returns the current path accessor, which defaults to undefined. + +If a path accessor is set, the [id](#stratify_id) and [parentId](#stratify_parentId) accessors are ignored, and a unix-like hierarchy is computed on the slash-delimited strings returned by the path accessor, imputing parent nodes and ids as necessary. + +For example, given the output of the UNIX find command in the local directory: + +```js +const paths = [ + "axes.js", + "channel.js", + "context.js", + "legends.js", + "legends/ramp.js", + "marks/density.js", + "marks/dot.js", + "marks/frame.js", + "scales/diverging.js", + "scales/index.js", + "scales/ordinal.js", + "stats.js", + "style.js", + "transforms/basic.js", + "transforms/bin.js", + "transforms/centroid.js", + "warnings.js", +]; +``` + +You can say: + +```js +const root = d3.stratify().path((d) => d)(paths); +``` diff --git a/docs/d3-hierarchy/tree.md b/docs/d3-hierarchy/tree.md new file mode 100644 index 00000000000000..5fe655645f4fd1 --- /dev/null +++ b/docs/d3-hierarchy/tree.md @@ -0,0 +1,70 @@ + + +# Tree {#Tree} + + + +[Examples](https://observablehq.com/@d3/tidy-tree) · The tree layout produces tidy node-link diagrams of trees using the [Reingold–Tilford “tidy” algorithm](http://reingold.co/tidier-drawings.pdf), improved to run in linear time by [Buchheim *et al.*](http://dirk.jivas.de/papers/buchheim02improving.pdf) Tidy trees are typically more compact than [dendrograms](./cluster.md). + +## tree() {#tree} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/tree.js) · Creates a new tree layout with default settings. + +## *tree*(*root*) {#_tree} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/tree.js) · Lays out the specified *root* [hierarchy](./hierarchy.md), assigning the following properties on *root* and its descendants: + +* *node*.x - the *x*-coordinate of the node +* *node*.y - the y coordinate of the node + +The coordinates *x* and *y* represent an arbitrary coordinate system; for example, you can treat *x* as an angle and *y* as a radius to produce a [radial layout](https://observablehq.com/@d3/radial-tidy-tree). You may want to call [*root*.sort](./hierarchy.md#node_sort) before passing the hierarchy to the tree layout. + +## *tree*.size(*size*) {#tree_size} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/tree.js) · If *size* is specified, sets this tree layout’s size to the specified two-element array of numbers [*width*, *height*] and returns this tree layout. If *size* is not specified, returns the current layout size, which defaults to [1, 1]. A layout size of null indicates that a [node size](#tree_nodeSize) will be used instead. The coordinates *x* and *y* represent an arbitrary coordinate system; for example, to produce a [radial layout](https://observablehq.com/@d3/radial-tidy-tree), a size of [360, *radius*] corresponds to a breadth of 360° and a depth of *radius*. + +## *tree*.nodeSize(*size*) {#tree_nodeSize} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/tree.js) · If *size* is specified, sets this tree layout’s node size to the specified two-element array of numbers [*width*, *height*] and returns this tree layout. If *size* is not specified, returns the current node size, which defaults to null. A node size of null indicates that a [layout size](#tree_size) will be used instead. When a node size is specified, the root node is always positioned at ⟨0, 0⟩. + +## *tree*.separation(*separation*) {#tree_separation} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/tree.js) · If *separation* is specified, sets the separation accessor to the specified function and returns this tree layout. If *separation* is not specified, returns the current separation accessor, which defaults to: + +```js +function separation(a, b) { + return a.parent == b.parent ? 1 : 2; +} +``` + +A variation that is more appropriate for radial layouts reduces the separation gap proportionally to the radius: + +```js +function separation(a, b) { + return (a.parent == b.parent ? 1 : 2) / a.depth; +} +``` + +The separation accessor is used to separate neighboring nodes. The separation function is passed two nodes *a* and *b*, and must return the desired separation. The nodes are typically siblings, though the nodes may be more distantly related if the layout decides to place such nodes adjacent. diff --git a/docs/d3-hierarchy/treemap.md b/docs/d3-hierarchy/treemap.md new file mode 100644 index 00000000000000..03ff44fab1ee58 --- /dev/null +++ b/docs/d3-hierarchy/treemap.md @@ -0,0 +1,92 @@ +# Treemap {#Treemap} + +[Treemap](https://observablehq.com/@d3/treemap) + +[Examples](https://observablehq.com/@d3/treemap) · Introduced by [Ben Shneiderman](http://www.cs.umd.edu/hcil/treemap-history/) in 1991, a **treemap** recursively subdivides area into rectangles according to each node’s associated value. D3’s treemap implementation supports an extensible [tiling method](#treemap_tile): the default [squarified](#treemapSquarify) method seeks to generate rectangles with a [golden](https://en.wikipedia.org/wiki/Golden_ratio) aspect ratio; this offers better readability and size estimation than [slice-and-dice](#treemapSliceDice), which simply alternates between horizontal and vertical subdivision by depth. + +## treemap() {#treemap} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · Creates a new treemap layout with default settings. + +## *treemap*(*root*) {#_treemap} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · Lays out the specified *root* [hierarchy](./hierarchy.md), assigning the following properties on *root* and its descendants: + +* *node*.x0 - the left edge of the rectangle +* *node*.y0 - the top edge of the rectangle +* *node*.x1 - the right edge of the rectangle +* *node*.y1 - the bottom edge of the rectangle + +You must call [*root*.sum](./hierarchy.md#node_sum) before passing the hierarchy to the treemap layout. You probably also want to call [*root*.sort](./hierarchy.md#node_sort) to order the hierarchy before computing the layout. + +## *treemap*.tile(*tile*) {#treemap_tile} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *tile* is specified, sets the [tiling method](#treemap-tiling) to the specified function and returns this treemap layout. If *tile* is not specified, returns the current tiling method, which defaults to [treemapSquarify](#treemapSquarify) with the golden ratio. + +## *treemap*.size(*size*) {#treemap_size} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *size* is specified, sets this treemap layout’s size to the specified two-element array of numbers [*width*, *height*] and returns this treemap layout. If *size* is not specified, returns the current size, which defaults to [1, 1]. + +## *treemap*.round(*round*) {#treemap_round} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *round* is specified, enables or disables rounding according to the given boolean and returns this treemap layout. If *round* is not specified, returns the current rounding state, which defaults to false. + +## *treemap*.padding(*padding*) {#treemap_padding} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the [inner](#treemap_paddingInner) and [outer](#treemap_paddingOuter) padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current inner padding function. + +## *treemap*.paddingInner(*padding*) {#treemap_paddingInner} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the inner padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current inner padding function, which defaults to the constant zero. If *padding* is a function, it is invoked for each node with children, being passed the current node. The inner padding is used to separate a node’s adjacent children. + +## *treemap*.paddingOuter(*padding*) {#treemap_paddingOuter} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the [top](#treemap_paddingTop), [right](#treemap_paddingRight), [bottom](#treemap_paddingBottom) and [left](#treemap_paddingLeft) padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current top padding function. + +## *treemap*.paddingTop(*padding*) {#treemap_paddingTop} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the top padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current top padding function, which defaults to the constant zero. If *padding* is a function, it is invoked for each node with children, being passed the current node. The top padding is used to separate the top edge of a node from its children. + +## *treemap*.paddingRight(*padding*) {#treemap_paddingRight} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the right padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current right padding function, which defaults to the constant zero. If *padding* is a function, it is invoked for each node with children, being passed the current node. The right padding is used to separate the right edge of a node from its children. + +## *treemap*.paddingBottom(*padding*) {#treemap_paddingBottom} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the bottom padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current bottom padding function, which defaults to the constant zero. If *padding* is a function, it is invoked for each node with children, being passed the current node. The bottom padding is used to separate the bottom edge of a node from its children. + +## *treemap*.paddingLeft(*padding*) {#treemap_paddingLeft} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/index.js) · If *padding* is specified, sets the left padding to the specified number or function and returns this treemap layout. If *padding* is not specified, returns the current left padding function, which defaults to the constant zero. If *padding* is a function, it is invoked for each node with children, being passed the current node. The left padding is used to separate the left edge of a node from its children. + +## Treemap tiling + +Several built-in tiling methods are provided for use with [*treemap*.tile](#treemap_tile). + +### treemapBinary(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapBinary} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/binary.js) · Recursively partitions the specified *nodes* into an approximately-balanced binary tree, choosing horizontal partitioning for wide rectangles and vertical partitioning for tall rectangles. + +### treemapDice(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapDice} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/dice.js) · Divides the rectangular area specified by *x0*, *y0*, *x1*, *y1* horizontally according the value of each of the specified *node*’s children. The children are positioned in order, starting with the left edge (*x0*) of the given rectangle. If the sum of the children’s values is less than the specified *node*’s value (*i.e.*, if the specified *node* has a non-zero internal value), the remaining empty space will be positioned on the right edge (*x1*) of the given rectangle. + +### treemapSlice(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapSlice} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/slice.js) · Divides the rectangular area specified by *x0*, *y0*, *x1*, *y1* vertically according the value of each of the specified *node*’s children. The children are positioned in order, starting with the top edge (*y0*) of the given rectangle. If the sum of the children’s values is less than the specified *node*’s value (*i.e.*, if the specified *node* has a non-zero internal value), the remaining empty space will be positioned on the bottom edge (*y1*) of the given rectangle. + +### treemapSliceDice(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapSliceDice} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/sliceDice.js) · If the specified *node* has odd depth, delegates to [treemapSlice](#treemapSlice); otherwise delegates to [treemapDice](#treemapDice). + +### treemapSquarify(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapSquarify} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/squarify.js) · Implements the [squarified treemap](https://www.win.tue.nl/~vanwijk/stm.pdf) algorithm by Bruls *et al.*, which seeks to produce rectangles of a given [aspect ratio](#squarify_ratio). + +### treemapResquarify(*node*, *x0*, *y0*, *x1*, *y1*) {#treemapResquarify} + +[Examples](https://observablehq.com/@d3/animated-treemap) · [Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/resquarify.js) · Like [treemapSquarify](#treemapSquarify), except preserves the topology (node adjacencies) of the previous layout computed by d3.treemapResquarify, if there is one and it used the same [target aspect ratio](#squarify_ratio). This tiling method is good for animating changes to treemaps because it only changes node sizes and not their relative positions, thus avoiding distracting shuffling and occlusion. The downside of a stable update, however, is a suboptimal layout for subsequent updates: only the first layout uses the Bruls *et al.* squarified algorithm. + +### *squarify*.ratio(*ratio*) {#squarify_ratio} + +[Source](https://github.com/d3/d3-hierarchy/blob/main/src/treemap/squarify.js) · Specifies the desired aspect ratio of the generated rectangles. The *ratio* must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose *width*:*height* ratio is either 2:1 or 1:2. (However, you can approximately achieve this result by generating a square treemap at different dimensions, and then [stretching the treemap](https://observablehq.com/@d3/stretched-treemap) to the desired aspect ratio.) Furthermore, the specified *ratio* is merely a hint to the tiling algorithm; the rectangles are not guaranteed to have the specified aspect ratio. If not specified, the aspect ratio defaults to the golden ratio, φ = (1 + sqrt(5)) / 2, per [Kong *et al.*](http://vis.stanford.edu/papers/perception-treemaps) diff --git a/docs/d3-interpolate.md b/docs/d3-interpolate.md new file mode 100644 index 00000000000000..5dde98834936df --- /dev/null +++ b/docs/d3-interpolate.md @@ -0,0 +1,48 @@ + + +# d3-interpolate + +This module provides a variety of interpolation methods for blending between two values. Values may be numbers, colors, strings, arrays, or even deeply-nested objects. For example: + +```js +const i = d3.interpolateNumber(10, 20); +i(0.0); // 10 +i(0.2); // 12 +i(0.5); // 15 +i(1.0); // 20 +``` + +The returned function `i` is an *interpolator*. Given a starting value *a* and an ending value *b*, it takes a parameter *t* typically in [0, 1] and returns the corresponding interpolated value. An interpolator typically returns a value equivalent to *a* at *t* = 0 and a value equivalent to *b* at *t* = 1. + +You can interpolate more than just numbers. To find the perceptual midpoint between steelblue and brown: + +```js +d3.interpolateLab("steelblue", "brown")(0.5); // "rgb(142, 92, 109)" +``` + +Or, as a color ramp from *t* = 0 to *t* = 1: + + + +Here’s a more elaborate example demonstrating type inference used by [interpolate](./d3-interpolate/value.md#interpolate): + +```js +const i = d3.interpolate({colors: ["red", "blue"]}, {colors: ["white", "black"]}); +i(0.0); // {colors: ["rgb(255, 0, 0)", "rgb(0, 0, 255)"]} +i(0.5); // {colors: ["rgb(255, 128, 128)", "rgb(0, 0, 128)"]} +i(1.0); // {colors: ["rgb(255, 255, 255)", "rgb(0, 0, 0)"]} +``` + +Note that the generic value interpolator detects not only nested objects and arrays, but also color strings and numbers embedded in strings! + +See one of: + +* [Value interpolation](./d3-interpolate/value.md) +* [Color interpolation](./d3-interpolate/color.md) +* [Transform interpolation](./d3-interpolate/transform.md) +* [Zoom interpolation](./d3-interpolate/zoom.md) diff --git a/docs/d3-interpolate/color.md b/docs/d3-interpolate/color.md new file mode 100644 index 00000000000000..b711ef770ac0e7 --- /dev/null +++ b/docs/d3-interpolate/color.md @@ -0,0 +1,142 @@ + + +# Color interpolation + +Interpolators for colors in various color spaces. + +## interpolateRgb(*a*, *b*) {#interpolateRgb} + + + +```js +d3.interpolateRgb("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/rgb.js) · Returns an RGB color space interpolator between the two colors *a* and *b* with a configurable [gamma](#interpolate_gamma). If the gamma is not specified, it defaults to 1.0. The colors *a* and *b* need not be in RGB; they will be converted to RGB using [d3.rgb](../d3-color.md#rgb). The return value of the interpolator is an RGB string. + +## interpolateRgbBasis(*colors*) {#interpolateRgbBasis} + + + +```js +d3.interpolateRgbBasis(["purple", "green", "orange"]) +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/rgb.js) · Returns a uniform nonrational B-spline interpolator through the specified array of *colors*, which are converted to [RGB color space](../d3-color.md#rgb). Implicit control points are generated such that the interpolator returns *colors*[0] at *t* = 0 and *colors*[*colors*.length - 1] at *t* = 1. Opacity interpolation is not currently supported. See also [d3.interpolateBasis](#interpolateBasis), and see [d3-scale-chromatic](../d3-scale-chromatic.md) for examples. + +## interpolateRgbBasisClosed(*colors*) {#interpolateRgbBasisClosed} + + + +```js +d3.interpolateRgbBasisClosed(["purple", "green", "orange"]) +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/rgb.js) · Returns a uniform nonrational B-spline interpolator through the specified array of *colors*, which are converted to [RGB color space](../d3-color.md#rgb). The control points are implicitly repeated such that the resulting spline has cyclical C² continuity when repeated around *t* in [0,1]; this is useful, for example, to create cyclical color scales. Opacity interpolation is not currently supported. See also [d3.interpolateBasisClosed](#interpolateBasisClosed), and see [d3-scale-chromatic](../d3-scale-chromatic.md) for examples. + +## interpolateHsl(*a*, *b*) {#interpolateHsl} + + + +```js +d3.interpolateHsl("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/hsl.js) · Returns an HSL color space interpolator between the two colors *a* and *b*. The colors *a* and *b* need not be in HSL; they will be converted to HSL using [d3.hsl](../d3-color.md#hsl). If either color’s hue or saturation is NaN, the opposing color’s channel value is used. The shortest path between hues is used. The return value of the interpolator is an RGB string. + +## interpolateHslLong(*a*, *b*) {#interpolateHslLong} + + + +```js +d3.interpolateHslLong("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/hsl.js) · Like [interpolateHsl](#interpolateHsl), but does not use the shortest path between hues. + +## interpolateLab(*a*, *b*) {#interpolateLab} + + + +```js +d3.interpolateLab("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/lab.js) · Returns a [CIELAB color space](https://en.wikipedia.org/wiki/Lab_color_space#CIELAB) interpolator between the two colors *a* and *b*. The colors *a* and *b* need not be in CIELAB; they will be converted to CIELAB using [d3.lab](../d3-color.md#lab). The return value of the interpolator is an RGB string. + +## interpolateHcl(*a*, *b*) {#interpolateHcl} + + + +```js +d3.interpolateHcl("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/hcl.js) · Returns a [CIELChab color space](https://en.wikipedia.org/wiki/CIELAB_color_space#Cylindrical_representation:_CIELCh_or_CIEHLC) interpolator between the two colors *a* and *b*. The colors *a* and *b* need not be in CIELChab; they will be converted to CIELChab using [d3.hcl](../d3-color.md#hcl). If either color’s hue or chroma is NaN, the opposing color’s channel value is used. The shortest path between hues is used. The return value of the interpolator is an RGB string. + +## interpolateHclLong(*a*, *b*) {#interpolateHclLong} + + + +```js +d3.interpolateHclLong("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/hcl.js) · Like [interpolateHcl](#interpolateHcl), but does not use the shortest path between hues. + +## interpolateCubehelix(*a*, *b*) {#interpolateCubehelix} + + + +```js +d3.interpolateCubehelix("purple", "orange") +``` + + + +```js +d3.interpolateCubehelix.gamma(3)("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/cubehelix.js) · Returns a Cubehelix color space interpolator between the two colors *a* and *b* using a configurable [gamma](#interpolate_gamma). If the gamma is not specified, it defaults to 1.0. The colors *a* and *b* need not be in Cubehelix; they will be converted to Cubehelix using [d3.cubehelix](../d3-color.md#cubehelix). If either color’s hue or saturation is NaN, the opposing color’s channel value is used. The shortest path between hues is used. The return value of the interpolator is an RGB string. + +## interpolateCubehelixLong(*a*, *b*) {#interpolateCubehelixLong} + + + +```js +d3.interpolateCubehelixLong("purple", "orange") +``` + + + +```js +d3.interpolateCubehelixLong.gamma(3)("purple", "orange") +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/cubehelix.js) · Like [interpolateCubehelix](#interpolateCubehelix), but does not use the shortest path between hues. + +## *interpolateColor*.gamma(*gamma*) {#interpolateColor_gamma} + + + +```js +d3.interpolateRgb.gamma(2.2)("purple", "orange") +``` + +Given that *interpolate* is one of [interpolateRgb](#interpolateRgb), [interpolateCubehelix](#interpolateCubehelix) or [interpolateCubehelixLong](#interpolateCubehelixLong), returns a new interpolator factory of the same type using the specified *gamma*. See Eric Brasseur’s article, [Gamma error in picture scaling](http://www.ericbrasseur.org/gamma.html), for more on gamma correction. + +## interpolateHue(*a*, *b*) {#interpolateHue} + +```js +d3.interpolateHue(20, 340)(0.5) // 0 +``` + +[Examples](https://observablehq.com/@d3/working-with-color) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/hue.js) · Returns an interpolator between the two hue angles *a* and *b*. If either hue is NaN, the opposing value is used. The shortest path between hues is used. The return value of the interpolator is a number in [0, 360). + +Whereas standard interpolators blend from a starting value *a* at *t* = 0 to an ending value *b* at *t* = 1, spline interpolators smoothly blend multiple input values for *t* in [0,1] using piecewise polynomial functions. Only cubic uniform nonrational [B-splines](https://en.wikipedia.org/wiki/B-spline) are currently supported, also known as basis splines. diff --git a/docs/d3-interpolate/transform.md b/docs/d3-interpolate/transform.md new file mode 100644 index 00000000000000..27de3eb9a7a185 --- /dev/null +++ b/docs/d3-interpolate/transform.md @@ -0,0 +1,19 @@ +# Transform interpolation + +Interpolators for CSS and SVG transforms. The interpolation method is standardized by CSS: see [matrix decomposition for animation](http://www.w3.org/TR/css3-2d-transforms/#matrix-decomposition). + +## interpolateTransformCss(*a*, *b*) {#interpolateTransformCss} + +```js +d3.interpolateTransformCss("translateY(12px) scale(2)", "translateX(30px) rotate(5deg)")(0.5) // "translate(15px,6px) rotate(2.5deg) scale(1.5,1.5)" +``` + +[Examples](https://observablehq.com/@d3/d3-interpolatetransformcss) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/transform/index.js) · Returns an interpolator between the two 2D CSS transforms represented by *a* and *b*. Each transform is decomposed to a standard representation of translate, rotate, *x*-skew and scale; these component transformations are then interpolated. + +## interpolateTransformSvg(*a*, *b*) {#interpolateTransformSvg} + +```js +d3.interpolateTransformSvg("skewX(-60)", "skewX(60) translate(280,0)") // "translate(140,0) skewX(0)" +``` + +[Examples](https://observablehq.com/@d3/d3-interpolatetransformcss) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/transform/index.js) · Returns an interpolator between the two 2D SVG transforms represented by *a* and *b*. Each transform is decomposed to a standard representation of translate, rotate, *x*-skew and scale; these component transformations are then interpolated. diff --git a/docs/d3-interpolate/value.md b/docs/d3-interpolate/value.md new file mode 100644 index 00000000000000..bf0557dc1893eb --- /dev/null +++ b/docs/d3-interpolate/value.md @@ -0,0 +1,206 @@ + + +# Value interpolation + +These are the most general interpolators, suitable for most values. + +## interpolate(*a*, *b*) {#interpolate} + +[Examples](https://observablehq.com/@d3/d3-interpolate) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/value.js) · Returns an interpolator between the two arbitrary values *a* and *b*. + +```js +d3.interpolate("red", "blue")(0.5) // "rgb(128, 0, 128)" +``` + +The interpolator implementation is based on the type of the end value *b*, using the following algorithm: + +1. If *b* is null, undefined or a boolean, use the constant *b*. +2. If *b* is a number, use [interpolateNumber](#interpolateNumber). +3. If *b* is a [color](../d3-color.md#color) or a string coercible to a color, use [interpolateRgb](#interpolateRgb). +4. If *b* is a [date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date), use [interpolateDate](#interpolateDate). +5. If *b* is a string, use [interpolateString](#interpolateString). +6. If *b* is a [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) of numbers, use [interpolateNumberArray](#interpolateNumberArray). +7. If *b* is a generic [array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray), use [interpolateArray](#interpolateArray). +8. If *b* is coercible to a number, use [interpolateNumber](#interpolateNumber). +9. Use [interpolateObject](#interpolateObject). + +Based on the chosen interpolator, *a* is coerced to the suitable corresponding type. + +## interpolateNumber(*a*, *b*) {#interpolateNumber} + +[Examples](https://observablehq.com/@d3/d3-interpolatenumber) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/number.js) · Returns an interpolator between the two numbers *a* and *b*. + +```js +d3.interpolateNumber(20, 620)(0.8) // 500 +``` + +The returned interpolator is equivalent to: + +```js +function interpolator(t) { + return a * (1 - t) + b * t; +} +``` + +:::warning CAUTION +Avoid interpolating to or from the number zero when the interpolator is used to generate a string. When very small values are stringified, they may be converted to scientific notation, which is an invalid attribute or style property value in older browsers. For example, the number `0.0000001` is converted to the string `"1e-7"`. This is particularly noticeable with interpolating opacity. To avoid scientific notation, start or end the transition at 1e-6: the smallest value that is not stringified in scientific notation. +::: + +## interpolateRound(*a*, *b*) {#interpolateRound} + +[Examples](https://observablehq.com/@d3/d3-interpolatenumber) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/round.js) · Returns an interpolator between the two numbers *a* and *b*. + +```js +d3.interpolateNumber(20, 620)(0.821) // 513 +``` + +The interpolator is similar to [interpolateNumber](#interpolateNumber) except it will round the resulting value to the nearest integer. + +## interpolateString(*a*, *b*) {#interpolateString} + +[Examples](https://observablehq.com/@d3/d3-interpolatestring) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/string.js) · Returns an interpolator between the two strings *a* and *b*. + +```js +d3.interpolateString("20px", "32px")(0.5) // "26px" +``` + +The string interpolator finds numbers embedded in *a* and *b*, where each number is of the form understood by JavaScript. A few examples of numbers that will be detected within a string: `-1`, `42`, `3.14159`, and `6.0221413e+23`. + +For each number embedded in *b*, the interpolator will attempt to find a corresponding number in *a*. If a corresponding number is found, a numeric interpolator is created using [interpolateNumber](#interpolateNumber). The remaining parts of the string *b* are used as a template: the static parts of the string *b* remain constant for the interpolation, with the interpolated numeric values embedded in the template. + +For example, if *a* is `"300 12px sans-serif"`, and *b* is `"500 36px Comic-Sans"`, two embedded numbers are found. The remaining static parts (of string *b*) are a space between the two numbers (`" "`), and the suffix (`"px Comic-Sans"`). The result of the interpolator at *t* = 0.5 is `"400 24px Comic-Sans"`. + +## interpolateDate(*a*, *b*) {#interpolateDate} + +[Examples](https://observablehq.com/@d3/d3-interpolatedate) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/date.js) · Returns an interpolator between the two [dates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) *a* and *b*. + +```js +d3.interpolateDate(new Date("2014-01-01"), new Date("2024-01-01"))(0.5) // 2019-01-01 +``` + +:::warning CAUTION +**No defensive copy** of the returned date is created; the same Date instance is returned for every evaluation of the interpolator. No copy is made for performance reasons, as interpolators are often part of the inner loop of [animated transitions](../d3-transition.md). +::: + +## interpolateArray(*a*, *b*) {#interpolateArray} + +[Examples](https://observablehq.com/@d3/d3-interpolateobject) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/array.js) · Returns an interpolator between the two arrays *a* and *b*. + +```js +d3.interpolateArray([0, 0, 0], [1, 2, 3])(0.5) // [0.5, 1, 1.5] +``` + +If *b* is a typed array (e.g., Float64Array), [interpolateNumberArray](#interpolateNumberArray) is called instead. + +Internally, an array template is created that is the same length as *b*. For each element in *b*, if there exists a corresponding element in *a*, a generic interpolator is created for the two elements using [interpolate](#interpolate). If there is no such element, the static value from *b* is used in the template. Then, for the given parameter *t*, the template’s embedded interpolators are evaluated. The updated array template is then returned. + +For example, if *a* is the array `[0, 1]` and *b* is the array `[1, 10, 100]`, then the result of the interpolator for *t* = 0.5 is the array `[0.5, 5.5, 100]`. + +:::warning CAUTION +**No defensive copy** of the template array is created; modifications of the returned array may adversely affect subsequent evaluation of the interpolator. No copy is made for performance reasons; interpolators are often part of the inner loop of [animated transitions](../d3-transition.md). +::: + +## interpolateNumberArray(*a*, *b*) {#interpolateNumberArray} + +[Examples](https://observablehq.com/@d3/d3-interpolatenumberarray) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/numberArray.js) · Returns an interpolator between the two arrays of numbers *a* and *b*. + +```js +d3.interpolateNumberArray([0, 1], Float64Array.of(1, 3))(0.5) // [0.5, 2] +``` + +Internally, an array template is created that is the same type and length as *b*. For each element in *b*, if there exists a corresponding element in *a*, the values are directly interpolated in the array template. If there is no such element, the static value from *b* is copied. The updated array template is then returned. + +:::warning CAUTION +**No defensive copy** is made of the template array and the arguments *a* and *b*; modifications of these arrays may affect subsequent evaluation of the interpolator. +::: + +## interpolateObject(*a*, *b*) {#interpolateObject} + +[Examples](https://observablehq.com/@d3/d3-interpolateobject) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/object.js) · Returns an interpolator between the two objects *a* and *b*. + +```js +d3.interpolateObject({x: 0, y: 1}, {x: 1, y: 10, z: 100})(0.5) // {x: 0.5, y: 5.5, z: 100} +``` + +Internally, an object template is created that has the same properties as *b*. For each property in *b*, if there exists a corresponding property in *a*, a generic interpolator is created for the two elements using [interpolate](#interpolate). If there is no such property, the static value from *b* is used in the template. Then, for the given parameter *t*, the template's embedded interpolators are evaluated and the updated object template is then returned. + +For example, if *a* is the object `{x: 0, y: 1}` and *b* is the object `{x: 1, y: 10, z: 100}`, the result of the interpolator for *t* = 0.5 is the object `{x: 0.5, y: 5.5, z: 100}`. + +Object interpolation is particularly useful for *dataspace interpolation*, where data is interpolated rather than attribute values. For example, you can interpolate an object which describes an arc in a pie chart, and then use [arc](../d3-shape/arc.md) to compute the new SVG path data. + +:::warning CAUTION +**No defensive copy** of the template object is created; modifications of the returned object may adversely affect subsequent evaluation of the interpolator. No copy is made for performance reasons; interpolators are often part of the inner loop of [animated transitions](../d3-transition.md). +::: + +## interpolateBasis(*values*) {#interpolateBasis} + +[Examples](https://observablehq.com/@d3/d3-interpolatebasis) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/basis.js) · Returns a uniform nonrational B-spline interpolator through the specified array of *values*, which must be numbers. + +```js +d3.interpolateBasis([0, 0.1, 0.4, 1])(0.5) // 0.2604166666666667 +``` + +Implicit control points are generated such that the interpolator returns *values*[0] at *t* = 0 and *values*[*values*.length - 1] at *t* = 1. See also [curveBasis](../d3-shape/curve.md#curveBasis) and [interpolateRgbBasis](./color.md#interpolateRgbBasis). + +## interpolateBasisClosed(*values*) {#interpolateBasisClosed} + + +[Examples](https://observablehq.com/@d3/d3-interpolatebasis) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/basisClosed.js) · Returns a uniform nonrational B-spline interpolator through the specified array of *values*, which must be numbers. + +```js +d3.interpolateBasisClosed([0, 0.1, 0.4, 1])(0.5) // 0.45 +``` + +The control points are implicitly repeated such that the resulting one-dimensional spline has cyclical C² continuity when repeated around *t* in [0,1]. See also [curveBasisClosed](../d3-shape/curve.md#curveBasisClosed) and [interpolateRgbBasisClosed](./color.md#interpolateRgbBasisClosed). + +## interpolateDiscrete(*values*) {#interpolateDiscrete} + +[Examples](https://observablehq.com/@d3/d3-interpolatediscrete) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/discrete.js) · Returns a discrete interpolator for the given array of *values*. + +```js +d3.interpolateDiscrete(["red", "blue", "green"])(0.5) // "blue" +``` + +The returned interpolator maps *t* in [0, 1 / *n*) to *values*[0], *t* in [1 / *n*, 2 / *n*) to *values*[1], and so on, where *n* = *values*.length. In effect, this is a lightweight [quantize scale](../d3-scale.md#quantize-scales) with a fixed domain of [0, 1]. + +## quantize(*interpolator*, *n*) {#quantize} + +[Examples](https://observablehq.com/@d3/d3-quantize) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/quantize.js) · Returns *n* uniformly-spaced samples from the specified *interpolator*, where *n* is an integer greater than one. + + + +```js +d3.quantize(d3.interpolate("red", "blue"), 4) // ["rgb(255, 0, 0)", "rgb(170, 0, 85)", "rgb(85, 0, 170)", "rgb(0, 0, 255)"] +``` + +The first sample is always at *t* = 0, and the last sample is always at *t* = 1. This can be useful in generating a fixed number of samples from a given interpolator, such as to derive the range of a [quantize scale](../d3-scale.md#quantize-scales) from a [continuous interpolator](../d3-scale-chromatic.md#interpolateWarm). + +:::warning CAUTION +This method will not work with interpolators that do not return defensive copies of their output, such as [interpolateArray](#interpolateArray), [interpolateDate](#interpolateDate) and [interpolateObject](#interpolateObject). For those interpolators, you must wrap the interpolator and create a copy for each returned value. +::: + +## piecewise(*interpolate*, *values*) {#piecewise} + +[Examples](https://observablehq.com/@d3/d3-piecewise) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/piecewise.js) · Returns a piecewise interpolator, composing interpolators for each adjacent pair of *values*. + + + +```js +d3.piecewise(d3.interpolateRgb.gamma(2.2), ["red", "green", "blue"]) +``` + +If *interpolate* is not specified, defaults to [interpolate](#interpolate). + + + +```js +d3.piecewise(["red", "green", "blue"]) +``` + +The returned interpolator maps *t* in [0, 1 / (*n* - 1)] to *interpolate*(*values*[0], *values*[1]), *t* in [1 / (*n* - 1), 2 / (*n* - 1)] to *interpolate*(*values*[1], *values*[2]), and so on, where *n* = *values*.length. In effect, this is a lightweight [linear scale](../d3-scale.md#linear-scales). diff --git a/docs/d3-interpolate/zoom.md b/docs/d3-interpolate/zoom.md new file mode 100644 index 00000000000000..546cd71fe71090 --- /dev/null +++ b/docs/d3-interpolate/zoom.md @@ -0,0 +1,21 @@ +# Zoom interpolation + +An interpolator for zooming smoothly between two views of a two-dimensional plane based on [“Smooth and efficient zooming and panning”](http://www.win.tue.nl/~vanwijk/zoompan.pdf) by Jarke J. van Wijk and Wim A.A. Nuij. + +## interpolateZoom(*a*, *b*) {#interpolateZoom} + +```js +d3.interpolateZoom([30, 30, 40], [135, 85, 60])(0.5) // [72, 52, 126.04761005270991] +``` + +[Examples](https://observablehq.com/@d3/d3-interpolatezoom) · [Source](https://github.com/d3/d3-interpolate/blob/main/src/zoom.js) · Returns an interpolator between the two views *a* and *b*. Each view is defined as an array of three numbers: *cx*, *cy* and *width*. The first two coordinates *cx*, *cy* represent the center of the viewport; the last coordinate *width* represents the size of the viewport. + +The returned interpolator exposes a *interpolate*.duration property which encodes the recommended transition duration in milliseconds. This duration is based on the path length of the curved trajectory through *xy* space. If you want a slower or faster transition, multiply this by an arbitrary scale factor (V as described in the original paper). + +## *interpolateZoom*.rho(*rho*) {#interpolateZoom_rho} + +```js +d3.interpolateZoom.rho(0.5)([30, 30, 40], [135, 85, 60])(0.5) // [72, 52, 51.09549882328188] +``` + +[Source](https://github.com/d3/d3-interpolate/blob/main/src/zoom.js) · Given a [zoom interpolator](#interpolateZoom), returns a new zoom interpolator using the specified curvature *rho*. When *rho* is close to 0, the interpolator is almost linear. The default curvature is sqrt(2). diff --git a/docs/d3-path.md b/docs/d3-path.md new file mode 100644 index 00000000000000..d8a035f05b4b72 --- /dev/null +++ b/docs/d3-path.md @@ -0,0 +1,104 @@ +# d3-path + +[Examples](https://observablehq.com/@d3/d3-path) · Say you have some code that draws to a 2D canvas: + +```js +function drawCircle(context, radius) { + context.moveTo(radius, 0); + context.arc(0, 0, radius, 0, 2 * Math.PI); +} +``` + +The d3-path module lets you take this exact code and additionally render to [SVG](http://www.w3.org/TR/SVG/paths.html). It works by [serializing](#path_toString) [CanvasPathMethods](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls to [SVG path data](http://www.w3.org/TR/SVG/paths.html#PathData). For example: + +```js +const path = d3.path(); +drawCircle(path, 40); +path.toString(); // "M40,0A40,40,0,1,1,-40,0A40,40,0,1,1,40,0" +``` + +Now code you write once can be used with both Canvas (for performance) and SVG (for convenience). For a practical example, see [d3-shape](./d3-shape.md). + +## path() {#path} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Constructs a new path serializer that implements [CanvasPathMethods](http://www.w3.org/TR/2dcontext/#canvaspathmethods). + +## *path*.moveTo(*x*, *y*) {#path_moveTo} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Move to the specified point ⟨*x*, *y*⟩. Equivalent to [*context*.moveTo](http://www.w3.org/TR/2dcontext/#dom-context-2d-moveto) and SVG’s [“moveto” command](http://www.w3.org/TR/SVG/paths.html#PathDataMovetoCommands). + +```js +path.moveTo(100, 100); +``` + +## *path*.closePath() {#path_closePath} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Ends the current subpath and causes an automatic straight line to be drawn from the current point to the initial point of the current subpath. Equivalent to [*context*.closePath](http://www.w3.org/TR/2dcontext/#dom-context-2d-closepath) and SVG’s [“closepath” command](http://www.w3.org/TR/SVG/paths.html#PathDataClosePathCommand). + +```js +path.closePath(); +``` + +## *path*.lineTo(*x*, *y*) {#path_lineTo} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Draws a straight line from the current point to the specified point ⟨*x*, *y*⟩. Equivalent to [*context*.lineTo](http://www.w3.org/TR/2dcontext/#dom-context-2d-lineto) and SVG’s [“lineto” command](http://www.w3.org/TR/SVG/paths.html#PathDataLinetoCommands). + +```js +path.lineTo(200, 200); +``` + +## *path*.quadraticCurveTo(*cpx*, *cpy*, *x*, *y*) {#path_quadraticCurveTo} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Draws a quadratic Bézier segment from the current point to the specified point ⟨*x*, *y*⟩, with the specified control point ⟨*cpx*, *cpy*⟩. Equivalent to [*context*.quadraticCurveTo](http://www.w3.org/TR/2dcontext/#dom-context-2d-quadraticcurveto) and SVG’s [quadratic Bézier curve commands](http://www.w3.org/TR/SVG/paths.html#PathDataQuadraticBezierCommands). + +```js +path.quadraticCurveTo(200, 0, 200, 200); +``` + +## *path*.bezierCurveTo(*cpx1*, *cpy1*, *cpx2*, *cpy2*, *x*, *y*) {#path_bezierCurveTo} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Draws a cubic Bézier segment from the current point to the specified point ⟨*x*, *y*⟩, with the specified control points ⟨*cpx1*, *cpy1*⟩ and ⟨*cpx2*, *cpy2*⟩. Equivalent to [*context*.bezierCurveTo](http://www.w3.org/TR/2dcontext/#dom-context-2d-beziercurveto) and SVG’s [cubic Bézier curve commands](http://www.w3.org/TR/SVG/paths.html#PathDataCubicBezierCommands). + +```js +path.bezierCurveTo(200, 0, 0, 200, 200, 200); +``` + +## *path*.arcTo(*x1*, *y1*, *x2*, *y2*, *radius*) {#path_arcTo} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Draws a circular arc segment with the specified *radius* that starts tangent to the line between the current point and the specified point ⟨*x1*, *y1*⟩ and ends tangent to the line between the specified points ⟨*x1*, *y1*⟩ and ⟨*x2*, *y2*⟩. If the first tangent point is not equal to the current point, a straight line is drawn between the current point and the first tangent point. Equivalent to [*context*.arcTo](http://www.w3.org/TR/2dcontext/#dom-context-2d-arcto) and uses SVG’s [elliptical arc curve commands](http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands). + +```js +path.arcTo(150, 150, 300, 10, 40); +``` + +## *path*.arc(*x*, *y*, *radius*, *startAngle*, *endAngle*, *anticlockwise*) {#path_arc} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Draws a circular arc segment with the specified center ⟨*x*, *y*⟩, *radius*, *startAngle* and *endAngle*. If *anticlockwise* is true, the arc is drawn in the anticlockwise direction; otherwise, it is drawn in the clockwise direction. If the current point is not equal to the starting point of the arc, a straight line is drawn from the current point to the start of the arc. Equivalent to [*context*.arc](http://www.w3.org/TR/2dcontext/#dom-context-2d-arc) and uses SVG’s [elliptical arc curve commands](http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands). + +```js +path.arc(80, 80, 70, 0, Math.PI * 2); +``` + +## *path*.rect(*x*, *y*, *w*, *h*) {#path_rect} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Creates a new subpath containing just the four points ⟨*x*, *y*⟩, ⟨*x* + *w*, *y*⟩, ⟨*x* + *w*, *y* + *h*⟩, ⟨*x*, *y* + *h*⟩, with those four points connected by straight lines, and then marks the subpath as closed. Equivalent to [*context*.rect](http://www.w3.org/TR/2dcontext/#dom-context-2d-rect) and uses SVG’s [“lineto” commands](http://www.w3.org/TR/SVG/paths.html#PathDataLinetoCommands). + +```js +path.rect(10, 10, 140, 140); +``` + +## *path*.toString() {#path_toString} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Returns the string representation of this *path* according to SVG’s [path data specification](http://www.w3.org/TR/SVG/paths.html#PathData). + +```js +path.toString() // "M40,0A40,40,0,1,1,-40,0A40,40,0,1,1,40,0" +``` + +## pathRound(*digits* = 3) {#pathRound} + +[Source](https://github.com/d3/d3-path/blob/main/src/path.js) · Like [path](#path), except limits the digits after the decimal to the specified number of *digits*. Useful for reducing the size of generated SVG path data. + +```js +const path = d3.pathRound(3); +``` diff --git a/docs/d3-polygon.md b/docs/d3-polygon.md new file mode 100644 index 00000000000000..b1a85fad5eb854 --- /dev/null +++ b/docs/d3-polygon.md @@ -0,0 +1,63 @@ + + +# d3-polygon + +This module provides a few basic geometric operations for two-dimensional polygons. Each polygon is represented as an array of two-element arrays [​[*x0*, *y0*], [*x1*, *y1*], …], and may either be closed (wherein the first and last point are the same) or open (wherein they are not). Typically polygons are in counterclockwise order, assuming a coordinate system where the origin is in the top-left corner. + +## polygonArea(*polygon*) {#polygonArea} + +```js +d3.polygonArea([[1, 1], [1.5, 0], [2, 1]]) // -0.5 +``` + +[Source](https://github.com/d3/d3-polygon/blob/main/src/area.js) · Returns the signed area of the specified *polygon*. If the vertices of the polygon are in counterclockwise order (assuming a coordinate system where the origin is in the top-left corner), the returned area is positive; otherwise it is negative, or zero. + +## polygonCentroid(*polygon*) {#polygonCentroid} + +```js +d3.polygonArea([[1, 1], [1.5, 0], [2, 1]]) // [1.5, 0.6666666666666666] +``` + +[Source](https://github.com/d3/d3-polygon/blob/main/src/centroid.js) · Returns the [centroid](https://en.wikipedia.org/wiki/Centroid) of the specified *polygon*. + +## polygonHull(*points*) {#polygonHull} + + + +```js +d3.polygonHull(points) // [[3.0872864263338777, -1.300100095019402], [1.6559368816733773, -2.5092525689499605], …] +``` + +[Source](https://github.com/d3/d3-polygon/blob/main/src/hull.js#L23) · Returns the [convex hull](https://en.wikipedia.org/wiki/Convex_hull) of the specified *points* using [Andrew’s monotone chain algorithm](http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain). The returned hull is represented as an array containing a subset of the input *points* arranged in counterclockwise order. Returns null if *points* has fewer than three elements. + +## polygonContains(*polygon*, *point*) {#polygonContains} + +```js +d3.polygonContains([[1, 1], [1.5, 0], [2, 1]], [1.5, 0.667]) // true +``` + +[Source](https://github.com/d3/d3-polygon/blob/main/src/contains.js) · Returns true if and only if the specified *point* is inside the specified *polygon*. + +## polygonLength(*polygon*) {#polygonLength} + +```js +d3.polygonLength([[1, 1], [1.5, 0], [2, 1]]) // 3.23606797749979 +``` + +[Source](https://github.com/d3/d3-polygon/blob/main/src/length.js) · Returns the length of the perimeter of the specified *polygon*. diff --git a/docs/d3-quadtree.md b/docs/d3-quadtree.md new file mode 100644 index 00000000000000..1cefc92b0e262d --- /dev/null +++ b/docs/d3-quadtree.md @@ -0,0 +1,377 @@ + + +# d3-quadtree + + + +A [quadtree](https://en.wikipedia.org/wiki/Quadtree) recursively partitions two-dimensional space into squares, dividing each square into four equally-sized squares. Each distinct point exists in a unique leaf [node](#quadtree-nodes); coincident points are represented by a linked list. Quadtrees can accelerate various spatial operations, such as the [Barnes–Hut approximation](https://en.wikipedia.org/wiki/Barnes–Hut_simulation) for computing many-body forces, collision detection, and searching for nearby points. + + + + +## quadtree(*data*, *x*, *y*) {#quadtree} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/quadtree.js) · Creates a new, empty quadtree with an empty [extent](#quadtree_extent) and the default [x](#quadtree_x) and [y](#quadtree_y) accessors. If *data* is specified, [adds](#quadtree_addAll) the specified iterable of data to the quadtree. + +```js +const tree = d3.quadtree(data); +``` + +This is equivalent to: + +```js +const tree = d3.quadtree().addAll(data); +``` + +If *x* and *y* are also specified, sets the [x](#quadtree_x) and [y](#quadtree_y) accessors to the specified functions before adding the specified iterable of data to the quadtree, equivalent to: + +```js +const tree = d3.quadtree().x(x).y(y).addAll(data); +``` + +## *quadtree*.x(x) {#quadtree_x} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/x.js) · If *x* is specified, sets the current x-coordinate accessor and returns the quadtree. + +```js +const tree = d3.quadtree().x((d) => d.x); +``` + +The x accessor is used to derive the x coordinate of data when [adding](#quadtree_add) to and [removing](#quadtree_remove) from the tree. It is also used when [finding](#quadtree_find) to re-access the coordinates of data previously added to the tree; therefore, the x and y accessors must be consistent, returning the same value given the same input. + +If *x* is not specified, returns the current x accessor. + +```js +tree.x() // (d) => d.x +``` + +The x accessor defaults to: + +```js +function x(d) { + return d[0]; +} +``` + +## *quadtree*.y(y) {#quadtree_y} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/y.js) · If *y* is specified, sets the current y-coordinate accessor and returns the quadtree. + +```js +const tree = d3.quadtree().y((d) => d.y); +``` + +The y accessor is used to derive the y coordinate of data when [adding](#quadtree_add) to and [removing](#quadtree_remove) from the tree. It is also used when [finding](#quadtree_find) to re-access the coordinates of data previously added to the tree; therefore, the x and y accessors must be consistent, returning the same value given the same input. + +If *y* is not specified, returns the current y accessor. + +```js +tree.y() // (d) => d.y +``` + +The y accessor defaults to: + +```js +function y(d) { + return d[1]; +} +``` + +## *quadtree*.extent(*extent*) {#quadtree_extent} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/extent.js) · If *extent* is specified, expands the quadtree to [cover](#quadtree_cover) the specified points [[*x0*, *y0*], [*x1*, *y1*]] and returns the quadtree. + +```js +const tree = d3.quadtree().extent([[0, 0], [1, 1]]); +``` + +If *extent* is not specified, returns the quadtree’s current extent [[*x0*, *y0*], [*x1*, *y1*]], where *x0* and *y0* are the inclusive lower bounds and *x1* and *y1* are the inclusive upper bounds, or undefined if the quadtree has no extent. + +```js +tree.extent() // [[0, 0], [2, 2]] +``` + +The extent may also be expanded by calling [*quadtree*.cover](#quadtree_cover) or [*quadtree*.add](#quadtree_add). + +## *quadtree*.cover(*x*, *y*) {#quadtree_cover} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/cover.js) · Expands the quadtree to cover the specified point ⟨*x*,*y*⟩, and returns the quadtree. + +```js +const tree = d3.quadtree().cover(0, 0).cover(1, 1); +``` + +If the quadtree’s extent already covers the specified point, this method does nothing. If the quadtree has an extent, the extent is repeatedly doubled to cover the specified point, wrapping the [root](#quadtree_root) [node](#quadtree-nodes) as necessary; if the quadtree is empty, the extent is initialized to the extent [[⌊*x*⌋, ⌊*y*⌋], [⌈*x*⌉, ⌈*y*⌉]]. (Rounding is necessary such that if the extent is later doubled, the boundaries of existing quadrants do not change due to floating point error.) + +## *quadtree*.add(*datum*) {#quadtree_add} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/add.js) · Adds the specified *datum* to the quadtree, deriving its coordinates ⟨*x*,*y*⟩ using the current [x](#quadtree_x) and [y](#quadtree_y) accessors, and returns the quadtree. + +```js +const tree = d3.quadtree().add([0, 0]); +``` + +If the new point is outside the current [extent](#quadtree_extent) of the quadtree, the quadtree is automatically expanded to [cover](#quadtree_cover) the new point. + +## *quadtree*.addAll(*data*) {#quadtree_addAll} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/add.js) · Adds the specified iterable of *data* to the quadtree, deriving each element’s coordinates ⟨*x*,*y*⟩ using the current [x](#quadtree_x) and [y](#quadtree_y) accessors, and return this quadtree. + +```js +const tree = d3.quadtree().addAll([[0, 0], [1, 2]]); +``` + +This is approximately equivalent to calling [*quadtree*.add](#quadtree_add) repeatedly: + +```js +for (let i = 0, n = data.length; i < n; ++i) { + quadtree.add(data[i]); +} +``` + +However, this method results in a more compact quadtree because the extent of the *data* is computed first before adding the data. + +## *quadtree*.remove(*datum*) {#quadtree_remove} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/remove.js) · Removes the specified *datum* from the quadtree, deriving its coordinates ⟨*x*,*y*⟩ using the current [x](#quadtree_x) and [y](#quadtree_y) accessors, and returns the quadtree. + +```js +tree.remove(data[0]); +``` + +If the specified *datum* does not exist in this quadtree (as determined by strict equality with *datum*, and independent of the computed position), this method does nothing. + +## *quadtree*.removeAll(*data*) {#quadtree_removeAll} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/remove.js) · Removes the specified *data* from the quadtree, deriving their coordinates ⟨*x*,*y*⟩ using the current [x](#quadtree_x) and [y](#quadtree_y) accessors, and returns the quadtree. + +```js +tree.removeAll(data); +``` + +If a specified datum does not exist in this quadtree (as determined by strict equality with *datum*, and independent of the computed position), it is ignored. + +## *quadtree*.copy() {#quadtree_copy} + +```js +const t1 = d3.quadtree(data); +const t2 = t1.copy(); +``` + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/quadtree.js) · Returns a copy of the quadtree. All [nodes](#quadtree-nodes) in the returned quadtree are identical copies of the corresponding node in the quadtree; however, any data in the quadtree is shared by reference and not copied. + +## *quadtree*.root() {#quadtree_root} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/root.js) · Returns the root [node](#quadtree-nodes) of the quadtree. + +```js +tree.root() // [{…}, empty × 2, {…}] +``` + +## *quadtree*.data() {#quadtree_data} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/data.js) · Returns an array of all data in the quadtree. + +```js +tree.data() // [[0, 0], [1, 2]] +``` + +## *quadtree*.size() {#quadtree_size} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/size.js) · Returns the total number of data in the quadtree. + +```js +tree.size() // 2 +``` + +## *quadtree*.find(*x*, *y*, *radius*) {#quadtree_find} + + + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/find.js) · Returns the datum closest to the position ⟨*x*,*y*⟩ with the given search *radius*. If *radius* is not specified, it defaults to infinity. + +```js-vue +tree.find({{findState.x.toFixed(3)}}, {{findState.y.toFixed(3)}}) // {{points[findState.i] && `[${points[findState.i].map((p) => p.toFixed(3)).join(", ")}]`}} +``` + +If there is no datum within the search area, returns undefined. + +```js +tree.find(10, 10, 1) // undefined +``` + +## *quadtree*.visit(*callback*) {#quadtree_visit} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/visit.js) · Visits each [node](#quadtree-nodes) in the quadtree in pre-order traversal, invoking the specified *callback* with arguments *node*, *x0*, *y0*, *x1*, *y1* for each node, where *node* is the node being visited, ⟨*x0*, *y0*⟩ are the lower bounds of the node, and ⟨*x1*, *y1*⟩ are the upper bounds, and returns the quadtree. (Assuming that positive *x* is right and positive *y* is down, as is typically the case in Canvas and SVG, ⟨*x0*, *y0*⟩ is the top-left corner and ⟨*x1*, *y1*⟩ is the lower-right corner; however, the coordinate system is arbitrary, so more formally *x0* <= *x1* and *y0* <= *y1*.) + +If the *callback* returns true for a given node, then the children of that node are not visited; otherwise, all child nodes are visited. This can be used to quickly visit only parts of the tree, for example when using the [Barnes–Hut approximation](https://en.wikipedia.org/wiki/Barnes–Hut_simulation). Note, however, that child quadrants are always visited in sibling order: top-left, top-right, bottom-left, bottom-right. In cases such as [search](#quadtree_find), visiting siblings in a specific order may be faster. + +As an example, the following visits the quadtree and returns all the nodes within a rectangular extent [xmin, ymin, xmax, ymax], ignoring quads that cannot possibly contain any such node: + +```js +function search(quadtree, xmin, ymin, xmax, ymax) { + const results = []; + quadtree.visit((node, x1, y1, x2, y2) => { + if (!node.length) { + do { + let d = node.data; + if (d[0] >= xmin && d[0] < xmax && d[1] >= ymin && d[1] < ymax) { + results.push(d); + } + } while (node = node.next); + } + return x1 >= xmax || y1 >= ymax || x2 < xmin || y2 < ymin; + }); + return results; +} +``` + +## *quadtree*.visitAfter(*callback*) {#quadtree_visitAfter} + +[Source](https://github.com/d3/d3-quadtree/blob/main/src/visitAfter.js) · Visits each [node](#quadtree-nodes) in the quadtree in post-order traversal, invoking the specified *callback* with arguments *node*, *x0*, *y0*, *x1*, *y1* for each node, where *node* is the node being visited, ⟨*x0*, *y0*⟩ are the lower bounds of the node, and ⟨*x1*, *y1*⟩ are the upper bounds, and returns the quadtree. (Assuming that positive *x* is right and positive *y* is down, as is typically the case in Canvas and SVG, ⟨*x0*, *y0*⟩ is the top-left corner and ⟨*x1*, *y1*⟩ is the lower-right corner; however, the coordinate system is arbitrary, so more formally *x0* <= *x1* and *y0* <= *y1*.) Returns *root*. + +## Quadtree nodes + +Internal nodes of the quadtree are represented as sparse four-element arrays in left-to-right, top-to-bottom order: + +* `0` - the top-left quadrant, if any. +* `1` - the top-right quadrant, if any. +* `2` - the bottom-left quadrant, if any. +* `3` - the bottom-right quadrant, if any. + +A child quadrant may be undefined if it is empty. + +Leaf nodes are represented as objects with the following properties: + +* `data` - the data associated with this point, as passed to [*quadtree*.add](#quadtree_add). +* `next` - the next datum in this leaf, if any. + +The `length` property may be used to distinguish leaf nodes from internal nodes: it is undefined for leaf nodes, and 4 for internal nodes. For example, to iterate over all data in a leaf node: + +```js +if (!node.length) do console.log(node.data); while (node = node.next); +``` + +The point’s x and y coordinates **must not be modified** while the point is in the quadtree. To update a point’s position, [remove](#quadtree_remove) the point and then re-[add](#quadtree_add) it to the quadtree at the new position. Alternatively, you may discard the existing quadtree entirely and create a new one from scratch; this may be more efficient if many of the points have moved. diff --git a/docs/d3-random.md b/docs/d3-random.md new file mode 100644 index 00000000000000..6056b46b27d573 --- /dev/null +++ b/docs/d3-random.md @@ -0,0 +1,318 @@ + + +# d3-random + +Generate random numbers from various distributions. For seeded random number generation, see [*random*.source](#random_source) and [randomLcg](#randomLcg). + +## randomUniform(*min*, *max*) {#randomUniform} + + + +```js +d3.randomUniform(6) // generate numbers ≥0 and <6 +``` + +[Examples](https://observablehq.com/@d3/d3-random#uniform) · [Source](https://github.com/d3/d3-random/blob/main/src/uniform.js) · Returns a function for generating random numbers with a [uniform distribution](https://en.wikipedia.org/wiki/Uniform_distribution_\(continuous\)). The minimum allowed value of a returned number is *min* (inclusive), and the maximum is *max* (exclusive). If *min* is not specified, it defaults to 0; if *max* is not specified, it defaults to 1. For example: + +## randomInt(*min*, *max*) {#randomInt} + + + +```js +d3.randomInt(100) // generate integers ≥0 and <100 +``` + +[Examples](https://observablehq.com/@d3/d3-random#int) · [Source](https://github.com/d3/d3-random/blob/main/src/int.js) · Returns a function for generating random integers with a [uniform distribution](https://en.wikipedia.org/wiki/Uniform_distribution_\(continuous\)). The minimum allowed value of a returned number is ⌊*min*⌋ (inclusive), and the maximum is ⌊*max* - 1⌋ (inclusive). If *min* is not specified, it defaults to 0. For example: + +## randomNormal(*mu*, *sigma*) {#randomNormal} + + + +```js +d3.randomNormal(0, 1) // mean of 0, and standard deviation of 1 +``` + +[Examples](https://observablehq.com/@d3/d3-random#normal) · [Source](https://github.com/d3/d3-random/blob/main/src/normal.js) · Returns a function for generating random numbers with a [normal (Gaussian) distribution](https://en.wikipedia.org/wiki/Normal_distribution). The expected value of the generated numbers is *mu*, with the given standard deviation *sigma*. If *mu* is not specified, it defaults to 0; if *sigma* is not specified, it defaults to 1. + +## randomLogNormal(*mu*, *sigma*) {#randomLogNormal} + + + +```js +d3.randomLogNormal(0, 1) +``` + +[Examples](https://observablehq.com/@d3/d3-random#logNormal) · [Source](https://github.com/d3/d3-random/blob/main/src/logNormal.js) · Returns a function for generating random numbers with a [log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_distribution). The expected value of the random variable’s natural logarithm is *mu*, with the given standard deviation *sigma*. If *mu* is not specified, it defaults to 0; if *sigma* is not specified, it defaults to 1. + +## randomBates(*n*) {#randomBates} + + + +```js +d3.randomBates(3) // generates numbers between 0 and 1 +``` + +[Examples](https://observablehq.com/@d3/d3-random#bates) · [Source](https://github.com/d3/d3-random/blob/main/src/bates.js) · Returns a function for generating random numbers with a [Bates distribution](https://en.wikipedia.org/wiki/Bates_distribution) with *n* independent variables. The case of fractional *n* is handled as with d3.randomIrwinHall, and d3.randomBates(0) is equivalent to d3.randomUniform(). + +## randomIrwinHall(*n*) {#randomIrwinHall} + + + +```js +d3.randomIrwinHall(3) // generates numbers between 0 and 3 +``` + +[Examples](https://observablehq.com/@d3/d3-random#irwinHall) · [Source](https://github.com/d3/d3-random/blob/main/src/irwinHall.js) · Returns a function for generating random numbers with an [Irwin–Hall distribution](https://en.wikipedia.org/wiki/Irwin–Hall_distribution) with *n* independent variables. If the fractional part of *n* is non-zero, this is treated as adding d3.randomUniform() times that fractional part to the integral part. + +## randomExponential(*lambda*) {#randomExponential} + + + +```js +d3.randomExponential(1 / 40) +``` + +[Examples](https://observablehq.com/@d3/d3-random#exponential) · [Source](https://github.com/d3/d3-random/blob/main/src/exponential.js) · Returns a function for generating random numbers with an [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution) with the rate *lambda*; equivalent to time between events in a [Poisson process](https://en.wikipedia.org/wiki/Poisson_point_process) with a mean of 1 / *lambda*. For example, randomExponential(1 / 40) generates random times between events where, on average, one event occurs every 40 units of time. + +## randomPareto(*alpha*) {#randomPareto} + + + +```js +d3.randomPareto(6) +``` + +[Examples](https://observablehq.com/@d3/d3-random#pareto) · [Source](https://github.com/d3/d3-random/blob/main/src/pareto.js) · Returns a function for generating random numbers with a [Pareto distribution](https://en.wikipedia.org/wiki/Pareto_distribution) with the shape *alpha*. The value *alpha* must be a positive value. + +## randomBernoulli(*p*) {#randomBernoulli} + + + +```js +d3.randomBernoulli(0.5) +``` + +[Examples](https://observablehq.com/@d3/d3-random#bernoulli) · [Source](https://github.com/d3/d3-random/blob/main/src/bernoulli.js) · Returns a function for generating either 1 or 0 according to a [Bernoulli distribution](https://en.wikipedia.org/wiki/Binomial_distribution) with 1 being returned with success probability *p* and 0 with failure probability *q* = 1 - *p*. The value *p* is in the range [0, 1]. + +## randomGeometric(*p*) {#randomGeometric} + + + +```js +d3.randomGeometric(0.1) +``` + +[Examples](https://observablehq.com/@d3/d3-random#geometric) · [Source](https://github.com/d3/d3-random/blob/main/src/geometric.js) · Returns a function for generating numbers with a [geometric distribution](https://en.wikipedia.org/wiki/Geometric_distribution) with success probability *p*. The value *p* is in the range [0, 1]. + +## randomBinomial(*n*, *p*) {#randomBinomial} + + + +```js +d3.randomBinomial(40, 0.5) +``` + +[Examples](https://observablehq.com/@d3/d3-random#binomial) · [Source](https://github.com/d3/d3-random/blob/main/src/binomial.js) · Returns a function for generating random numbers with a [binomial distribution](https://en.wikipedia.org/wiki/Binomial_distribution) with *n* the number of trials and *p* the probability of success in each trial. The value *n* is greater or equal to 0, and the value *p* is in the range [0, 1]. + +## randomGamma(*k*, *theta*) {#randomGamma} + + + +```js +d3.randomGamma(2, 1) +``` + +[Examples](https://observablehq.com/@parcly-taxel/the-gamma-and-beta-distributions) · [Source](https://github.com/d3/d3-random/blob/main/src/gamma.js) · Returns a function for generating random numbers with a [gamma distribution](https://en.wikipedia.org/wiki/Gamma_distribution) with *k* the shape parameter and *theta* the scale parameter. The value *k* must be a positive value; if *theta* is not specified, it defaults to 1. + +## randomBeta(*alpha*, *beta*) {#randomBeta} + + + +```js +d3.randomBeta(3, 1.5) +``` + +[Examples](https://observablehq.com/@parcly-taxel/the-gamma-and-beta-distributions) · [Source](https://github.com/d3/d3-random/blob/main/src/beta.js) · Returns a function for generating random numbers with a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) with *alpha* and *beta* shape parameters, which must both be positive. + +## randomWeibull(*k*, *a*, *b*) {#randomWeibull} + + + +```js +d3.randomWeibull(10) +``` + +[Examples](https://observablehq.com/@parcly-taxel/frechet-gumbel-weibull) · [Source](https://github.com/d3/d3-random/blob/main/src/weibull.js) · Returns a function for generating random numbers with one of the [generalized extreme value distributions](https://en.wikipedia.org/wiki/Generalized_extreme_value_distribution), depending on *k*: + +* If *k* is positive, the [Weibull distribution](https://en.wikipedia.org/wiki/Weibull_distribution) with shape parameter *k* +* If *k* is zero, the [Gumbel distribution](https://en.wikipedia.org/wiki/Gumbel_distribution) +* If *k* is negative, the [Fréchet distribution](https://en.wikipedia.org/wiki/Fréchet_distribution) with shape parameter −*k* + +In all three cases, *a* is the location parameter and *b* is the scale parameter. If *a* is not specified, it defaults to 0; if *b* is not specified, it defaults to 1. + +## randomCauchy(*a*, *b*) {#randomCauchy} + + + +```js +d3.randomCauchy(0, 1) // above, clipped to [-5, 5] because “fat tails” +``` + +[Examples](https://observablehq.com/@parcly-taxel/cauchy-and-logistic-distributions) · [Source](https://github.com/d3/d3-random/blob/main/src/cauchy.js) · Returns a function for generating random numbers with a [Cauchy distribution](https://en.wikipedia.org/wiki/Cauchy_distribution). *a* and *b* have the same meanings and default values as in d3.randomWeibull. + +## randomLogistic(*a*, *b*) {#randomLogistic} + + + +```js +d3.randomLogistic(0, 1) +``` + +[Examples](https://observablehq.com/@parcly-taxel/cauchy-and-logistic-distributions) · [Source](https://github.com/d3/d3-random/blob/main/src/logistic.js) · Returns a function for generating random numbers with a [logistic distribution](https://en.wikipedia.org/wiki/Logistic_distribution). *a* and *b* have the same meanings and default values as in d3.randomWeibull. + +## randomPoisson(*lambda*) {#randomPoisson} + + + +```js +d3.randomPoisson(400) +``` + +[Examples](https://observablehq.com/@parcly-taxel/the-poisson-distribution) · [Source](https://github.com/d3/d3-random/blob/main/src/poisson.js) · Returns a function for generating random numbers with a [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution) with mean *lambda*. + +## *random*.source(*source*) {#random_source} + +```js +const seed = 0.44871573888282423; // any number in [0, 1) +const random = d3.randomNormal.source(d3.randomLcg(seed))(0, 1); +random(); // -0.6253955998897069 +``` + +[Examples](https://observablehq.com/@d3/random-source) · Returns the same type of function for generating random numbers but where the given random number generator *source* is used as the source of randomness instead of Math.random. The given random number generator must implement the same interface as Math.random and only return values in the range [0, 1). This is useful when a seeded random number generator is preferable to Math.random. + +## randomLcg(*seed*) {#randomLcg} + + + +```js +d3.randomLcg(42) +``` + +[Examples](https://observablehq.com/@d3/d3-randomlcg) · [Source](https://github.com/d3/d3-random/blob/main/src/lcg.js) · Returns a [linear congruential generator](https://en.wikipedia.org/wiki/Linear_congruential_generator); this function can be called repeatedly to obtain pseudorandom values well-distributed on the interval [0,1) and with a long period (up to 1 billion numbers), similar to Math.random. A *seed* can be specified as a real number in the interval [0,1) or as any integer. In the latter case, only the lower 32 bits are considered. Two generators instanced with the same seed generate the same sequence, allowing to create reproducible pseudo-random experiments. If the *seed* is not specified, one is chosen using Math.random. diff --git a/docs/d3-scale-chromatic.md b/docs/d3-scale-chromatic.md new file mode 100644 index 00000000000000..6f7348faa8294c --- /dev/null +++ b/docs/d3-scale-chromatic.md @@ -0,0 +1,10 @@ +# d3-scale-chromatic + +This module provides sequential, diverging and categorical color schemes designed to work with [d3-scale](https://github.com/d3/d3-scale)’s [d3.scaleOrdinal](https://github.com/d3/d3-scale#ordinal-scales) and [d3.scaleSequential](https://github.com/d3/d3-scale#sequential-scales). Most of these schemes are derived from Cynthia A. Brewer’s [ColorBrewer](http://colorbrewer2.org). Since ColorBrewer publishes only discrete color schemes, the sequential and diverging scales are interpolated using [uniform B-splines](https://bl.ocks.org/mbostock/048d21cf747371b11884f75ad896e5a5). + +See one of: + +* [Categorical schemes](./d3-scale-chromatic/categorical.md) +* [Cyclical schemes](./d3-scale-chromatic/cyclical.md) +* [Diverging schemes](./d3-scale-chromatic/diverging.md) +* [Sequential schemes](./d3-scale-chromatic/sequential.md) diff --git a/docs/d3-scale-chromatic/categorical.md b/docs/d3-scale-chromatic/categorical.md new file mode 100644 index 00000000000000..ac5ba0829070c7 --- /dev/null +++ b/docs/d3-scale-chromatic/categorical.md @@ -0,0 +1,74 @@ + + +# Categorical schemes + +For example, to create a categorical color scale using the [Accent](#schemeAccent) color scheme: + +```js +const color = d3.scaleOrdinal(d3.schemeAccent); +``` + +## schemeCategory10 {#schemeCategory10} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/category10.js) · An array of ten categorical colors represented as RGB hexadecimal strings. + +## schemeAccent {#schemeAccent} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Accent.js) · An array of eight categorical colors represented as RGB hexadecimal strings. + +## schemeDark2 {#schemeDark2} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Dark2.js) · An array of eight categorical colors represented as RGB hexadecimal strings. + +## schemePaired {#schemePaired} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Paired.js) · An array of twelve categorical colors represented as RGB hexadecimal strings. + +## schemePastel1 {#schemePastel1} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Pastel1.js) · An array of nine categorical colors represented as RGB hexadecimal strings. + +## schemePastel2 {#schemePastel2} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Pastel2.js) · An array of eight categorical colors represented as RGB hexadecimal strings. + +## schemeSet1 {#schemeSet1} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Set1.js) · An array of nine categorical colors represented as RGB hexadecimal strings. + +## schemeSet2 {#schemeSet2} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Set2.js) · An array of eight categorical colors represented as RGB hexadecimal strings. + +## schemeSet3 {#schemeSet3} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Set3.js) · An array of twelve categorical colors represented as RGB hexadecimal strings. + +## schemeTableau10 {#schemeTableau10} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/categorical/Tableau10.js) · An array of ten categorical colors authored by Tableau as part of [Tableau 10](https://www.tableau.com/about/blog/2016/7/colors-upgrade-tableau-10-56782) represented as RGB hexadecimal strings. diff --git a/docs/d3-scale-chromatic/cyclical.md b/docs/d3-scale-chromatic/cyclical.md new file mode 100644 index 00000000000000..09ed016b5eeee1 --- /dev/null +++ b/docs/d3-scale-chromatic/cyclical.md @@ -0,0 +1,26 @@ + + +# Cyclical schemes + +To create a cyclical continuous color scale using the [Rainbow](#interpolateRainbow) color scheme: + +```js +const color = d3.scaleSequential(d3.interpolateRainbow); +``` + +## interpolateRainbow(*t*) {#interpolateRainbow} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/rainbow.js) · Given a number *t* in the range [0,1], returns the corresponding color from [d3.interpolateWarm](#interpolateWarm) scale from [0.0, 0.5] followed by the [d3.interpolateCool](#interpolateCool) scale from [0.5, 1.0], thus implementing the cyclical [less-angry rainbow](http://bl.ocks.org/mbostock/310c99e53880faec2434) color scheme. + +## interpolateSinebow(*t*) {#interpolateSinebow} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/sinebow.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “sinebow” color scheme by [Jim Bumgardner](https://krazydad.com/tutorials/makecolors.php) and [Charlie Loyd](http://basecase.org/env/on-rainbows). diff --git a/docs/d3-scale-chromatic/diverging.md b/docs/d3-scale-chromatic/diverging.md new file mode 100644 index 00000000000000..973f638e9dc888 --- /dev/null +++ b/docs/d3-scale-chromatic/diverging.md @@ -0,0 +1,133 @@ + + +# Diverging schemes + +Diverging color schemes are available as continuous interpolators (often used with [d3.scaleSequential](https://github.com/d3/d3-scale/blob/main/README.md#sequential-scales)) and as discrete schemes (often used with [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/main/README.md#ordinal-scales)). + +Each discrete scheme, such as [d3.schemeBrBG](#schemeBrBG), is represented as an array of arrays of hexadecimal color strings. The *k*th element of this array contains the color scheme of size *k*; for example, `d3.schemeBrBG[9]` contains an array of nine strings representing the nine colors of the brown-blue-green diverging color scheme. Diverging color schemes support a size *k* ranging from 3 to 11. + +To create a diverging continuous color scale using the [PiYG](#interpolatePiYG) color scheme: + +```js +const color = d3.scaleSequential(d3.interpolatePiYG); +``` + +To create a diverging discrete nine-color scale using the [PiYG](#schemePiYG) color scheme: + +```js +const color = d3.scaleOrdinal(d3.schemePiYG[9]); +``` + +## interpolateBrBG(t) {#interpolateBrBG} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/BrBG.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “BrBG” diverging color scheme represented as an RGB string. + +## interpolatePRGn(t) {#interpolatePRGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PRGn.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PRGn” diverging color scheme represented as an RGB string. + +## interpolatePiYG(t) {#interpolatePiYG} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PiYG.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PiYG” diverging color scheme represented as an RGB string. + +## interpolatePuOr(t) {#interpolatePuOr} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PuOr.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PuOr” diverging color scheme represented as an RGB string. + +## interpolateRdBu(t) {#interpolateRdBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdBu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “RdBu” diverging color scheme represented as an RGB string. + +## interpolateRdGy(t) {#interpolateRdGy} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdGy.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “RdGy” diverging color scheme represented as an RGB string. + +## interpolateRdYlBu(t) {#interpolateRdYlBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdYlBu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “RdYlBu” diverging color scheme represented as an RGB string. + +## interpolateRdYlGn(t) {#interpolateRdYlGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdYlGn.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “RdYlGn” diverging color scheme represented as an RGB string. + +## interpolateSpectral(t) {#interpolateSpectral} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/Spectral.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Spectral” diverging color scheme represented as an RGB string. + +## schemeBrBG[*k*] {#schemeBrBG} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/BrBG.js) · The “BrBG” discrete diverging color scheme of size *k* in 3–11. + +## schemePRGn[*k*] {#schemePRGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PRGn.js) · The “PRGn” discrete diverging color scheme of size *k* in 3–11. + +## schemePiYG[*k*] {#schemePiYG} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PiYG.js) · The “PiYG” discrete diverging color scheme of size *k* in 3–11. + +## schemePuOr[*k*] {#schemePuOr} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/PuOr.js) · The “PuOr” discrete diverging color scheme of size *k* in 3–11. + +## schemeRdBu[*k*] {#schemeRdBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdBu.js) · The “RdBu” discrete diverging color scheme of size *k* in 3–11. + +## schemeRdGy[*k*] {#schemeRdGy} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdGy.js) · The “RdGy” discrete diverging color scheme of size *k* in 3–11. + +## schemeRdYlBu[*k*] {#schemeRdYlBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdYlBu.js) · The “RdYlBu” discrete diverging color scheme of size *k* in 3–11. + +## schemeRdYlGn[*k*] {#schemeRdYlGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/RdYlGn.js) · The “RdYlGn” discrete diverging color scheme of size *k* in 3–11. + +## schemeSpectral[*k*] {#schemeSpectral} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/diverging/Spectral.js) · The “Spectral” discrete diverging color scheme of size *k* in 3–11. diff --git a/docs/d3-scale-chromatic/sequential.md b/docs/d3-scale-chromatic/sequential.md new file mode 100644 index 00000000000000..9929c53a61494a --- /dev/null +++ b/docs/d3-scale-chromatic/sequential.md @@ -0,0 +1,296 @@ + + +# Sequential schemes + +Sequential color schemes are available as continuous interpolators (often used with [d3.scaleSequential](https://github.com/d3/d3-scale/blob/main/README.md#sequential-scales)) and as discrete schemes (often used with [d3.scaleOrdinal](https://github.com/d3/d3-scale/blob/main/README.md#ordinal-scales)). + +Each discrete scheme, such as [d3.schemeBlues](#schemeBlues), is represented as an array of arrays of hexadecimal color strings. The *k*th element of this array contains the color scheme of size *k*; for example, `d3.schemeBlues[9]` contains an array of nine strings representing the nine colors of the blue sequential color scheme. Sequential color schemes support a size *k* ranging from 3 to 9. + +To create a sequential discrete nine-color scale using the [Blues](#schemeBlues) color scheme: + +```js +const color = d3.scaleOrdinal(d3.schemeBlues[9]); +``` + +To create a sequential continuous color scale using the [Blues](#interpolateBlues) color scheme: + +```js +const color = d3.scaleSequential(d3.interpolateBlues); +``` + +## interpolateBlues(t) {#interpolateBlues} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Blues.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Blues” sequential color scheme represented as an RGB string. + +## interpolateGreens(t) {#interpolateGreens} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Greens.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Greens” sequential color scheme represented as an RGB string. + +## interpolateGreys(t) {#interpolateGreys} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Greys.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Greys” sequential color scheme represented as an RGB string. + +## interpolateOranges(t) {#interpolateOranges} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Oranges.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Oranges” sequential color scheme represented as an RGB string. + +## interpolatePurples(t) {#interpolatePurples} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Purples.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Purples” sequential color scheme represented as an RGB string. + +## interpolateReds(t) {#interpolateReds} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Reds.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “Reds” sequential color scheme represented as an RGB string. + +## interpolateTurbo(t) {#interpolateTurbo} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/turbo.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “turbo” color scheme by [Anton Mikhailov](https://ai.googleblog.com/2019/08/turbo-improved-rainbow-colormap-for.html). + +## interpolateViridis(t) {#interpolateViridis} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/viridis.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “viridis” perceptually-uniform color scheme designed by [van der Walt, Smith and Firing](https://bids.github.io/colormap/) for matplotlib, represented as an RGB string. + +## interpolateInferno(t) {#interpolateInferno} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/viridis.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “inferno” perceptually-uniform color scheme designed by [van der Walt and Smith](https://bids.github.io/colormap/) for matplotlib, represented as an RGB string. + +## interpolateMagma(t) {#interpolateMagma} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/viridis.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “magma” perceptually-uniform color scheme designed by [van der Walt and Smith](https://bids.github.io/colormap/) for matplotlib, represented as an RGB string. + +## interpolatePlasma(t) {#interpolatePlasma} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/viridis.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “plasma” perceptually-uniform color scheme designed by [van der Walt and Smith](https://bids.github.io/colormap/) for matplotlib, represented as an RGB string. + +## interpolateCividis(t) {#interpolateCividis} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/cividis.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “cividis” color vision deficiency-optimized color scheme designed by [Nuñez, Anderton, and Renslow](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0199239), represented as an RGB string. + +## interpolateWarm(t) {#interpolateWarm} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/rainbow.js) · Given a number *t* in the range [0,1], returns the corresponding color from a 180° rotation of [Niccoli’s perceptual rainbow](https://mycarta.wordpress.com/2013/02/21/perceptual-rainbow-palette-the-method/), represented as an RGB string. + +## interpolateCool(t) {#interpolateCool} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/rainbow.js) · Given a number *t* in the range [0,1], returns the corresponding color from [Niccoli’s perceptual rainbow](https://mycarta.wordpress.com/2013/02/21/perceptual-rainbow-palette-the-method/), represented as an RGB string. + +## interpolateCubehelixDefault(t) {#interpolateCubehelixDefault} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/cubehelix.js) · Given a number *t* in the range [0,1], returns the corresponding color from [Green’s default Cubehelix](http://www.mrao.cam.ac.uk/~dag/CUBEHELIX/) represented as an RGB string. + +## interpolateBuGn(t) {#interpolateBuGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/BuGn.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “BuGn” sequential color scheme represented as an RGB string. + +## interpolateBuPu(t) {#interpolateBuPu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/BuPu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “BuPu” sequential color scheme represented as an RGB string. + +## interpolateGnBu(t) {#interpolateGnBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/GnBu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “GnBu” sequential color scheme represented as an RGB string. + +## interpolateOrRd(t) {#interpolateOrRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/OrRd.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “OrRd” sequential color scheme represented as an RGB string. + +## interpolatePuBuGn(t) {#interpolatePuBuGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuBuGn.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PuBuGn” sequential color scheme represented as an RGB string. + +## interpolatePuBu(t) {#interpolatePuBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuBu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PuBu” sequential color scheme represented as an RGB string. + +## interpolatePuRd(t) {#interpolatePuRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuRd.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “PuRd” sequential color scheme represented as an RGB string. + +## interpolateRdPu(t) {#interpolateRdPu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/RdPu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “RdPu” sequential color scheme represented as an RGB string. + +## interpolateYlGnBu(t) {#interpolateYlGnBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlGnBu.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “YlGnBu” sequential color scheme represented as an RGB string. + +## interpolateYlGn(t) {#interpolateYlGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlGn.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “YlGn” sequential color scheme represented as an RGB string. + +## interpolateYlOrBr(t) {#interpolateYlOrBr} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlOrBr.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “YlOrBr” sequential color scheme represented as an RGB string. + +## interpolateYlOrRd(t) {#interpolateYlOrRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlOrRd.js) · Given a number *t* in the range [0,1], returns the corresponding color from the “YlOrRd” sequential color scheme represented as an RGB string. + +## schemeBlues[*k*] {#schemeBlues} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Blues.js) · The “Blues” discrete sequential color scheme of size *k* in 3–9. + +## schemeGreens[*k*] {#schemeGreens} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Greens.js) · The “Greens” discrete sequential color scheme of size *k* in 3–9. + +## schemeGreys[*k*] {#schemeGreys} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Greys.js) · The “Greys” discrete sequential color scheme of size *k* in 3–9. + +## schemeOranges[*k*] {#schemeOranges} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Oranges.js) · The “Oranges” discrete sequential color scheme of size *k* in 3–9. + +## schemePurples[*k*] {#schemePurples} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Purples.js) · The “Purples” discrete sequential color scheme of size *k* in 3–9. + +## schemeReds[*k*] {#schemeReds} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-single/Reds.js) · The “Reds” discrete sequential color scheme of size *k* in 3–9. + +## schemeBuGn[*k*] {#schemeBuGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/BuGn.js) · The “BuGn” discrete sequential color scheme of size *k* in 3–9. + +## schemeBuPu[*k*] {#schemeBuPu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/BuPu.js) · The “BuPu” discrete sequential color scheme of size *k* in 3–9. + +## schemeGnBu[*k*] {#schemeGnBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/GnBu.js) · The “GnBu” discrete sequential color scheme of size *k* in 3–9. + +## schemeOrRd[*k*] {#schemeOrRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/OrRd.js) · The “OrRd” discrete sequential color scheme of size *k* in 3–9. + +## schemePuBuGn[*k*] {#schemePuBuGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuBuGn.js) · The “PuBuGn” discrete sequential color scheme of size *k* in 3–9. + +## schemePuBu[*k*] {#schemePuBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuBu.js) · The “PuBu” discrete sequential color scheme of size *k* in 3–9. + +## schemePuRd[*k*] {#schemePuRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/PuRd.js) · The “PuRd” discrete sequential color scheme of size *k* in 3–9. + +## schemeRdPu[*k*] {#schemeRdPu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/RdPu.js) · The “RdPu” discrete sequential color scheme of size *k* in 3–9. + +## schemeYlGnBu[*k*] {#schemeYlGnBu} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlGnBu.js) · The “YlGnBu” discrete sequential color scheme of size *k* in 3–9. + +## schemeYlGn[*k*] {#schemeYlGn} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlGn.js) · The “YlGn” discrete sequential color scheme of size *k* in 3–9. + +## schemeYlOrBr[*k*] {#schemeYlOrBr} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlOrBr.js) · The “YlOrBr” discrete sequential color scheme of size *k* in 3–9. + +## schemeYlOrRd[*k*] {#schemeYlOrRd} + + + +[Source](https://github.com/d3/d3-scale-chromatic/blob/main/src/sequential-multi/YlOrRd.js) · The “YlOrRd” discrete sequential color scheme of size *k* in 3–9. + diff --git a/docs/d3-scale.md b/docs/d3-scale.md new file mode 100644 index 00000000000000..96827441a2c45e --- /dev/null +++ b/docs/d3-scale.md @@ -0,0 +1,21 @@ +# d3-scale + +Scales map a dimension of abstract data to a visual representation. Although most often used for encoding data as position, say to map time and temperature to a horizontal and vertical position in a scatterplot, scales can represent virtually any visual encoding, such as color, stroke width, or symbol size. Scales can also be used with virtually any type of data, such as named categorical data or discrete data that requires sensible breaks. + +See one of: + +* [Linear scales](./d3-scale/linear.md) - for quantitative data +* [Time scales](./d3-scale/time.md) - for time-series data +* [Pow scales](./d3-scale/pow.md) - for quantitative data (that has a wide range) +* [Log scales](./d3-scale/log.md) - for quantitative data (that has a wide range) +* [Symlog scales](./d3-scale/symlog.md) - for quantitative data (that has a wide range) +* [Ordinal scales](./d3-scale/ordinal.md) - for categorical or ordinal data +* [Band scales](./d3-scale/band.md) - for categorical or ordinal data as a position encoding +* [Point scales](./d3-scale/point.md) - for categorical or ordinal data as a position encoding +* [Sequential scales](./d3-scale/sequential.md) - for quantitative data as a sequential color encoding +* [Diverging scales](./d3-scale/diverging.md) - for quantitative data as a diverging color encoding +* [Quantile scales](./d3-scale/quantile.md) - for quantitative data as a discrete encoding +* [Quantize scales](./d3-scale/quantize.md) - for quantitative data as a discrete encoding +* [Threshold scales](./d3-scale/threshold.md) - for quantitative data as a discrete encoding + +For visualizing the scale’s encoding, see [d3-axis](./d3-axis.md), as well as [*scale*.ticks](./d3-scale/linear.md#linear_ticks) and [*scale*.tickFormat](./d3-scale/linear.md#linear_tickFormat). For color schemes, see [d3-scale-chromatic](./d3-scale-chromatic.md). diff --git a/docs/d3-scale/band.md b/docs/d3-scale/band.md new file mode 100644 index 00000000000000..8843b2dcb15eae --- /dev/null +++ b/docs/d3-scale/band.md @@ -0,0 +1,337 @@ + + +# Band scales + +Band scales are like [ordinal scales](./ordinal.md) except the output range is continuous and numeric. The scale divides the continuous range into uniform bands. Band scales are typically used for bar charts with an ordinal or categorical dimension. + +## scaleBand(*domain*, *range*) {#scaleBand} + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Constructs a new band scale with the specified [*domain*](#band_domain) and [*range*](#band_range), no [padding](#band_padding), no [rounding](#band_round) and center [alignment](#band_align). + +```js +const x = d3.scaleBand(["a", "b", "c"], [0, 960]); +``` + +If a single argument is specified, it is interpreted as the *range*. If *domain* is not specified, it defaults to the empty domain. If *range* is not specified, it defaults to the unit range [0, 1]. + +## *band*(*value*) {#_band} + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Given a *value* in the input [domain](#band_domain), returns the start of the corresponding band derived from the output [range](#band_range). + +```js +const x = d3.scaleBand(["a", "b", "c"], [0, 960]); +x("a"); // 0 +x("b"); // 320 +x("c"); // 640 +x("d"); // undefined +``` + +If the given *value* is not in the scale’s domain, returns undefined. + +## *band*.domain(*domain*) {#band_domain} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *domain* is specified, sets the domain to the specified array of values and returns this scale. + +```js-vue +const x = d3.scaleBand([0, 960]).domain([{{d3.csvParseRows(domain).flat().map(JSON.stringify).join(", ")}}]); +``` + +The first element in *domain* will be mapped to the first band, the second domain value to the second band, and so on. Domain values are stored internally in an [InternMap](https://github.com/mbostock/internmap) from primitive value to index; the resulting index is then used to determine the band. Thus, a band scale’s values must be coercible to a primitive value, and the primitive domain value uniquely identifies the corresponding band. If *domain* is not specified, this method returns the current domain. + +## *band*.range(*range*) {#band_range} + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *range* is specified, sets the scale’s range to the specified two-element array of numbers and returns this scale. + +```js +const x = d3.scaleBand().range([0, 960]); +``` + +If the elements in the given array are not numbers, they will be coerced to numbers. If *range* is not specified, returns the scale’s current range, which defaults to [0, 1]. + +## *band*.rangeRound(*range*) {#band_rangeRound} + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Sets the scale’s [*range*](#band_range) to the specified two-element array of numbers while also enabling [rounding](#band_round); returns this scale. + +```js +const x = d3.scaleBand().rangeRound([0, 960]); +``` + +This is a convenience method equivalent to: + +```js +band.range(range).round(true) +``` + +Rounding is sometimes useful for avoiding antialiasing artifacts, though also consider the [shape-rendering](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering) “crispEdges” styles. + +## *band*.round(*round*) {#band_round} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *round* is specified, enables or disables rounding accordingly and returns this scale. + +```js-vue +const x = d3.scaleBand(["a", "b", "c"], [0, 960]).round({{round}}); +``` + +If *round* is not specified, returns whether rounding is enabled. + +```js-vue +x.round() // {{round}} +``` + +If rounding is enabled, the start and stop of each band will be integers. Rounding is sometimes useful for avoiding antialiasing artifacts, though also consider the [shape-rendering](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering) “crispEdges” styles. Note that if the width of the domain is not a multiple of the cardinality of the range, there may be leftover unused space, even without padding! Use [*band*.align](#band_align) to specify how the leftover space is distributed. + +## *band*.paddingInner(*padding*) {#band_paddingInner} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *padding* is specified, sets the inner padding to the specified number which must be less than or equal to 1 and returns this scale. + +```js-vue +const x = d3.scaleBand(["a", "b", "c"], [0, 960]).paddingInner({{paddingInner}}); +``` + +If *padding* is not specified, returns the current inner padding which defaults to 0. + +```js-vue +x.paddingInner() // {{paddingInner}} +``` + +The inner padding specifies the proportion of the range that is reserved for blank space between bands; a value of 0 means no blank space between bands, and a value of 1 means a [bandwidth](#band_bandwidth) of zero. + +## *band*.paddingOuter(*padding*) {#band_paddingOuter} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *padding* is specified, sets the outer padding to the specified number which is typically in the range [0, 1] and returns this scale. + +```js-vue +const x = d3.scaleBand(["a", "b", "c"], [0, 960]).paddingOuter({{paddingOuter}}); +``` + +If *padding* is not specified, returns the current outer padding which defaults to 0. + +```js-vue +x.paddingOuter() // {{paddingOuter}} +``` + +The outer padding specifies the amount of blank space, in terms of multiples of the [step](#band_step), to reserve before the first band and after the last band. + +## *band*.padding(*padding*) {#band_padding} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · A convenience method for setting the [inner](#band_paddingInner) and [outer](#band_paddingOuter) padding to the same *padding* value. + +```js-vue +const x = d3.scaleBand(["a", "b", "c"], [0, 960]).padding({{padding}}); +``` + +If *padding* is not specified, returns the inner padding. + +```js-vue +x.padding() // {{padding}} +``` + +## *band*.align(*align*) {#band_align} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *align* is specified, sets the alignment to the specified value which must be in the range [0, 1], and returns this scale. + +```js-vue +const x = d3.scaleBand(["a", "b", "c"], [0, 960]).align({{align}}); +``` + +If *align* is not specified, returns the current alignment which defaults to 0.5. + +```js-vue +x.align() // {{align}} +``` + +The alignment specifies how outer padding is distributed in the range. A value of 0.5 indicates that the outer padding should be equally distributed before the first band and after the last band; *i.e.*, the bands should be centered within the range. A value of 0 or 1 may be used to shift the bands to one side, say to position them adjacent to an axis. For more, [see this explainer](https://observablehq.com/@d3/band-align). + +## *band*.bandwidth() {#band_bandwidth} + + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns the width of each band. + +```js +x.bandwidth() // 50.8235294117647 +``` + +## *band*.step() {#band_step} + + + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns the distance between the starts of adjacent bands. + +```js +x.step() // 63.529411764705884 +``` + +## *band*.copy() {#band_copy} + +[Examples](https://observablehq.com/@d3/d3-scaleband) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns an exact copy of this scale. + +```js +const x1 = d3.scaleBand(["a", "b", "c"], [0, 960]); +const x2 = x1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. diff --git a/docs/d3-scale/diverging.md b/docs/d3-scale/diverging.md new file mode 100644 index 00000000000000..aefc33ba7deb78 --- /dev/null +++ b/docs/d3-scale/diverging.md @@ -0,0 +1,81 @@ +# Diverging scales + +Diverging scales are similar to [linear scales](./linear.md) in that they map a continuous, numeric input domain to a continuous output range. Unlike linear scales, the input domain and output range of a diverging scale always has exactly two elements, and the output range is typically specified as an interpolator rather than an array of values. Diverging scales are typically used for a color encoding; see also [d3-scale-chromatic](../d3-scale-chromatic.md). These scales do not expose [invert](./linear.md#linear_invert) and [interpolate](./linear.md#linear_interpolate) methods. There are also [log](#scaleDivergingLog), [pow](#scaleDivergingPow), and [symlog](#scaleDivergingSymlog) variants of diverging scales. + +## scaleDiverging(*domain*, *interpolator*) {#scaleDiverging} + +[Examples](https://observablehq.com/@d3/diverging-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/diverging.js) · Constructs a new diverging scale with the specified [*domain*](#diverging_domain) and [*interpolator*](#diverging_interpolator) function or array. + +```js +const color = d3.scaleDiverging([-1, 0, 1], d3.interpolateRdBu); +``` + +If *domain* is not specified, it defaults to [0, 0.5, 1]. + +```js +const color = d3.scaleDiverging(d3.interpolateRdBu); +``` + +If *interpolator* is not specified, it defaults to the identity function. + +```js +const identity = d3.scaleDiverging(); +``` + +When the scale is [applied](#_diverging), the interpolator will be invoked with a value typically in the range [0, 1], where 0 represents the extreme negative value, 0.5 represents the neutral value, and 1 represents the extreme positive value. + +If *interpolator* is an array, it represents the scale’s three-element output range and is converted to an interpolator function using [d3.interpolate](../d3-interpolate/value.md#interpolate) and [d3.piecewise](../d3-interpolate/value.md#piecewise). + +```js +const color = d3.scaleDiverging(["blue", "white", "red"]); +``` + +A diverging scale’s domain must be numeric and must contain exactly three values. The default domain is [0, 0.5, 1]. + +## *diverging*.interpolator(*interpolator*) {#diverging_interpolator} + +If *interpolator* is specified, sets the scale’s interpolator to the specified function. + +```js +const color = d3.scaleDiverging().interpolator(d3.interpolateRdBu); +``` + +If *interpolator* is not specified, returns the scale’s current interpolator. + +```js +color.interpolator() // d3.interpolateRdBu +``` + +## *diverging*.range(*range*) {#diverging_range} + +See [*linear*.range](./linear.md#linear_range). If *range* is specified, the given three-element array is converted to an interpolator function using [piecewise](../d3-interpolate/value.md#piecewise). + +```js +const color = d3.scaleDiverging().range(["blue", "white", "red"]); +``` + +The above is equivalent to: + +```js +const color = d3.scaleDiverging(d3.piecewise(["blue", "white", "red"])); +``` + +## *diverging*.rangeRound(*range*) {#diverging_rangeRound} + +See [*linear*.range](./linear.md#linear_rangeRound). If *range* is specified, implicitly uses [interpolateRound](../d3-interpolate/value.md#interpolateRound) as the interpolator. + +## scaleDivergingLog(*domain*, *range*) {#scaleDivergingLog} + +Returns a new diverging scale with a logarithmic transform, analogous to a [log scale](./log.md). + +## scaleDivergingPow(*domain*, *range*) {#scaleDivergingPow} + +Returns a new diverging scale with an exponential transform, analogous to a [power scale](./pow.md). + +## scaleDivergingSqrt(*domain*, *range*) {#scaleDivergingSqrt} + +Returns a new diverging scale with a square-root transform, analogous to a [sqrt scale](./pow.md#scaleSqrt). + +## scaleDivergingSymlog(*domain*, *range*) {#scaleDivergingSymlog} + +Returns a new diverging scale with a symmetric logarithmic transform, analogous to a [symlog scale](./symlog.md). diff --git a/docs/d3-scale/linear.md b/docs/d3-scale/linear.md new file mode 100644 index 00000000000000..698f2373c4d3df --- /dev/null +++ b/docs/d3-scale/linear.md @@ -0,0 +1,306 @@ +# Linear scales + +Linear scales map a continuous, quantitative input [domain](#linear_domain) to a continuous output [range](#linear_range) using a linear transformation (translate and scale). If the range is also numeric, the mapping may be [inverted](#linear_invert). Linear scales are a good default choice for continuous quantitative data because they preserve proportional differences. Each range value *y* can be expressed as a function of the domain value *x*: *y* = *mx* + *b*. + + + +## scaleLinear(*domain*, *range*) {#scaleLinear} + +[Examples](https://observablehq.com/@d3/d3-scalelinear) · [Source](https://github.com/d3/d3-scale/blob/main/src/linear.js) · Constructs a new linear scale with the specified [domain](#linear_domain) and [range](#linear_range), the [default](../d3-interpolate/value.md#interpolate) [interpolator](#linear_interpolate), and [clamping](#linear_clamp) disabled. + +```js +d3.scaleLinear([0, 100], ["red", "blue"]) +``` + +If a single argument is specified, it is interpreted as the *range*. If either *domain* or *range* are not specified, each defaults to [0, 1]. + +```js +d3.scaleLinear(["red", "blue"]) // default domain of [0, 1] +``` + +## *linear*(*value*) {#_linear} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · Given a *value* from the [domain](#linear_domain), returns the corresponding value from the [range](#linear_range). For example, to apply a position encoding: + +```js +const x = d3.scaleLinear([10, 130], [0, 960]); +x(20); // 80 +x(50); // 320 +``` + +To apply a color encoding: + +```js +const color = d3.scaleLinear([10, 100], ["brown", "steelblue"]); +color(20); // "rgb(154, 52, 57)" +color(50); // "rgb(123, 81, 103)" +``` + +If the given *value* is outside the domain, and [clamping](#linear_clamp) is not enabled, the mapping will be extrapolated such that the returned value is outside the range. + +## *linear*.invert(*value*) {#linear_invert} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · Given a *value* from the [range](#linear_range), returns the corresponding value from the [domain](#linear_domain). Inversion is useful for interaction, say to determine the data value corresponding to the position of the mouse. For example, to invert a position encoding: + +```js +const x = d3.scaleLinear([10, 130], [0, 960]); +x.invert(80); // 20 +x.invert(320); // 50 +``` + +If the given *value* is outside the range, and [clamping](#linear_clamp) is not enabled, the mapping may be extrapolated such that the returned value is outside the domain. This method is only supported if the range is numeric. If the range is not numeric, returns NaN. + +For a valid value *y* in the range, linear(linear.invert(y)) approximately equals *y*; similarly, for a valid value *x* in the domain, linear.invert(linear(x)) approximately equals *x*. The scale and its inverse may not be exact due to the limitations of floating point precision. + +## *linear*.domain(*domain*) {#linear_domain} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · If *domain* is specified, sets the scale’s domain to the specified array of numbers and returns this scale. + +```js +const x = d3.scaleLinear().domain([10, 130]); +``` + +The array must contain two or more elements. If the elements in the given array are not numbers, they will be coerced to numbers. + +Although continuous scales typically have two values each in their domain and range, specifying more than two values produces a piecewise scale. For example, to create a [diverging color scale](#diverging-scales) that interpolates between white and red for negative values, and white and green for positive values, say: + +```js +const color = d3.scaleLinear([-1, 0, 1], ["red", "white", "green"]); +color(-0.5); // "rgb(255, 128, 128)" +color(+0.5); // "rgb(128, 192, 128)" +``` + +Internally, a piecewise scale performs a [binary search](../d3-array/bisect.md) for the range interpolator corresponding to the given domain value. Thus, the domain must be in ascending or descending order. If the domain and range have different lengths *N* and *M*, only the first *min(N,M)* elements in each are observed. + +If *domain* is not specified, returns a copy of the scale’s current domain. + +```js +color.domain() // [-1, 0, 1] +``` + +## *linear*.range(range) {#linear_range} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · If *range* is specified, sets the scale’s range to the specified array of values and returns this scale. + +```js +const x = d3.scaleLinear().range([0, 960]); +``` + +The array must contain two or more elements. Unlike the [domain](#linear_domain), elements in the given array need not be numbers; any value that is supported by the underlying [interpolator](#linear_interpolate) will work, though note that numeric ranges are required for [invert](#linear_invert). + +If *range* is not specified, returns a copy of the scale’s current range. + +```js +x.range() // [0, 960] +``` + +See [*linear*.interpolate](#linear_interpolate) for more examples. + +## *linear*.rangeRound(*range*) {#linear_rangeRound} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · Sets the scale’s [*range*](#linear_range) to the specified array of values while also setting the scale’s [interpolator](#linear_interpolate) to [interpolateRound](../d3-interpolate/value.md#interpolateRound); returns this scale. + +```js +const x = d3.scaleLinear().rangeRound([0, 960]); +``` + +This is a convenience method equivalent to: + +```js +linear.range(range).interpolate(d3.interpolateRound) +``` + +The rounding interpolator is sometimes useful for avoiding antialiasing artifacts, though also consider the [shape-rendering](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering) “crispEdges” styles. Note that this interpolator can only be used with numeric ranges. + +## *linear*.clamp(*clamp*) {#linear_clamp} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · If *clamp* is specified, enables or disables clamping accordingly; returns this scale. + +```js +const x = d3.scaleLinear([0, 960]).clamp(true); +``` + +If clamping is disabled and the scale is passed a value outside the [domain](#linear_domain), the scale may return a value outside the [range](#linear_range) through extrapolation. If clamping is enabled, the return value of the scale is always within the scale’s range. Clamping similarly applies to [*linear*.invert](#linear_invert). For example: + +```js +const x = d3.scaleLinear([10, 130], [0, 960]); // clamping disabled by default +x(-10); // -160, outside range +x.invert(-160); // -10, outside domain +x.clamp(true); // enable clamping +x(-10); // 0, clamped to range +x.invert(-160); // 10, clamped to domain +``` + +If *clamp* is not specified, returns whether or not the scale currently clamps values to within the range. + +```js +x.clamp() // true, perhaps +``` + +## *linear*.unknown(*value*) {#linear_unknown} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · If *value* is specified, sets the output value of the scale for undefined or NaN input values and returns this scale. This is useful for specifying how missing or invalid data is displayed. + +```js +const color = d3.scaleLinear([0, 100], ["red", "blue"]).unknown("#ccc"); +color(NaN); // "#ccc" +``` + +If *value* is not specified, returns the current unknown value, which defaults to undefined. + +```js +color.unknown() // "#ccc" +``` + +## *linear*.interpolate(*interpolate*) {#linear_interpolate} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · If *interpolate* is specified, sets the scale’s [range](#linear_range) interpolator factory. + +```js +const color = d3.scaleLinear(["red", "blue"]).interpolate(d3.interpolateHcl); +``` + +The scale’s interpolator factory is used to create interpolators for each adjacent pair of values from the range; these interpolators then map a normalized domain parameter *t* in [0, 1] to the corresponding value in the range. If *factory* is not specified, returns the scale’s current interpolator factory, which defaults to [d3.interpolate](../d3-interpolate/value.md#interpolate). See [d3-interpolate](../d3-interpolate.md) for more interpolators. + +For example, consider a diverging color scale with three colors in the range: + +```js +const color = d3.scaleLinear([-100, 0, +100], ["red", "white", "green"]); +``` + +Two interpolators are created internally by the scale, equivalent to: + +```js +const i0 = d3.interpolate("red", "white"); +const i1 = d3.interpolate("white", "green"); +``` + +A common reason to specify a custom interpolator is to change the color space of interpolation. For example, to use [HCL](../d3-interpolate/color.md#interpolateHcl): + +```js +const color = d3.scaleLinear() + .domain([10, 100]) + .range(["brown", "steelblue"]) + .interpolate(d3.interpolateHcl); +``` + +Or for [Cubehelix](../d3-interpolate/color.md#interpolateCubehelix) with a custom gamma: + +```js +const color = d3.scaleLinear() + .domain([10, 100]) + .range(["brown", "steelblue"]) + .interpolate(d3.interpolateCubehelix.gamma(3)); +``` + +:::warning CAUTION +The [default interpolator](../d3-interpolate/value.md#interpolate) **may reuse return values**. For example, if the range values are objects, then the value interpolator always returns the same object, modifying it in-place. If the scale is used to set an attribute or style, this is typically acceptable (and desirable for performance); however, if you need to store the scale’s return value, you must specify your own interpolator or make a copy as appropriate. +::: + +## *linear*.ticks(*count*) {#linear_ticks} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/linear.js) · Returns approximately *count* representative values from the scale’s [domain](#linear_domain). + +```js +const x = d3.scaleLinear([10, 100], ["red", "blue"]); +x.ticks(); // [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] +``` + +If *count* is not specified, it defaults to 10. The returned tick values are uniformly spaced, have human-readable values (such as multiples of powers of 10), and are guaranteed to be within the extent of the domain. Ticks are often used to display reference lines, or tick marks, in conjunction with the visualized data. The specified *count* is only a hint; the scale may return more or fewer values depending on the domain. See also d3-array’s [ticks](../d3-array/ticks.md). + +## *linear*.tickFormat(*count*, *specifier*) {#linear_tickFormat} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/tickFormat.js) · Returns a [number format](https://github.com/d3/d3-format) function suitable for displaying a tick value, automatically computing the appropriate precision based on the fixed interval between tick values. The specified *count* should have the same value as the count that is used to generate the [tick values](#linear_ticks). + +```js +const x = d3.scaleLinear([0.1, 1], ["red", "blue"]); +const f = x.tickFormat(); +f(0.1); // "0.1" +f(1); // "1.0" +``` + +An optional *specifier* allows a [custom format](../d3-format.md#locale_format) where the precision of the format is automatically set by the scale as appropriate for the tick interval. For example, to format percentage change, you might say: + +```js +const x = d3.scaleLinear([-1, 1], [0, 960]); +const T = x.ticks(5); // [-1, -0.5, 0, 0.5, 1] +const f = x.tickFormat(5, "+%"); +T.map(f); // ["−100%", "−50%", "+0%", "+50%", "+100%"] +``` + +If *specifier* uses the format type `s`, the scale will return a [SI-prefix format](../d3-format.md#locale_formatPrefix) based on the largest value in the domain. If the *specifier* already specifies a precision, this method is equivalent to [*locale*.format](../d3-format.md#locale_format). + +See also [d3.tickFormat](../d3-array/ticks.md#tickFormat). + +## *linear*.nice(count) {#linear_nice} + +[Examples](https://observablehq.com/@d3/d3-scalelinear) · [Source](https://github.com/d3/d3-scale/blob/main/src/nice.js) · Extends the [domain](#linear_domain) so that it starts and ends on nice round values. + +```js +const x = d3.scaleLinear([0.241079, 0.969679], [0, 960]).nice(); +x.domain(); // [0.2, 1] +``` + +This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value. Nicing is useful if the domain is computed from data, say using [extent](../d3-array/summarize.md#extent), and may be irregular. If the domain has more than two values, nicing the domain only affects the first and last value. + +An optional tick *count* argument allows greater control over the step size used to extend the bounds, guaranteeing that the returned [ticks](#linear_ticks) will exactly cover the domain. + +```js +const x = d3.scaleLinear([0.241079, 0.969679], [0, 960]).nice(40); +x.domain(); // [0.24, 0.98] +``` + +Nicing a scale only modifies the current domain; it does not automatically nice domains that are subsequently set using [*linear*.domain](#linear_domain). You must re-nice the scale after setting the new domain, if desired. + +## *linear*.copy() {#linear_copy} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/continuous.js) · Returns an exact copy of this scale. + +```js +const x1 = d3.scaleLinear([0, 100], ["red", "blue"]); +const x2 = x1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. + +## tickFormat(*start*, *stop*, *count*, *specifier*) {#tickFormat} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/tickFormat.js) · Returns a [number format](https://github.com/d3/d3-format) function suitable for displaying a tick value, automatically computing the appropriate precision based on the fixed interval between tick values, as determined by [d3.tickStep](../d3-array/ticks.md#tickStep). + +```js +const f = d3.tickFormat(0, 1, 20); +f(1); // "1.00" +``` + +An optional *specifier* allows a [custom format](../d3-format.md#locale_format) where the precision of the format is automatically set by the scale as appropriate for the tick interval. For example, to format percentage change, you might say: + +```js +const f = d3.tickFormat(-1, 1, 5, "+%"); +f(-0.5); // "-50%" +``` + +If *specifier* uses the format type `s`, the scale will return a [SI-prefix format](../d3-format.md#locale_formatPrefix) based on the larger absolute value of *start* and *stop*. If the *specifier* already specifies a precision, this method is equivalent to [*locale*.format](../d3-format.md#locale_format). + +## scaleIdentity(*range*) {#scaleIdentity} + +[Examples](https://observablehq.com/@d3/d3-scalelinear) · [Source](https://github.com/d3/d3-scale/blob/main/src/identity.js) · Constructs a new identity scale with the specified [range](#linear_range) (and by extension, [domain](#linear_domain)). + +```js +const x = d3.scaleIdentity([0, 960]); +``` + +Identity scales are a special case of [linear scales](#linear-scales) where the domain and range are identical; the scale and its invert method are thus the identity function. These scales are occasionally useful when working with pixel coordinates, say in conjunction with an axis. Identity scales do not support [rangeRound](#linear_rangeRound), [clamp](#linear_clamp) or [interpolate](#linear_interpolate). + +If *range* is not specified, it defaults to [0, 1]. + +## scaleRadial(*domain*, *range*) {#scaleRadial} + +[Examples](https://observablehq.com/@d3/radial-stacked-bar-chart) · [Source](https://github.com/d3/d3-scale/blob/main/src/radial.js) · Constructs a new radial scale with the specified [domain](#linear_domain) and [range](#linear_range). + +```js +const r = d3.scaleRadial([100, 200], [0, 480]); +``` + +Radial scales are a variant of [linear scales](#linear-scales) where the range is internally squared so that an input value corresponds linearly to the squared output value. These scales are useful when you want the input value to correspond to the area of a graphical mark and the mark is specified by radius, as in a radial bar chart. Radial scales do not support [interpolate](#linear_interpolate). + +If *domain* or *range* is not specified, each defaults to [0, 1]. diff --git a/docs/d3-scale/log.md b/docs/d3-scale/log.md new file mode 100644 index 00000000000000..570c0c5dc31de3 --- /dev/null +++ b/docs/d3-scale/log.md @@ -0,0 +1,65 @@ +# Logarithmic scales + +Logarithmic (“log”) scales are like [linear scales](./linear.md) except that a logarithmic transform is applied to the input domain value before the output range value is computed. The mapping to the range value *y* can be expressed as a function of the domain value *x*: *y* = *m* log(x) + *b*. + +:::warning CAUTION +As log(0) = -∞, a log scale domain must be **strictly-positive or strictly-negative**; the domain must not include or cross zero. A log scale with a positive domain has a well-defined behavior for positive values, and a log scale with a negative domain has a well-defined behavior for negative values. (For a negative domain, input and output values are implicitly multiplied by -1.) The behavior of the scale is undefined if you pass a negative value to a log scale with a positive domain or vice versa. +::: + +## scaleLog(*domain*, *range*) {#scaleLog} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/log.js) · Constructs a new log scale with the specified [domain](./linear.md#linear_domain) and [range](./linear.md#linear_range), the [base](#log_base) 10, the [default](../d3-interpolate/value.md#interpolate) [interpolator](./linear.md#linear_interpolate) and [clamping](./linear.md#linear_clamp) disabled. + +```js +const x = d3.scaleLog([1, 10], [0, 960]); +``` + +If *domain* is not specified, it defaults to [1, 10]. If *range* is not specified, it defaults to [0, 1]. + +## *log*.base(*base*) {#log_base} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/log.js) · If *base* is specified, sets the base for this logarithmic scale to the specified value. + +```js +const x = d3.scaleLog([1, 1024], [0, 960]).base(2); +``` + +If *base* is not specified, returns the current base, which defaults to 10. Note that due to the nature of a logarithmic transform, the base does not affect the encoding of the scale; it only affects which [ticks](#log_ticks) are chosen. + +## *log*.ticks(*count*) {#log_ticks} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/log.js) · Like [*linear*.ticks](./linear.md#linear_ticks), but customized for a log scale. + +```js +const x = d3.scaleLog([1, 100], [0, 960]); +const T = x.ticks(); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] +``` + +If the [base](#log_base) is an integer, the returned ticks are uniformly spaced within each integer power of base; otherwise, one tick per power of base is returned. The returned ticks are guaranteed to be within the extent of the domain. If the orders of magnitude in the [domain](./linear.md#linear_domain) is greater than *count*, then at most one tick per power is returned. Otherwise, the tick values are unfiltered, but note that you can use [*log*.tickFormat](./linear.md#linear_tickFormat) to filter the display of tick labels. If *count* is not specified, it defaults to 10. + +## *log*.tickFormat(*count*, *specifier*) {#log_tickFormat} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/log.js) · Like [*linear*.tickFormat](./linear.md#linear_tickFormat), but customized for a log scale. The specified *count* typically has the same value as the count that is used to generate the [tick values](#log_ticks). + +```js +const x = d3.scaleLog([1, 100], [0, 960]); +const T = x.ticks(); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …] +const f = x.tickFormat(); +T.map(f); // ["1", "2", "3", "4", "5", "", "", "", "", "10", …] +``` + +If there are too many ticks, the formatter may return the empty string for some of the tick labels; however, note that the ticks are still shown to convey the logarithmic transform accurately. To disable filtering, specify a *count* of Infinity. + +When specifying a count, you may also provide a format *specifier* or format function. For example, to get a tick formatter that will display 20 ticks of a currency, say `log.tickFormat(20, "$,f")`. If the specifier does not have a defined precision, the precision will be set automatically by the scale, returning the appropriate format. This provides a convenient way of specifying a format whose precision will be automatically set by the scale. + +## *log*.nice() {#log_nice} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/log.js) · Like [*linear*.nice](./linear.md#linear_nice), except extends the domain to integer powers of [base](#log_base). + +```js +const x = d3.scaleLog([0.201479, 0.996679], [0, 960]).nice(); +x.domain(); // [0.1, 1] +``` + +If the domain has more than two values, nicing the domain only affects the first and last value. Nicing a scale only modifies the current domain; it does not automatically nice domains that are subsequently set using [*log*.domain](./linear.md#linear_domain). You must re-nice the scale after setting the new domain, if desired. + diff --git a/docs/d3-scale/ordinal.md b/docs/d3-scale/ordinal.md new file mode 100644 index 00000000000000..2d7a47b84d232a --- /dev/null +++ b/docs/d3-scale/ordinal.md @@ -0,0 +1,104 @@ +# Ordinal scales + +Unlike [continuous scales](./linear.md), ordinal scales have a discrete domain and range. For example, an ordinal scale might map a set of named categories to a set of colors, or determine the horizontal positions of columns in a column chart. + +## scaleOrdinal(*domain*, *range*) {#scaleOrdinal} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · Constructs a new ordinal scale with the specified [*domain*](#ordinal_domain) and [*range*](#ordinal_range). + +```js +const color = d3.scaleOrdinal(["a", "b", "c"], ["red", "green", "blue"]); +``` + +If *domain* is not specified, it defaults to the empty array. If *range* is not specified, it defaults to the empty array; an ordinal scale always returns undefined until a non-empty range is defined. + +## *ordinal*(*value*) {#_ordinal} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · Given a *value* in the input [domain](#ordinal_domain), returns the corresponding value in the output [range](#ordinal_range). + +```js +color("a") // "red" +``` + +If the given *value* is not in the scale’s [domain](#ordinal_domain), returns the [unknown value](#ordinal_unknown); or, if the unknown value is [implicit](#scaleImplicit) (the default), then the *value* is implicitly added to the domain and the next-available value in the range is assigned to *value*, such that this and subsequent invocations of the scale given the same input *value* return the same output value. + +## *ordinal*.domain(*domain*) {#ordinal_domain} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · If *domain* is specified, sets the domain to the specified array of values. + +```js +const color = d3.scaleOrdinal(["red", "green", "blue"]).domain(["a", "b", "c"]); +color("a"); // "red" +color("b"); // "green" +color("c"); // "blue" +``` + +The first element in *domain* will be mapped to the first element in the range, the second domain value to the second range value, and so on. Domain values are stored internally in an [InternMap](https://github.com/mbostock/internmap) from primitive value to index; the resulting index is then used to retrieve a value from the range. Thus, an ordinal scale’s values must be coercible to a primitive value, and the primitive domain value uniquely identifies the corresponding range value. + +```js +color.domain() // ["a", "b", "c"] +``` + +If *domain* is not specified, this method returns the current domain. + +Setting the domain on an ordinal scale is optional if the [unknown value](#ordinal_unknown) is [implicit](#scaleImplicit) (the default). In this case, the domain will be inferred implicitly from usage by assigning each unique value passed to the scale a new value from the range. + +```js +const color = d3.scaleOrdinal(["red", "green", "blue"]); +color("b"); // "red" +color("a"); // "green" +color("c"); // "blue" +color.domain(); // inferred ["b", "a", "c"] +``` + +:::warning CAUTION +An explicit domain is recommended for deterministic behavior; inferring the domain from usage is dependent on ordering. +::: + +## *ordinal*.range(*range*) {#ordinal_range} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · If *range* is specified, sets the range of the ordinal scale to the specified array of values. + +```js +const color = d3.scaleOrdinal().range(["red", "green", "blue"]); +``` + +The first element in the domain will be mapped to the first element in *range*, the second domain value to the second range value, and so on. If there are fewer elements in the range than in the domain, the scale will reuse values from the start of the range. If *range* is not specified, this method returns the current range. + +## *ordinal*.unknown(*value*) {#ordinal_unknown} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · If *value* is specified, sets the output value of the scale for unknown input values and returns this scale. + +```js +const color = d3.scaleOrdinal(["a", "b", "c"], d3.schemeTableau10).unknown(null); +color("a"); // "#4e79a7" +color("b"); // "#f28e2c" +color("c"); // "#e15759" +color("d"); // null +``` + +If *value* is not specified, returns the current unknown value, which defaults to [implicit](#scaleImplicit). The implicit value enables implicit domain construction; see [*ordinal*.domain](#ordinal_domain). + +## *ordinal*.copy() {#ordinal_copy} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · Returns an exact copy of this ordinal scale. + +```js +const c1 = d3.scaleOrdinal(["a", "b", "c"], d3.schemeTableau10); +const c2 = c1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. + +## scaleImplicit {#scaleImplicit} + +[Examples](https://observablehq.com/@d3/d3-scaleordinal) · [Source](https://github.com/d3/d3-scale/blob/main/src/ordinal.js) · A special value for [*ordinal*.unknown](#ordinal_unknown) that enables implicit domain construction: unknown values are implicitly added to the domain. + +```js +const color = d3.scaleOrdinal(["a", "b", "c"], d3.schemeTableau10); +color.unknown(); // d3.scaleImplicit +``` + +:::warning CAUTION +An explicit domain is recommended for deterministic behavior; inferring the domain from usage is dependent on ordering. +::: diff --git a/docs/d3-scale/point.md b/docs/d3-scale/point.md new file mode 100644 index 00000000000000..d6d222194924dd --- /dev/null +++ b/docs/d3-scale/point.md @@ -0,0 +1,228 @@ + + +# Point scales + +Point scales are a variant of [band scales](./band.md) with the bandwidth fixed to zero. Point scales are typically used for scatterplots with an ordinal or categorical dimension. + +## scalePoint(*domain*, *range*) {#scalePoint} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Constructs a new point scale with the specified [*domain*](#point_domain) and [*range*](#point_range), no [padding](#point_padding), no [rounding](#point_round) and center [alignment](#point_align). If *domain* is not specified, it defaults to the empty domain. If *range* is not specified, it defaults to the unit range [0, 1]. + +## *point*(*value*) {#_point} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Given a *value* in the input [domain](#point_domain), returns the corresponding point derived from the output [range](#point_range). + +```js +const x = d3.scalePoint(["a", "b", "c"], [0, 960]); +x("a"); // 0 +x("b"); // 480 +x("c"); // 960 +x("d"); // undefined +``` + +If the given *value* is not in the scale’s domain, returns undefined. + +## *point*.domain(*domain*) {#point_domain} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *domain* is specified, sets the domain to the specified array of values. + +```js-vue +const x = d3.scalePoint([0, 960]).domain([{{d3.csvParseRows(domain).flat().map(JSON.stringify).join(", ")}}]); +``` + +The first element in *domain* will be mapped to the first point, the second domain value to the second point, and so on. Domain values are stored internally in an [InternMap](https://github.com/mbostock/internmap) from primitive value to index; the resulting index is then used to determine the point. Thus, a point scale’s values must be coercible to a primitive value, and the primitive domain value uniquely identifies the corresponding point. If *domain* is not specified, this method returns the current domain. + +## *point*.range(*range*) {#point_range} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *range* is specified, sets the scale’s range to the specified two-element array of numbers and returns this scale. + +```js +const x = d3.scalePoint().range([0, 960]); +``` + +If the elements in the given array are not numbers, they will be coerced to numbers. If *range* is not specified, returns the scale’s current range, which defaults to [0, 1]. + +## *point*.rangeRound(*range*) {#point_rangeRound} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Sets the scale’s [*range*](#point_range) to the specified two-element array of numbers while also enabling [rounding](#point_round); returns this scale. + +```js +const x = d3.scalePoint().rangeRound([0, 960]); +``` + +This is a convenience method equivalent to: + +```js +point.range(range).round(true) +``` + +Rounding is sometimes useful for avoiding antialiasing artifacts, though also consider the [shape-rendering](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering) “crispEdges” styles. + +## *point*.round(*round*) {#point_round} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *round* is specified, enables or disables rounding accordingly. + +```js-vue +const x = d3.scalePoint(["a", "b", "c"], [0, 960]).round({{round}}); +``` + +If *round* is not specified, returns whether rounding is enabled. + +```js-vue +x.round() // {{round}} +``` + +If rounding is enabled, the position of each point will be integers. Rounding is sometimes useful for avoiding antialiasing artifacts, though also consider the [shape-rendering](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering) “crispEdges” styles. Note that if the width of the domain is not a multiple of the cardinality of the range, there may be leftover unused space, even without padding! Use [*point*.align](#point_align) to specify how the leftover space is distributed. + +## *point*.padding(*padding*) {#point_padding} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *padding* is specified, sets the outer padding to the specified number which is typically in the range [0, 1]. + +```js-vue +const x = d3.scalePoint(["a", "b", "c"], [0, 960]).padding({{padding}}); +``` + +If *padding* is not specified, returns the current outer padding which defaults to 0. + +```js-vue +x.padding() // {{padding}} +``` + +The outer padding specifies the amount of blank space, in terms of multiples of the [step](#band_step), to reserve before the first point and after the last point. Equivalent to [*band*.paddingOuter](#band_paddingOuter). + +## *point*.align(*align*) {#point_align} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · If *align* is specified, sets the alignment to the specified value which must be in the range [0, 1]. + +```js-vue +const x = d3.scalePoint(["a", "b", "c"], [0, 960]).align({{align}}); +``` + +If *align* is not specified, returns the current alignment which defaults to 0.5. + +```js-vue +x.align() // {{align}} +``` + +The alignment specifies how any leftover unused space in the range is distributed. A value of 0.5 indicates that the leftover space should be equally distributed before the first point and after the last point; *i.e.*, the points should be centered within the range. A value of 0 or 1 may be used to shift the points to one side, say to position them adjacent to an axis. + +## *point*.bandwidth() {#point_bandwidth} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns zero. + +## *point*.step() {#point_step} + + + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns the distance between adjacent points. + +## *point*.copy() {#point_copy} + +[Examples](https://observablehq.com/@d3/d3-scalepoint) · [Source](https://github.com/d3/d3-scale/blob/main/src/band.js) · Returns an exact copy of this scale. Changes to this scale will not affect the returned scale, and vice versa. diff --git a/docs/d3-scale/pow.md b/docs/d3-scale/pow.md new file mode 100644 index 00000000000000..25ed1511d6b6be --- /dev/null +++ b/docs/d3-scale/pow.md @@ -0,0 +1,39 @@ +# Power scales + +Power (“pow”) scales are similar to [linear scales](./linear.md), except an exponential transform is applied to the input domain value before the output range value is computed. Each range value *y* can be expressed as a function of the domain value *x*: *y* = *mx^k* + *b*, where *k* is the [exponent](#pow_exponent) value. Power scales also support negative domain values, in which case the input value and the resulting output value are multiplied by -1. + +### scalePow(*domain*, *range*) {#scalePow} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/pow.js) · Constructs a new pow scale with the specified [domain](./linear.md#linear_domain) and [range](./linear.md#linear_range), the [exponent](#pow_exponent) 1, the [default](../d3-interpolate/value.md#interpolate) [interpolator](./linear.md#linear_interpolate) and [clamping](./linear.md#linear_clamp) disabled. + +```js +const x = d3.scalePow([0, 100], ["red", "blue"]).exponent(2); +``` + +If either *domain* or *range* are not specified, each defaults to [0, 1]. + +### scaleSqrt(*domain*, *range*) {#scaleSqrt} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/pow.js) · Constructs a new pow scale with the specified [domain](./linear.md#linear_domain) and [range](./linear.md#linear_range), the [exponent](#pow_exponent) 0.5, the [default](../d3-interpolate/value.md#interpolate) [interpolator](./linear.md#linear_interpolate) and [clamping](./linear.md#linear_clamp) disabled. + +```js +const x = d3.scaleSqrt([0, 100], ["red", "blue"]); +``` + +If either *domain* or *range* are not specified, each defaults to [0, 1]. This is a convenience method equivalent to `d3.scalePow(…).exponent(0.5)`. + +### *pow*.exponent(*exponent*) {#pow_exponent} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/pow.js) · If *exponent* is specified, sets the current exponent to the given numeric value and returns this scale. + +```js +const x = d3.scalePow([0, 100], ["red", "blue"]).exponent(2); +``` + +If *exponent* is not specified, returns the current exponent, which defaults to 1. + +```js +x.exponent() // 2 +``` + +If the *exponent* is 1, the pow scale is effectively a [linear](./linear.md) scale. diff --git a/docs/d3-scale/quantile.md b/docs/d3-scale/quantile.md new file mode 100644 index 00000000000000..ed77acfcae2202 --- /dev/null +++ b/docs/d3-scale/quantile.md @@ -0,0 +1,90 @@ +# Quantile scales + +Quantile scales map a sampled input domain to a discrete range. The domain is considered continuous and thus the scale will accept any reasonable input value; however, the domain is specified as a discrete set of sample values. The number of values in (the cardinality of) the output range determines the number of quantiles that will be computed from the domain. To compute the quantiles, the domain is sorted, and treated as a [population of discrete values](https://en.wikipedia.org/wiki/Quantile#Quantiles_of_a_population); see [quantile](../d3-array/summarize.md#quantile). See [this quantile choropleth](https://observablehq.com/@d3/quantile-choropleth) for an example. + +## scaleQuantile(*domain*, *range*) {#scaleQuantile} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · Constructs a new quantile scale with the specified [*domain*](#quantile_domain) and [*range*](#quantile_range). + +```js +const color = d3.scaleQuantile(penguins.map((d) => d.body_mass_g), d3.schemeBlues[5]); +``` + +If either *domain* or *range* is not specified, each defaults to the empty array. The quantile scale is invalid until both a domain and range are specified. + +## *quantile*(*value*) {#_quantile} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · Given a *value* in the input [domain](#quantile_domain), returns the corresponding value in the output [range](#quantile_range). + +```js +color(3000); // "#eff3ff" +color(4000); // "#6baed6" +color(5000); // "#08519c" +``` + +## *quantile*.invertExtent(*value*) {#quantile_invertExtent} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · Returns the extent of values in the [domain](#quantile_domain) [x0, x1] for the corresponding *value* in the [range](#quantile_range): the inverse of [*quantile*](#_quantile). + +```js +color.invertExtent("#eff3ff"); // [2700, 3475] +color.invertExtent("#6baed6"); // [3800, 4300] +color.invertExtent("#08519c"); // [4950, 6300] +``` + +This method is useful for interaction, say to determine the value in the domain that corresponds to the pixel location under the mouse. + +## *quantile*.domain(*domain*) {#quantile_domain} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · If *domain* is specified, sets the domain of the quantile scale to the specified set of discrete numeric values and returns this scale. + +```js +const color = d3.scaleQuantile(d3.schemeBlues[5]); +color.domain(penguins.map((d) => d.body_mass_g)); +``` + +The array must not be empty, and must contain at least one numeric value; NaN, null and undefined values are ignored and not considered part of the sample population. If the elements in the given array are not numbers, they will be coerced to numbers. A copy of the input array is sorted and stored internally. + +If *domain* is not specified, returns the scale’s current domain (the set of observed values). + +```js +color.domain() // [2700, 2850, 2850, 2900, 2900, 2900, 2900, …] +``` + +## *quantile*.range(*range*) {#quantile_range} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · If *range* is specified, sets the discrete values in the range. + +```js +const color = d3.scaleQuantile(); +color.range(d3.schemeBlues[5]); +``` + +The array must not be empty, and may contain any type of value. The number of values in (the cardinality, or length, of) the *range* array determines the number of quantiles that are computed. For example, to compute quartiles, *range* must be an array of four elements such as [0, 1, 2, 3]. + +If *range* is not specified, returns the current range. + +```js +color.range() // ["#eff3ff", "#bdd7e7", "#6baed6", "#3182bd", "#08519c"] +``` + +## *quantile*.quantiles() {#quantile_quantiles} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · Returns the quantile thresholds. + +```js +color.quantiles() // [3475, 3800, 4300, 4950] +``` + +If the [range](#quantile_range) contains *n* discrete values, the returned array will contain *n* - 1 thresholds. Values less than the first threshold are considered in the first quantile; values greater than or equal to the first threshold but less than the second threshold are in the second quantile, and so on. Internally, the thresholds array is used with [bisect](../d3-array/bisect.md) to find the output quantile associated with the given input value. + +## *quantile*.copy() {#quantile_copy} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantile.js) · Returns an exact copy of this scale. + +```js +const c1 = d3.scaleQuantile(d3.schemeBlues[5]); +const c2 = c1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. diff --git a/docs/d3-scale/quantize.md b/docs/d3-scale/quantize.md new file mode 100644 index 00000000000000..5ac7735f84577a --- /dev/null +++ b/docs/d3-scale/quantize.md @@ -0,0 +1,100 @@ +# Quantize scales + +Quantize scales are similar to [linear scales](./linear.md), except they use a discrete rather than continuous range. The continuous input domain is divided into uniform segments based on the number of values in (*i.e.*, the cardinality of) the output range. Each range value *y* can be expressed as a quantized linear function of the domain value *x*: *y* = *m round(x)* + *b*. See [the quantized choropleth](https://observablehq.com/@d3/choropleth/2?intent=fork) for an example. + +## scaleQuantize(*domain*, *range*) {#scaleQuantize} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · Constructs a new quantize scale with the specified [*domain*](#quantize_domain) and [*range*](#quantize_range). + +```js +const color = d3.scaleQuantize([0, 100], d3.schemeBlues[9]); +``` + +If either *domain* or *range* is not specified, each defaults to [0, 1]. + +```js +const color = d3.scaleQuantize(d3.schemeBlues[9]); +``` + +## *quantize*(*value*) {#_quantize} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · Given a *value* in the input [domain](#quantize_domain), returns the corresponding value in the output [range](#quantize_range). For example, to apply a color encoding: + +```js +const color = d3.scaleQuantize([0, 1], ["brown", "steelblue"]); +color(0.49); // "brown" +color(0.51); // "steelblue" +``` + +Or dividing the domain into three equally-sized parts with different range values to compute an appropriate stroke width: + +```js +const width = d3.scaleQuantize([10, 100], [1, 2, 4]); +width(20); // 1 +width(50); // 2 +width(80); // 4 +``` + +## *quantize*.invertExtent(*value*) {#quantize_invertExtent} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · Returns the extent of values in the [domain](#quantize_domain) [x0, x1] for the corresponding *value* in the [range](#quantize_range): the inverse of [*quantize*](#_quantize). This method is useful for interaction, say to determine the value in the domain that corresponds to the pixel location under the mouse. + +```js +const width = d3.scaleQuantize([10, 100], [1, 2, 4]); +width.invertExtent(2); // [40, 70] +``` + +## *quantize*.domain(*domain*) {#quantize_domain} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · If *domain* is specified, sets the scale’s domain to the specified two-element array of numbers. + +```js +const color = d3.scaleQuantize(d3.schemeBlues[9]); +color.domain([0, 100]); +``` + +If the elements in the given array are not numbers, they will be coerced to numbers. The numbers must be in ascending order or the behavior of the scale is undefined. + +If *domain* is not specified, returns the scale’s current domain. + +```js +color.domain() // [0, 100] +``` + +## *quantize*.range(*range*) {#quantize_range} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · If *range* is specified, sets the scale’s range to the specified array of values. + +```js +const color = d3.scaleQuantize(); +color.range(d3.schemeBlues[5]); +``` + +The array may contain any number of discrete values. The elements in the given array need not be numbers; any value or type will work. + +If *range* is not specified, returns the scale’s current range. + +```js +color.range() // ["#eff3ff", "#bdd7e7", "#6baed6", "#3182bd", "#08519c"] +``` + +## *quantize*.thresholds() {#quantize_thresholds} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · Returns the array of computed thresholds within the [domain](#quantize_domain). + +```js +color.thresholds() // [0.2, 0.4, 0.6, 0.8] +``` + +The number of returned thresholds is one less than the length of the [range](#quantize_range): values less than the first threshold are assigned the first element in the range, whereas values greater than or equal to the last threshold are assigned the last element in the range. + +## *quantize*.copy() {#quantize_copy} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/quantize.js) · Returns an exact copy of this scale. + +```js +const c1 = d3.scaleQuantize(d3.schemeBlues[5]); +const c2 = c1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. diff --git a/docs/d3-scale/sequential.md b/docs/d3-scale/sequential.md new file mode 100644 index 00000000000000..59c4d9c40272c5 --- /dev/null +++ b/docs/d3-scale/sequential.md @@ -0,0 +1,103 @@ +# Sequential scales + +Sequential scales are similar to [linear scales](./linear.md) in that they map a continuous, numeric input domain to a continuous output range. Unlike linear scales, the input domain and output range of a sequential scale always has exactly two elements, and the output range is typically specified as an interpolator rather than an array of values. Sequential scales are typically used for a color encoding; see also [d3-scale-chromatic](../d3-scale-chromatic.md). These scales do not expose [invert](./linear.md#linear_invert) and [interpolate](./linear.md#linear_interpolate) methods. There are also [log](#scaleSequentialLog), [pow](#scaleSequentialPow), [symlog](#scaleSequentialSymlog), and [quantile](#scaleSequentialQuantile) variants of sequential scales. + +## scaleSequential(*domain*, *interpolator*) {#scaleSequential} + +[Examples](https://observablehq.com/@d3/sequential-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/sequential.js) · Constructs a new sequential scale with the specified [*domain*](#sequential_domain) and [*interpolator*](#sequential_interpolator) function or array. + +```js +const color = d3.scaleSequential([0, 100], d3.interpolateBlues); +``` + +If *domain* is not specified, it defaults to [0, 1]. + +```js +const color = d3.scaleSequential(d3.interpolateBlues); +``` + +If *interpolator* is not specified, it defaults to the identity function. + +```js +const identity = d3.scaleSequential(); +``` + +When the scale is [applied](#_sequential), the interpolator will be invoked with a value typically in the range [0, 1], where 0 represents the minimum value and 1 represents the maximum value. For example, to implement the ill-advised angry rainbow scale (please use [interpolateRainbow](../d3-scale-chromatic/cyclical.md#interpolateRainbow) instead): + +```js +const rainbow = d3.scaleSequential((t) => d3.hsl(t * 360, 1, 0.5) + ""); +``` + +If *interpolator* is an array, it represents the scale’s two-element output range and is converted to an interpolator function using [interpolate](../d3-interpolate/value.md#interpolate). + +```js +const color = d3.scaleSequential(["red", "blue"]); +``` + +A sequential scale’s domain must be numeric and must contain exactly two values. + +## *sequential*.interpolator(*interpolator*) {#sequential_interpolator} + +If *interpolator* is specified, sets the scale’s interpolator to the specified function. + +```js +const color = d3.scaleSequential().interpolator(d3.interpolateBlues); +``` + +If *interpolator* is not specified, returns the scale’s current interpolator. + +```js +color.interpolator() // d3.interpolateBlues +``` + +## *sequential*.range(*range*) {#sequential_range} + +See [*linear*.range](./linear.md#linear_range). If *range* is specified, the given two-element array is converted to an interpolator function using [interpolate](../d3-interpolate/value.md#interpolate). + +```js +const color = d3.scaleSequential().range(["red", "blue"]); +``` + +The above is equivalent to: + +```js +const color = d3.scaleSequential(d3.interpolate("red", "blue")); +``` + +## *sequential*.rangeRound(*range*) {#sequential_rangeRound} + +See [*linear*.rangeRound](./linear.md#linear_rangeRound). If *range* is specified, implicitly uses [interpolateRound](../d3-interpolate/value.md#interpolateRound) as the interpolator. + +## scaleSequentialLog(*domain*, *range*) {#scaleSequentialLog} + +Returns a new sequential scale with a logarithmic transform, analogous to a [log scale](./log.md). + +## scaleSequentialPow(*domain*, *range*) {#scaleSequentialPow} + +Returns a new sequential scale with an exponential transform, analogous to a [power scale](./pow.md). + +## scaleSequentialSqrt(*domain*, *range*) {#scaleSequentialSqrt} + +Returns a new sequential scale with a square-root transform, analogous to a [sqrt scale](./pow.md#scaleSqrt). + +## scaleSequentialSymlog(*domain*, *range*) {#scaleSequentialSymlog} + +Returns a new sequential scale with a symmetric logarithmic transform, analogous to a [symlog scale](./symlog.md). + +## scaleSequentialQuantile(*domain*, *range*) {#scaleSequentialQuantile} + +[Source](https://github.com/d3/d3-scale/blob/main/src/sequentialQuantile.js) · Returns a new sequential scale with a *p*-quantile transform, analogous to a [quantile scale](./quantile.md). + +## *sequentialQuantile*.quantiles(*n*) {#sequentialQuantile_quantiles} + +[Source](https://github.com/d3/d3-scale/blob/main/src/sequentialQuantile.js) · Returns an array of *n* + 1 quantiles. + +```js +const color = d3.scaleSequentialQuantile() + .domain(penguins.map((d) => d.body_mass_g)) + .interpolator(d3.interpolateBlues); + +color.quantiles(4); // [2700, 3550, 4050, 4750, 6300] +``` + +For example, if *n* = 4, returns an array of five numbers: the minimum value, the first quartile, the median, the third quartile, and the maximum. diff --git a/docs/d3-scale/symlog.md b/docs/d3-scale/symlog.md new file mode 100644 index 00000000000000..e54a2821aaea94 --- /dev/null +++ b/docs/d3-scale/symlog.md @@ -0,0 +1,31 @@ +# Symlog scales + +See [A bi-symmetric log transformation for wide-range data](https://www.researchgate.net/profile/John_Webber4/publication/233967063_A_bi-symmetric_log_transformation_for_wide-range_data/links/0fcfd50d791c85082e000000.pdf) by Webber for details. Unlike a [log scale](./log.md), a symlog scale domain can include zero. + +## scaleSymlog(*domain*, *range*) {#scaleSymlog} + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/symlog.js) · Constructs a new [continuous scale](#continuous-scales) with the specified [domain](#continuous_domain) and [range](#continuous_range), the [constant](#symlog_constant) 1, the [default](https://github.com/d3/d3-interpolate/blob/main/README.md#interpolate) [interpolator](#continuous_interpolate) and [clamping](#continuous_clamp) disabled. + +```js +const x = d3.scaleSymlog([0, 100], [0, 960]); +``` + +If a single argument is specified, it is interpreted as the *range*. If either *domain* or *range* are not specified, each defaults to [0, 1]. + +```js +const color = d3.scaleSymlog(["red", "blue"]) // default domain of [0, 1] +``` + +## *symlog*.constant(*constant*) + +[Examples](https://observablehq.com/@d3/continuous-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/symlog.js) · If *constant* is specified, sets the symlog constant to the specified number and returns this scale. The constant defaults to 1. + +```js +const x = d3.scaleSymlog([0, 100], [0, 960]).constant(2); +``` + +If *constant* is not specified, returns the current value of the symlog constant. + +```js +x.constant() // 2 +``` diff --git a/docs/d3-scale/threshold.md b/docs/d3-scale/threshold.md new file mode 100644 index 00000000000000..fad84927167082 --- /dev/null +++ b/docs/d3-scale/threshold.md @@ -0,0 +1,90 @@ +# Threshold scales + +Threshold scales are similar to [quantize scales](./quantize.md), except they allow you to map arbitrary subsets of the domain to discrete values in the range. The input domain is still continuous, and divided into slices based on a set of threshold values. See [this choropleth](https://observablehq.com/@d3/threshold-choropleth) for an example. + +## scaleThreshold(*domain*, *range*) {#scaleThreshold} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · Constructs a new threshold scale with the specified [*domain*](#threshold_domain) and [*range*](#threshold_range). + +```js +const color = d3.scaleThreshold([0, 1], ["red", "white", "blue"]); +``` + +If *domain* is not specified, it defaults to [0.5]. + +```js +const color = d3.scaleThreshold(["red", "blue"]); +color(0); // "red" +color(1); // "blue" +``` + +If *range* is not specified, it defaults to [0, 1]. + +## *threshold*(*value*) {#_threshold} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · Given a *value* in the input [domain](#threshold_domain), returns the corresponding value in the output [range](#threshold_range). For example: + +```js +const color = d3.scaleThreshold([0, 1], ["red", "white", "green"]); +color(-1); // "red" +color(0); // "white" +color(0.5); // "white" +color(1); // "green" +color(1000); // "green" +``` + +## *threshold*.invertExtent(*value*) {#threshold_invertExtent} + +[Examples](https://observablehq.com/@d3/choropleth) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · Returns the extent of values in the [domain](#threshold_domain) [x0, x1] for the corresponding *value* in the [range](#threshold_range), representing the inverse mapping from range to domain. + +```js +const color = d3.scaleThreshold([0, 1], ["red", "white", "green"]); +color.invertExtent("red"); // [undefined, 0] +color.invertExtent("white"); // [0, 1] +color.invertExtent("green"); // [1, undefined] +``` + +This method is useful for interaction, say to determine the value in the domain that corresponds to the pixel location under the mouse. The extent below the lowest threshold is undefined (unbounded), as is the extent above the highest threshold. + +## *threshold*.domain(*domain*) {#threshold_domain} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · If *domain* is specified, sets the scale’s domain to the specified array of values. + +```js +const color = d3.scaleThreshold(["red", "white", "green"]).domain([0, 1]); +``` + +The values must be in ascending order or the behavior of the scale is undefined. The values are typically numbers, but any naturally ordered values (such as strings) will work; a threshold scale can be used to encode any type that is ordered. If the number of values in the scale’s range is *n* + 1, the number of values in the scale’s domain must be *n*. If there are fewer than *n* elements in the domain, the additional values in the range are ignored. If there are more than *n* elements in the domain, the scale may return undefined for some inputs. + +If *domain* is not specified, returns the scale’s current domain. + +```js +color.domain() // [0, 1] +``` + +## *threshold*.range(*range*) {#threshold_range} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · If *range* is specified, sets the scale’s range to the specified array of values. + +```js +const color = d3.scaleThreshold().range(["red", "white", "green"]); +``` + +If the number of values in the scale’s domain is *n*, the number of values in the scale’s range must be *n* + 1. If there are fewer than *n* + 1 elements in the range, the scale may return undefined for some inputs. If there are more than *n* + 1 elements in the range, the additional values are ignored. The elements in the given array need not be numbers; any value or type will work. + +If *range* is not specified, returns the scale’s current range. + +```js +color.range() // ["red", "white", "green"] +``` + +## *threshold*.copy() {#threshold_copy} + +[Examples](https://observablehq.com/@d3/quantile-quantize-and-threshold-scales) · [Source](https://github.com/d3/d3-scale/blob/main/src/threshold.js) · Returns an exact copy of this scale. + +```js +const c1 = d3.scaleThreshold(d3.schemeBlues[5]); +const c2 = c1.copy(); +``` + +Changes to this scale will not affect the returned scale, and vice versa. diff --git a/docs/d3-scale/time.md b/docs/d3-scale/time.md new file mode 100644 index 00000000000000..8ce53c6ed7ccbe --- /dev/null +++ b/docs/d3-scale/time.md @@ -0,0 +1,124 @@ +# Time scales + +Time scales are a variant of [linear scales](./linear.md) that have a temporal domain: domain values are coerced to [dates](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date) rather than numbers, and [invert](#time_invert) likewise returns a date. Time scales implement [ticks](#time_ticks) based on [calendar intervals](../d3-time.md), taking the pain out of generating axes for temporal domains. + +## scaleTime(*domain*, *range*) {#scaleTime} + +[Examples](https://observablehq.com/@d3/d3-scaletime) · [Source](https://github.com/d3/d3-scale/blob/main/src/time.js) · Constructs a new time scale with the specified [domain](#time_domain) and [range](#time_range), the [default](../d3-interpolate/value.md#interpolate) [interpolator](#time_interpolate) and [clamping](#time_clamp) disabled. For example, to create a position encoding: + +```js +const x = d3.scaleUtc([new Date(2000, 0, 1), new Date(2000, 0, 2)], [0, 960]); +x(new Date(2000, 0, 1, 5)); // 200 +x(new Date(2000, 0, 1, 16)); // 640 +x.invert(200); // Sat Jan 01 2000 05:00:00 GMT-0800 (PST) +x.invert(640); // Sat Jan 01 2000 16:00:00 GMT-0800 (PST) +``` + +If *domain* is not specified, it defaults to [2000-01-01, 2000-01-02] in local time. If *range* is not specified, it defaults to [0, 1]. + +## scaleUtc(*domain*, *range*) {#scaleUtc} + +[Examples](https://observablehq.com/@d3/d3-scaletime) · [Source](https://github.com/d3/d3-scale/blob/main/src/utcTime.js) · Equivalent to [scaleTime](#scaleTime), but the returned time scale operates in [Coordinated Universal Time](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) rather than local time. For example, to create a position encoding: + +```js +const x = d3.scaleUtc([new Date("2000-01-01"), new Date("2000-01-02")], [0, 960]); +x(new Date("2000-01-01T05:00Z")); // 200 +x(new Date("2000-01-01T16:00Z")); // 640 +x.invert(200); // 2000-01-01T05:00Z +x.invert(640); // 2000-01-01T16:00Z +``` + +If *domain* is not specified, it defaults to [2000-01-01, 2000-01-02] in UTC time. If *range* is not specified, it defaults to [0, 1]. + +:::tip +A UTC scale should be preferred when possible as it behaves more predictably: days are always twenty-four hours and the scale does not depend on the browser’s time zone. +::: + +## *time*.ticks(*count*) {#time_ticks} + +[Examples](https://observablehq.com/@d3/d3-scaletime) · [Source](https://github.com/d3/d3-scale/blob/main/src/time.js) · Returns representative dates from the scale’s [domain](#time_domain). + +```js +const x = d3.scaleTime(); +x.ticks(10); +// [Sat Jan 01 2000 00:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 03:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 06:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 09:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 12:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 15:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 18:00:00 GMT-0800 (PST), +// Sat Jan 01 2000 21:00:00 GMT-0800 (PST), +// Sun Jan 02 2000 00:00:00 GMT-0800 (PST)] +``` + +The returned tick values are uniformly-spaced (mostly), have sensible values (such as every day at midnight), and are guaranteed to be within the extent of the domain. Ticks are often used to display reference lines, or tick marks, in conjunction with the visualized data. + +An optional *count* may be specified to affect how many ticks are generated. If *count* is not specified, it defaults to 10. The specified *count* is only a hint; the scale may return more or fewer values depending on the domain. + +The following time intervals are considered for automatic ticks: + +* 1-, 5-, 15- and 30-second. +* 1-, 5-, 15- and 30-minute. +* 1-, 3-, 6- and 12-hour. +* 1- and 2-day. +* 1-week. +* 1- and 3-month. +* 1-year. + +In lieu of a *count*, a [time *interval*](../d3-time.md#intervals) may be explicitly specified. To prune the generated ticks for a given time *interval*, use [*interval*.every](../d3-time.md#interval_every). For example, to generate ticks at 15-minute intervals: + +```js +const x = d3.scaleUtc().domain([new Date("2000-01-01T00:00Z"), new Date("2000-01-01T02:00Z")]); +x.ticks(d3.utcMinute.every(15)); +// [2000-01-01T00:00Z, +// 2000-01-01T00:15Z, +// 2000-01-01T00:30Z, +// 2000-01-01T00:45Z, +// 2000-01-01T01:00Z, +// 2000-01-01T01:15Z, +// 2000-01-01T01:30Z, +// 2000-01-01T01:45Z, +// 2000-01-01T02:00Z] +``` + +Note: in some cases, such as with day ticks, specifying a *step* can result in irregular spacing of ticks because time intervals have varying length. + +## *time*.tickFormat(*count*, *specifier*) {#time_tickFormat} + +[Examples](https://observablehq.com/@d3/scale-ticks) · [Source](https://github.com/d3/d3-scale/blob/main/src/time.js) · Returns a time format function suitable for displaying [tick](#time_ticks) values. + +```js +const x = d3.scaleUtc().domain([new Date("2000-01-01T00:00Z"), new Date("2000-01-01T02:00Z")]); +const T = x.ticks(); // [2000-01-01T00:00Z, 2000-01-01T00:15Z, 2000-01-01T00:30Z, …] +const f = x.tickFormat(); +T.map(f); // ["2000", "12:15", "12:30", "12:45", "01 AM", "01:15", "01:30", "01:45", "02 AM"] +``` + +The specified *count* is currently ignored, but is accepted for consistency with other scales such as [*linear*.tickFormat](./linear.md#linear_tickFormat). If a format *specifier* is specified, this method is equivalent to [format](../d3-time-format.md#format). If *specifier* is not specified, the default time format is returned. The default multi-scale time format chooses a human-readable representation based on the specified date as follows: + +* `%Y` - for year boundaries, such as `2011`. +* `%B` - for month boundaries, such as `February`. +* `%b %d` - for week boundaries, such as `Feb 06`. +* `%a %d` - for day boundaries, such as `Mon 07`. +* `%I %p` - for hour boundaries, such as `01 AM`. +* `%I:%M` - for minute boundaries, such as `01:23`. +* `:%S` - for second boundaries, such as `:45`. +* `.%L` - milliseconds for all other times, such as `.012`. + +Although somewhat unusual, this default behavior has the benefit of providing both local and global context: for example, formatting a sequence of ticks as [11 PM, Mon 07, 01 AM] reveals information about hours, dates, and day simultaneously, rather than just the hours [11 PM, 12 AM, 01 AM]. See [d3-time-format](../d3-time-format.md) if you’d like to roll your own conditional time format. + +## *time*.nice(*count*) {#time_nice} + +[Examples](https://observablehq.com/@d3/d3-scaletime) · [Source](https://github.com/d3/d3-scale/blob/main/src/time.js) · Extends the [domain](#time_domain) so that it starts and ends on nice round values. + +```js +const x = d3.scaleUtc().domain([new Date("2000-01-01T12:34Z"), new Date("2000-01-01T12:59Z")]).nice(); +x.domain(); // [2000-01-01T12:30Z, 2000-01-01T13:00Z] +``` + +This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value. See [*linear*.nice](./linear.md#linear_nice) for more. + +An optional tick *count* argument allows greater control over the step size used to extend the bounds, guaranteeing that the returned [ticks](#time_ticks) will exactly cover the domain. Alternatively, a [time *interval*](../d3-time.md#intervals) may be specified to explicitly set the ticks. If an *interval* is specified, an optional *step* may also be specified to skip some ticks. For example, *time*.nice(d3.utcSecond.every(10)) will extend the domain to an even ten seconds (0, 10, 20, etc.). See [*time*.ticks](#time_ticks) and [*interval*.every](../d3-time.md#interval_every) for further detail. + +Nicing is useful if the domain is computed from data, say using [extent](../d3-array/summarize.md#extent), and may be irregular. For example, for a domain of [2009-07-13T00:02, 2009-07-13T23:48], the nice domain is [2009-07-13, 2009-07-14]. If the domain has more than two values, nicing the domain only affects the first and last value. diff --git a/docs/d3-selection.md b/docs/d3-selection.md new file mode 100644 index 00000000000000..9fae73e4d7393d --- /dev/null +++ b/docs/d3-selection.md @@ -0,0 +1,15 @@ +# d3-selection + +Selections allow powerful data-driven transformation of the document object model (DOM): set [attributes](./d3-selection/modifying.md#selection_attr), [styles](./d3-selection/modifying.md#selection_style), [properties](./d3-selection/modifying.md#selection_property), [HTML](./d3-selection/modifying.md#selection_html) or [text](./d3-selection/modifying.md#selection_text) content, and more. Using the [data join](./d3-selection/joining.md)’s [enter](./d3-selection/joining.md#selection_enter) and [exit](./d3-selection/joining.md#selection_enter) selections, you can also [add](./d3-selection/modifying.md#selection_append) or [remove](./d3-selection/modifying.md#selection_remove) elements to correspond to data. + +See one of: + +* [Selecting elements](./d3-selection/selecting.md) - querying for DOM elements. +* [Modifying elements](./d3-selection/modifying.md) - modifying attributes of selected elements. +* [Joining data](./d3-selection/joining.md) - joining data to selected elements for visualization. +* [Handling events](./d3-selection/events.md) - declaring event listeners for interaction. +* [Control flow](./d3-selection/control-flow.md) - iterating over selected elements. +* [Local variables](./d3-selection/locals.md) - attaching state to elements. +* [Namespaces](./d3-selection/namespaces.md) - dealing with XML namespaces. + +For more, see [the d3-selection collection on Observable](https://observablehq.com/collection/@d3/d3-selection). diff --git a/docs/d3-selection/control-flow.md b/docs/d3-selection/control-flow.md new file mode 100644 index 00000000000000..5372e9d030b3fd --- /dev/null +++ b/docs/d3-selection/control-flow.md @@ -0,0 +1,91 @@ +# Control flow + +For advanced usage, selections provide methods for custom control flow. + +## *selection*.each(*function*) {#selection_each} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/each.js) · Invokes the specified *function* for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). This method can be used to invoke arbitrary code for each selected element, and is useful for creating a context to access parent and child data simultaneously, such as: + +```js +parent.each(function(p, j) { + d3.select(this) + .selectAll(".child") + .text(d => `child ${d.name} of ${p.name}`); +}); +``` + +See [sized donut multiples](https://gist.github.com/mbostock/4c5fad723c87d2fd8273) for an example. + +## *selection*.call(*function*, ...*arguments*) {#selection_call} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/call.js) · Invokes the specified *function* exactly once, passing in this selection along with any optional *arguments*. Returns this selection. This is equivalent to invoking the function by hand but facilitates method chaining. For example, to set several styles in a reusable function: + +```js +function name(selection, first, last) { + selection + .attr("first-name", first) + .attr("last-name", last); +} +``` + +Now say: + +```js +d3.selectAll("div").call(name, "John", "Snow"); +``` + +This is roughly equivalent to: + +```js +name(d3.selectAll("div"), "John", "Snow"); +``` + +The only difference is that *selection*.call always returns the *selection* and not the return value of the called *function*, `name`. + +## *selection*.empty() {#selection_empty} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/empty.js) · Returns true if this selection contains no (non-null) elements. + +```js +d3.selectAll("p").empty() // false, here +``` + +## *selection*.nodes() {#selection_nodes} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/nodes.js) · Returns an array of all (non-null) elements in this selection. + +```js +d3.selectAll("p").nodes() // [p, p, p, …] +``` + +Equivalent to: + +```js +Array.from(selection) +``` + +See also [*selection*[Symbol.iterator]](#selection_iterator). + +## *selection*[Symbol.iterator]\(\) + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/iterator.js) · Returns an iterator over the selected (non-null) elements. For example, to iterate over the selected elements: + +```js +for (const element of selection) { + console.log(element); +} +``` + +To flatten the selection to an array: + +```js +const elements = [...selection]; +``` + +## *selection*.node() {#selection_node} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/node.js) · Returns the first (non-null) element in this selection. If the selection is empty, returns null. + +## *selection*.size() {#selection_size} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/size.js) · Returns the total number of (non-null) elements in this selection. diff --git a/docs/d3-selection/events.md b/docs/d3-selection/events.md new file mode 100644 index 00000000000000..d697cf0a8a89ac --- /dev/null +++ b/docs/d3-selection/events.md @@ -0,0 +1,61 @@ +# Handling events + +For interaction, selections allow listening for and dispatching of events. + +## *selection*.on(*typenames*, *listener*, *options*) {#selection_on} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/on.js) · Adds or removes a *listener* to each selected element for the specified event *typenames*. + +```js +d3.selectAll("p").on("click", (event) => console.log(event)) +``` + +The *typenames* is a string event type, such as `click`, `mouseover`, or `submit`; any [DOM event type](https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events) supported by your browser may be used. The type may be optionally followed by a period (`.`) and a name; the optional name allows multiple callbacks to be registered to receive events of the same type, such as `click.foo` and `click.bar`. To specify multiple typenames, separate typenames with spaces, such as `input change` or `click.foo click.bar`. + +When a specified event is dispatched on a selected element, the specified *listener* will be evaluated for the element, being passed the current event (*event*) and the current datum (*d*), with *this* as the current DOM element (*event*.currentTarget). Listeners always see the latest datum for their element. Note: while you can use [*event*.pageX](https://developer.mozilla.org/en/DOM/event.pageX) and [*event*.pageY](https://developer.mozilla.org/en/DOM/event.pageY) directly, it is often convenient to transform the event position to the local coordinate system of the element that received the event using [d3.pointer](#pointer). + +If an event listener was previously registered for the same *typename* on a selected element, the old listener is removed before the new listener is added. To remove a listener, pass null as the *listener*. To remove all listeners for a given name, pass null as the *listener* and `.foo` as the *typename*, where `foo` is the name; to remove all listeners with no name, specify `.` as the *typename*. + +An optional *options* object may specify characteristics about the event listener, such as whether it is capturing or passive; see [*element*.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener). + +If a *listener* is not specified, returns the currently-assigned listener for the specified event *typename* on the first (non-null) selected element, if any. If multiple typenames are specified, the first matching listener is returned. + +## *selection*.dispatch(*type*, *parameters*) {#selection_dispatch} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/dispatch.js) · Dispatches a [custom event](http://www.w3.org/TR/dom/#interface-customevent) of the specified *type* to each selected element, in order. + +```js +d3.select("p").dispatch("click") +``` + +An optional *parameters* object may be specified to set additional properties of the event. It may contain the following fields: + +* [`bubbles`](https://www.w3.org/TR/dom/#dom-event-bubbles) - if true, the event is dispatched to ancestors in reverse tree order. +* [`cancelable`](https://www.w3.org/TR/dom/#dom-event-cancelable) - if true, *event*.preventDefault is allowed. +* [`detail`](https://www.w3.org/TR/dom/#dom-customevent-detail) - any custom data associated with the event. + +If *parameters* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). It must return the parameters for the current element. + +## pointer(*event*, *target*) {#pointer} + +[Source](https://github.com/d3/d3-selection/blob/main/src/pointer.js) · Returns a two-element array of numbers [*x*, *y*] representing the coordinates of the specified *event* relative to the specified *target*. + +```js +const [x, y] = d3.pointer(event); +``` + +*event* can be a [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent), a [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent), a [Touch](https://www.w3.org/TR/touch-events/#touch-interface), or a custom event holding a UIEvent as *event*.sourceEvent. + +If *target* is not specified, it defaults to the source event’s currentTarget property, if available. If the *target* is an SVG element, the event’s coordinates are transformed using the [inverse](https://www.w3.org/TR/geometry-1/#dom-dommatrixreadonly-inverse) of the [screen coordinate transformation matrix](https://www.w3.org/TR/SVG/types.html#__svg__SVGGraphicsElement__getScreenCTM). If the *target* is an HTML element, the event’s coordinates are translated relative to the top-left corner of the *target*’s [bounding client rectangle](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). (As such, the coordinate system can only be translated relative to the client coordinates. See also [GeometryUtils](https://www.w3.org/TR/cssom-view-1/#the-geometryutils-interface).) Otherwise, [*event*.pageX, *event*.pageY] is returned. + +## pointers(*event*, *target*) {#pointers} + +[Source](https://github.com/d3/d3-selection/blob/main/src/pointers.js) · Returns an array [[*x0*, *y0*], [*x1*, *y1*]…] of coordinates of the specified *event*’s pointer locations relative to the specified *target*. + +```js +const points = d3.pointers(event); +``` + +For touch events, the returned array of positions corresponds to the *event*.touches array; for other events, returns a single-element array. + +If *target* is not specified, it defaults to the source event’s currentTarget property, if any. diff --git a/docs/d3-selection/joining.md b/docs/d3-selection/joining.md new file mode 100644 index 00000000000000..c5059ca8e1704f --- /dev/null +++ b/docs/d3-selection/joining.md @@ -0,0 +1,216 @@ +# Joining data + +For an introduction, see [Thinking With Joins](http://bost.ocks.org/mike/join/) and the [*selection*.join notebook](https://observablehq.com/@d3/selection-join). + +## *selection*.data(*data*, *key*) {#selection_data} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/data.js) · Binds the specified array of *data* with the selected elements, returning a new selection that represents the *update* selection: the elements successfully bound to data. Also defines the [enter](#selection_enter) and [exit](#selection_exit) selections on the returned selection, which can be used to add or remove elements to correspond to the new data. The specified *data* is an array of arbitrary values (*e.g.*, numbers or objects), or a function that returns an array of values for each group. When data is assigned to an element, it is stored in the property `__data__`, thus making the data “sticky” and available on re-selection. + +The *data* is specified **for each group** in the selection. If the selection has multiple groups (such as [d3.selectAll](./selecting.md#selectAll) followed by [*selection*.selectAll](./selecting.md#selection_selectAll)), then *data* should typically be specified as a function. This function will be evaluated for each group in order, being passed the group’s parent datum (*d*, which may be undefined), the group index (*i*), and the selection’s parent nodes (*nodes*), with *this* as the group’s parent element. + +In conjunction with [*selection*.join](#selection_join) (or more explicitly with [*selection*.enter](#selection_enter), [*selection*.exit](#selection_exit), [*selection*.append](./modifying.md#selection_append) and [*selection*.remove](./modifying.md#selection_remove)), *selection*.data can be used to enter, update and exit elements to match data. For example, to create an HTML table from a matrix of numbers: + +```js +const matrix = [ + [11975, 5871, 8916, 2868], + [ 1951, 10048, 2060, 6171], + [ 8010, 16145, 8090, 8045], + [ 1013, 990, 940, 6907] +]; + +d3.select("body") + .append("table") + .selectAll("tr") + .data(matrix) + .join("tr") + .selectAll("td") + .data(d => d) + .join("td") + .text(d => d); +``` + +In this example the *data* function is the identity function: for each table row, it returns the corresponding row from the data matrix. + +If a *key* function is not specified, then the first datum in *data* is assigned to the first selected element, the second datum to the second selected element, and so on. A *key* function may be specified to control which datum is assigned to which element, replacing the default join-by-index, by computing a string identifier for each datum and element. This key function is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]); the returned string is the element’s key. The key function is then also evaluated for each new datum in *data*, being passed the current datum (*d*), the current index (*i*), and the group’s new *data*, with *this* as the group’s parent DOM element; the returned string is the datum’s key. The datum for a given key is assigned to the element with the matching key. If multiple elements have the same key, the duplicate elements are put into the exit selection; if multiple data have the same key, the duplicate data are put into the enter selection. + +For example, given this document: + +```html +
+
+
+
+
+
+``` + +You could join data by key as follows: + + +```js +const data = [ + {name: "Locke", number: 4}, + {name: "Reyes", number: 8}, + {name: "Ford", number: 15}, + {name: "Jarrah", number: 16}, + {name: "Shephard", number: 23}, + {name: "Kwon", number: 42} +]; + +d3.selectAll("div") + .data(data, function(d) { return d ? d.name : this.id; }) + .text(d => d.number); +``` + +This example key function uses the datum *d* if present, and otherwise falls back to the element’s id property. Since these elements were not previously bound to data, the datum *d* is null when the key function is evaluated on selected elements, and non-null when the key function is evaluated on the new data. + +The *update* and *enter* selections are returned in data order, while the *exit* selection preserves the selection order prior to the join. If a key function is specified, the order of elements in the selection may not match their order in the document; use [*selection*.order](./modifying.md#selection_order) or [*selection*.sort](./modifying.md#selection_sort) as needed. For more on how the key function affects the join, see [A Bar Chart, Part 2](http://bost.ocks.org/mike/bar/2/) and [Object Constancy](http://bost.ocks.org/mike/constancy/). + +If *data* is not specified, this method returns the array of data for the selected elements. + +This method cannot be used to clear bound data; use [*selection*.datum](#selection_datum) instead. + +## *selection*.join(*enter*, *update*, *exit*) {#selection_join} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/join.js) · Appends, removes and reorders elements as necessary to match the data that was previously bound by [*selection*.data](#selection_data), returning the [merged](#selection_merge) enter and update selection. This method is a convenient alternative to the explicit [general update pattern](https://observablehq.com/@d3/general-update-pattern), replacing [*selection*.enter](#selection_enter), [*selection*.exit](#selection_exit), [*selection*.append](./modifying.md#selection_append), [*selection*.remove](./modifying.md#selection_remove), and [*selection*.order](./modifying.md#selection_order). For example: + +```js +svg.selectAll("circle") + .data(data) + .join("circle") + .attr("fill", "none") + .attr("stroke", "black"); +``` + +The *enter* function may be specified as a string shorthand, as above, which is equivalent to [*selection*.append](./modifying.md#selection_append) with the given element name. Likewise, optional *update* and *exit* functions may be specified, which default to the identity function and calling [*selection*.remove](./modifying.md#selection_remove), respectively. The shorthand above is thus equivalent to: + +```js +svg.selectAll("circle") + .data(data) + .join( + enter => enter.append("circle"), + update => update, + exit => exit.remove() + ) + .attr("fill", "none") + .attr("stroke", "black"); +``` + +By passing separate functions on enter, update and exit, you have greater control over what happens. And by specifying a key function to [*selection*.data](#selection_data), you can minimize changes to the DOM to optimize performance. For example, to set different fill colors for enter and update: + +```js +svg.selectAll("circle") + .data(data) + .join( + enter => enter.append("circle").attr("fill", "green"), + update => update.attr("fill", "blue") + ) + .attr("stroke", "black"); +``` + +The selections returned by the *enter* and *update* functions are merged and then returned by *selection*.join. + +You can animate enter, update and exit by creating transitions inside the *enter*, *update* and *exit* functions. If the *enter* and *update* functions return transitions, their underlying selections are merged and then returned by *selection*.join. The return value of the *exit* function is not used. + +For more, see the [*selection*.join notebook](https://observablehq.com/@d3/selection-join). + +## *selection*.enter() {#selection_enter} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/enter.js) · Returns the enter selection: placeholder nodes for each datum that had no corresponding DOM element in the selection. (The enter selection is empty for selections not returned by [*selection*.data](#selection_data).) + +The enter selection is typically used to create “missing” elements corresponding to new data. For example, to create DIV elements from an array of numbers: + +```js +const div = d3.select("body") + .selectAll("div") + .data([4, 8, 15, 16, 23, 42]) + .enter().append("div") + .text(d => d); +``` + +If the body is initially empty, the above code will create six new DIV elements, append them to the body in-order, and assign their text content as the associated (string-coerced) number: + +```html +
4
+
8
+
15
+
16
+
23
+
42
+``` + +Conceptually, the enter selection’s placeholders are pointers to the parent element (in this example, the document body). The enter selection is typically only used transiently to append elements, and is often [merged](#selection_merge) with the update selection after appending, such that modifications can be applied to both entering and updating elements. + +## *selection*.exit() {#selection_exit} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/exit.js) · Returns the exit selection: existing DOM elements in the selection for which no new datum was found. (The exit selection is empty for selections not returned by [*selection*.data](#selection_data).) + +The exit selection is typically used to remove “superfluous” elements corresponding to old data. For example, to update the DIV elements created previously with a new array of numbers: + +```js +div = div.data([1, 2, 4, 8, 16, 32], d => d); +``` + +Since a key function was specified (as the identity function), and the new data contains the numbers [4, 8, 16] which match existing elements in the document, the update selection contains three DIV elements. Leaving those elements as-is, we can append new elements for [1, 2, 32] using the enter selection: + +```js +div.enter().append("div").text(d => d); +``` + +Likewise, to remove the exiting elements [15, 23, 42]: + +```js +div.exit().remove(); +``` + +Now the document body looks like this: + +```html +
1
+
2
+
4
+
8
+
16
+
32
+``` + +The order of the DOM elements matches the order of the data because the old data’s order and the new data’s order were consistent. If the new data’s order is different, use [*selection*.order](./modifying.md#selection_order) to reorder the elements in the DOM. See the [General Update Pattern](http://bl.ocks.org/mbostock/3808218) example thread for more on data joins. + +## *selection*.datum(value) {#selection_datum} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/datum.js) · Gets or sets the bound data for each selected element. Unlike [*selection*.data](#selection_data), this method does not compute a join and does not affect indexes or the enter and exit selections. + +If a *value* is specified, sets the element’s bound data to the specified value on all selected elements. If the *value* is a constant, all elements are given the same datum; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function is then used to set each element’s new data. A null value will delete the bound data. + +If a *value* is not specified, returns the bound datum for the first (non-null) element in the selection. This is generally useful only if you know the selection contains exactly one element. + +This method is useful for accessing HTML5 [custom data attributes](http://www.w3.org/TR/html5/dom.html#custom-data-attribute). For example, given the following elements: + +```html +
    +
  • Shawn Allen
  • +
  • Mike Bostock
  • +
+``` + +You can expose the custom data attributes by setting each element’s data as the built-in [dataset](http://www.w3.org/TR/html5/dom.html#dom-dataset) property: + +```js +selection.datum(function() { return this.dataset; }) +``` + +## *selection*.merge(*other*) {#selection_merge} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/merge.js) · Returns a new selection merging this selection with the specified *other* selection or transition. The returned selection has the same number of groups and the same parents as this selection. Any missing (null) elements in this selection are filled with the corresponding element, if present (not null), from the specified *selection*. (If the *other* selection has additional groups or parents, they are ignored.) + +This method is used internally by [*selection*.join](#selection_join) to merge the [enter](#selection_enter) and [update](#selection_data) selections after binding data. You can also merge explicitly, although note that since merging is based on element index, you should use operations that preserve index, such as [*selection*.select](./selecting.md#selection_select) instead of [*selection*.filter](./selecting.md#selection_filter). For example: + +```js +const odd = selection.select(function(d, i) { return i & 1 ? this : null; )); +const even = selection.select(function(d, i) { return i & 1 ? null : this; )); +const merged = odd.merge(even); +``` + +See [*selection*.data](#selection_data) for more. + +This method is not intended for concatenating arbitrary selections, however: if both this selection and the specified *other* selection have (non-null) elements at the same index, this selection’s element is returned in the merge and the *other* selection’s element is ignored. diff --git a/docs/d3-selection/locals.md b/docs/d3-selection/locals.md new file mode 100644 index 00000000000000..a42d711d72abbd --- /dev/null +++ b/docs/d3-selection/locals.md @@ -0,0 +1,61 @@ +# Local variables + +D3 locals allow you to define local state independent of data. For instance, when rendering [small multiples](https://gist.github.com/mbostock/e1192fe405703d8321a5187350910e08) of time-series data, you might want the same x scale for all charts but distinct y scales to compare the relative performance of each metric. D3 locals are scoped by DOM elements: on set, the value is stored on the given element; on get, the value is retrieved from given element or the nearest ancestor that defines it. + +:::warning CAUTION +Locals are rarely used; you may find it easier to store whatever state you need in the selection’s data. +::: + +## local() {#local} + +[Source](https://github.com/d3/d3-selection/blob/main/src/local.js) · Declares a new local variable. + +```js +const foo = d3.local(); +``` + +Like `var`, each local is a distinct symbolic reference; unlike `var`, the value of each local is also scoped by the DOM. + +## *local*.set(*node*, *value*) {#local_set} + +[Source](https://github.com/d3/d3-selection/blob/main/src/local.js) · Sets the value of this local on the specified *node* to the *value*, and returns the specified *value*. This is often performed using [*selection*.each](./control-flow.md#selection_each): + +```js +selection.each(function(d) { + foo.set(this, d.value); +}); +``` + +If you are just setting a single variable, consider using [*selection*.property](./modifying.md#selection_property): + +```js +selection.property(foo, (d) => d.value); +``` + +## *local*.get(*node*) {#local_get} + +[Source](https://github.com/d3/d3-selection/blob/main/src/local.js) · Returns the value of this local on the specified *node*. + +```js +selection.each(function() { + const value = foo.get(this); +}); +``` + +If the *node* does not define this local, returns the value from the nearest ancestor that defines it. Returns undefined if no ancestor defines this local. + +## *local*.remove(*node*) {#local_remove} + +[Source](https://github.com/d3/d3-selection/blob/main/src/local.js) · Deletes this local’s value from the specified *node*. + +```js +selection.each(function() { + foo.remove(this); +}); +``` + +Returns true if the *node* defined this local prior to removal, and false otherwise. If ancestors also define this local, those definitions are unaffected, and thus [*local*.get](#local_get) will still return the inherited value. + +## *local*.toString() {#local_toString} + +[Source](https://github.com/d3/d3-selection/blob/main/src/local.js) · Returns the automatically-generated identifier for this local. This is the name of the property that is used to store the local’s value on elements, and thus you can also set or get the local’s value using *element*[*local*] or by using [*selection*.property](./modifying.md#selection_property). diff --git a/docs/d3-selection/modifying.md b/docs/d3-selection/modifying.md new file mode 100644 index 00000000000000..23cc2ff73f3ce4 --- /dev/null +++ b/docs/d3-selection/modifying.md @@ -0,0 +1,268 @@ +# Modifying elements + +After selecting elements, use the selection to modify the elements. For example, to set the class and color style of all paragraph elements in the current document: + +```js +d3.selectAll("p") + .attr("class", "graf") + .style("color", "red"); +``` + +Selection methods typically return the current selection, or a new selection, allowing the concise application of multiple operations on a given selection via method chaining. The above is equivalent to: + +```js +const p = d3.selectAll("p"); +p.attr("class", "graf"); +p.style("color", "red"); +``` + +Selections are immutable. All selection methods that affect which elements are selected (or their order) return a new selection rather than modifying the current selection. However, note that elements are necessarily mutable, as selections drive transformations of the document! + +## *selection*.attr(*name*, *value*) {#selection_attr} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/attr.js) · If a *value* is specified, sets the attribute with the specified *name* to the specified value on the selected elements and returns this selection. + +```js +selection.attr("color", "red") +``` + +If the *value* is a constant, all elements are given the same attribute value; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to set each element’s attribute. A null value will remove the specified attribute. + +```js +selection.attr("color") // "red" +``` + +If a *value* is not specified, returns the current value of the specified attribute for the first (non-null) element in the selection. This is generally useful only if you know that the selection contains exactly one element. + +The specified *name* may have a namespace prefix, such as `xlink:href` to specify the `href` attribute in the XLink namespace. See [namespaces](./namespaces.md#namespaces) for the map of supported namespaces; additional namespaces can be registered by adding to the map. + +## *selection*.classed(*names*, *value*) {#selection_classed} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/classed.js) · If a *value* is specified, assigns or unassigns the specified CSS class *names* on the selected elements by setting the `class` attribute or modifying the `classList` property and returns this selection. + +```js +selection.classed("foo", true) +``` + +The specified *names* is a string of space-separated class names. For example, to assign the classes `foo` and `bar` to the selected elements: + +```js +selection.classed("foo bar", true) +``` + +If the *value* is truthy, then all elements are assigned the specified classes; otherwise, the classes are unassigned. + +```js +selection.classed("foo", () => Math.random() > 0.5) +``` + +If the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to assign or unassign classes on each element. + +```js +selection.classed("foo") // true, perhaps +``` + +If a *value* is not specified, returns true if and only if the first (non-null) selected element has the specified *classes*. This is generally useful only if you know the selection contains exactly one element. + +## *selection*.style(*name*, *value*, *priority*) {#selection_style} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/style.js) · If a *value* is specified, sets the style property with the specified *name* to the specified value on the selected elements and returns this selection. + +```js +selection.style("color", "red") +``` + +If the *value* is a constant, then all elements are given the same style property value; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to set each element’s style property. A null value will remove the style property. An optional *priority* may also be specified, either as null or the string `important` (without the exclamation point). + +```js +selection.style("color") // "red" +``` + +If a *value* is not specified, returns the current value of the specified style property for the first (non-null) element in the selection. The current value is defined as the element’s inline value, if present, and otherwise its [computed value](https://developer.mozilla.org/en-US/docs/Web/CSS/computed_value). Accessing the current style value is generally useful only if you know the selection contains exactly one element. + +:::warning CAUTION +Unlike many SVG attributes, CSS styles typically have associated units. For example, `3px` is a valid stroke-width property value, while `3` is not. Some browsers implicitly assign the `px` (pixel) unit to numeric values, but not all browsers do: IE, for example, throws an “invalid arguments” error! +::: + +## *selection*.property(*name*, *value*) {#selection_property} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/property.js) · Some HTML elements have special properties that are not addressable using attributes or styles, such as a form field’s text `value` and a checkbox’s `checked` boolean. Use this method to get or set these properties. + +```js +selection.property("checked", true) +``` + +If a *value* is specified, sets the property with the specified *name* to the specified value on selected elements. If the *value* is a constant, then all elements are given the same property value; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to set each element’s property. A null value will delete the specified property. + +```js +selection.property("checked") // true, perhaps +``` + +If a *value* is not specified, returns the value of the specified property for the first (non-null) element in the selection. This is generally useful only if you know the selection contains exactly one element. + +## *selection*.text(*value*) {#selection_text} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/text.js) · If a *value* is specified, sets the [text content](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent) to the specified value on all selected elements, replacing any existing child elements. + +```js +selection.text("Hello, world!") +``` + +If the *value* is a constant, then all elements are given the same text content; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to set each element’s text content. A null value will clear the content. + +```js +selection.text() // "Hello, world!" +``` + +If a *value* is not specified, returns the text content for the first (non-null) element in the selection. This is generally useful only if you know the selection contains exactly one element. + +## *selection*.html(*value*) {#selection_html} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/html.js) · If a *value* is specified, sets the [inner HTML](http://dev.w3.org/html5/spec-LC/apis-in-html-documents.html#innerhtml) to the specified value on all selected elements, replacing any existing child elements. + +```js +selection.html("Hello, world!") +``` + +If the *value* is a constant, then all elements are given the same inner HTML; otherwise, if the *value* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The function’s return value is then used to set each element’s inner HTML. A null value will clear the content. + +```js +selection.html() // "Hello, world!" +``` + +If a *value* is not specified, returns the inner HTML for the first (non-null) element in the selection. This is generally useful only if you know the selection contains exactly one element. + +Use [*selection*.append](#selection_append) or [*selection*.insert](#selection_insert) instead to create data-driven content; this method is intended for when you want a little bit of HTML, say for rich formatting. Also, *selection*.html is only supported on HTML elements. SVG elements and other non-HTML elements do not support the innerHTML property, and thus are incompatible with *selection*.html. Consider using [XMLSerializer](https://developer.mozilla.org/en-US/docs/XMLSerializer) to convert a DOM subtree to text. See also the [innersvg polyfill](https://code.google.com/p/innersvg/), which provides a shim to support the innerHTML property on SVG elements. + +## *selection*.append(*type*) {#selection_append} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/append.js) · If the specified *type* is a string, appends a new element of this type (tag name) as the last child of each selected element, or before the next following sibling in the update selection if this is an [enter selection](#selection_enter). The latter behavior for enter selections allows you to insert elements into the DOM in an order consistent with the new bound data; however, note that [*selection*.order](#selection_order) may still be required if updating elements change order (*i.e.*, if the order of new data is inconsistent with old data). + +If the specified *type* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). This function should return an element to be appended. (The function typically creates a new element, but it may instead return an existing element.) For example, to append a paragraph to each DIV element: + +```js +d3.selectAll("div").append("p"); +``` + +This is equivalent to: + +```js +d3.selectAll("div").append(() => document.createElement("p")); +``` + +Which is equivalent to: + +```js +d3.selectAll("div").select(function() { + return this.appendChild(document.createElement("p")); +}); +``` + +In both cases, this method returns a new selection containing the appended elements. Each new element inherits the data of the current elements, if any, in the same manner as [*selection*.select](./selecting.md#selection_select). + +The specified *name* may have a namespace prefix, such as `svg:text` to specify a `text` attribute in the SVG namespace. See [namespaces](./namespaces.md#namespaces) for the map of supported namespaces; additional namespaces can be registered by adding to the map. If no namespace is specified, the namespace will be inherited from the parent element; or, if the name is one of the known prefixes, the corresponding namespace will be used (for example, `svg` implies `svg:svg`). + +## *selection*.insert(*type*, *before*) {#selection_insert} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/insert.js) · If the specified *type* is a string, inserts a new element of this type (tag name) before the first element matching the specified *before* selector for each selected element. For example, a *before* selector `:first-child` will prepend nodes before the first child. If *before* is not specified, it defaults to null. (To append elements in an order consistent with [bound data](./joining.md), use [*selection*.append](#selection_append).) + +Both *type* and *before* may instead be specified as functions which are evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). The *type* function should return an element to be inserted; the *before* function should return the child element before which the element should be inserted. For example, to append a paragraph to each DIV element: + +```js +d3.selectAll("div").insert("p"); +``` + +This is equivalent to: + +```js +d3.selectAll("div").insert(() => document.createElement("p")); +``` + +Which is equivalent to: + +```js +d3.selectAll("div").select(function() { + return this.insertBefore(document.createElement("p"), null); +}); +``` + +In both cases, this method returns a new selection containing the appended elements. Each new element inherits the data of the current elements, if any, in the same manner as [*selection*.select](./selecting.md#selection_select). + +The specified *name* may have a namespace prefix, such as `svg:text` to specify a `text` attribute in the SVG namespace. See [namespaces](./namespaces.md#namespaces) for the map of supported namespaces; additional namespaces can be registered by adding to the map. If no namespace is specified, the namespace will be inherited from the parent element; or, if the name is one of the known prefixes, the corresponding namespace will be used (for example, `svg` implies `svg:svg`). + +## *selection*.remove() {#selection_remove} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/remove.js) · Removes the selected elements from the document. Returns this selection (the removed elements) which are now detached from the DOM. There is not currently a dedicated API to add removed elements back to the document; however, you can pass a function to [*selection*.append](#selection_append) or [*selection*.insert](#selection_insert) to re-add elements. + +## *selection*.clone(*deep*) {#selection_clone} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/clone.js) · Inserts clones of the selected elements immediately following the selected elements and returns a selection of the newly added clones. If *deep* is truthy, the descendant nodes of the selected elements will be cloned as well. Otherwise, only the elements themselves will be cloned. Equivalent to: + +```js +selection.select(function() { + return this.parentNode.insertBefore(this.cloneNode(deep), this.nextSibling); +}); +``` + +## *selection*.sort(*compare*) {#selection_sort} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/sort.js) · Returns a new selection that contains a copy of each group in this selection sorted according to the *compare* function. After sorting, re-inserts elements to match the resulting order (per [*selection*.order](#selection_order)). + +The compare function, which defaults to [ascending](../d3-array/sort.md#ascending), is passed two elements’ data *a* and *b* to compare. It should return either a negative, positive, or zero value. If negative, then *a* should be before *b*; if positive, then *a* should be after *b*; otherwise, *a* and *b* are considered equal and the order is arbitrary. + +## *selection*.order() {#selection_order} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/order.js) · Re-inserts elements into the document such that the document order of each group matches the selection order. This is equivalent to calling [*selection*.sort](#selection_sort) if the data is already sorted, but much faster. + +## *selection*.raise() {#selection_raise} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/raise.js) · Re-inserts each selected element, in order, as the last child of its parent. Equivalent to: + +```js +selection.each(function() { + this.parentNode.appendChild(this); +}); +``` + +## *selection*.lower() {#selection_lower} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/lower.js) · Re-inserts each selected element, in order, as the first child of its parent. Equivalent to: + +```js +selection.each(function() { + this.parentNode.insertBefore(this, this.parentNode.firstChild); +}); +``` + +## create(*name*) {#create} + +[Source](https://github.com/d3/d3-selection/blob/main/src/create.js) · Given the specified element *name*, returns a single-element selection containing a detached element of the given name in the current document. This method assumes the HTML namespace, so you must specify a namespace explicitly when creating SVG or other non-HTML elements; see [namespace](./namespaces.md#namespace) for details on supported namespace prefixes. + +```js +d3.create("svg") // equivalent to svg:svg +``` +```js +d3.create("svg:svg") // more explicitly +``` +```js +d3.create("svg:g") // an SVG G element +``` +```js +d3.create("g") // an HTML G (unknown) element +``` + +## creator(*name*) {#creator} + +[Source](https://github.com/d3/d3-selection/blob/main/src/creator.js) · Given the specified element *name*, returns a function which creates an element of the given name, assuming that `this` is the parent element. This method is used internally by [*selection*.append](#selection_append) and [*selection*.insert](#selection_insert) to create new elements. For example, this: + +```js +selection.append("div"); +``` + +Is equivalent to: + +```js +selection.append(d3.creator("div")); +``` + +See [namespace](./namespaces.md#namespace) for details on supported namespace prefixes, such as for SVG elements. diff --git a/docs/d3-selection/namespaces.md b/docs/d3-selection/namespaces.md new file mode 100644 index 00000000000000..95a1eccf629c61 --- /dev/null +++ b/docs/d3-selection/namespaces.md @@ -0,0 +1,29 @@ +# Namespaces + +XML namespaces are fun! Right? 🤪 Fortunately you can mostly ignore them. + +## namespace(*name*) {#namespace} + +[Source](https://github.com/d3/d3-selection/blob/main/src/namespace.js) · Qualifies the specified *name*, which may or may not have a namespace prefix. + +```js +d3.namespace("svg:text") // {space: "http://www.w3.org/2000/svg", local: "text"} +``` + +If the name contains a colon (`:`), the substring before the colon is interpreted as the namespace prefix, which must be registered in [d3.namespaces](#namespaces). Returns an object `space` and `local` attributes describing the full namespace URL and the local name. If the name does not contain a colon, this function merely returns the input name. + +## namespaces + +[Source](https://github.com/d3/d3-selection/blob/main/src/namespaces.js) · The map of registered namespace prefixes. The initial value is: + +```js +{ + svg: "http://www.w3.org/2000/svg", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +} +``` + +Additional prefixes may be assigned as needed to create elements or attributes in other namespaces. diff --git a/docs/d3-selection/selecting.md b/docs/d3-selection/selecting.md new file mode 100644 index 00000000000000..b963727fe0a5ad --- /dev/null +++ b/docs/d3-selection/selecting.md @@ -0,0 +1,236 @@ +# Selecting elements + +A *selection* is a set of elements from the DOM. Typically these elements are identified by [selectors](http://www.w3.org/TR/selectors-api/) such as `.fancy` for elements with the class *fancy*, or `div` to select DIV elements. + +Selection methods come in two forms, **select** and **selectAll**: the former selects only the first matching element, while the latter selects all matching elements in document order. The top-level selection methods, [d3.select](#select) and [d3.selectAll](#selectAll), query the entire document; the subselection methods, [*selection*.select](#selection_select) and [*selection*.selectAll](#selection_selectAll), restrict selection to descendants of the selected elements. There is also [*selection*.selectChild](#selection_selectChild) and [*selection*.selectChildren](#selection_selectChildren) for direct children. + +By convention, selection methods that return the current selection such as [*selection*.attr](./modifying.md#selection_attr) use four spaces of indent, while methods that return a new selection use only two. This helps reveal changes of context by making them stick out of the chain: + +```js +d3.select("body") + .append("svg") + .attr("width", 960) + .attr("height", 500) + .append("g") + .attr("transform", "translate(20,20)") + .append("rect") + .attr("width", 920) + .attr("height", 460); +``` + +## selection() {#selection} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/index.js) · [Selects](#select) the root element, `document.documentElement`. + +```js +const root = d3.selection(); +``` + +This function can also be used to test for selections (`instanceof d3.selection`) or to extend the selection prototype. For example, to add a method to check checkboxes: + +```js +d3.selection.prototype.checked = function(value) { + return arguments.length < 1 + ? this.property("checked") + : this.property("checked", !!value); +}; +``` + +And then to use: + +```js +d3.selectAll("input[type=checkbox]").checked(true); +``` + +## select(*selector*) {#select} + +[Source](https://github.com/d3/d3-selection/blob/main/src/select.js) · Selects the first element that matches the specified *selector* string. + +```js +const svg = d3.select("#chart"); +``` + +If no elements match the *selector*, returns an empty selection. If multiple elements match the *selector*, only the first matching element (in document order) will be selected. For example, to select the first anchor element: + +```js +const anchor = d3.select("a"); +``` + +If the *selector* is not a string, instead selects the specified node; this is useful if you already have a reference to a node, such as `document.body`. + +```js +d3.select(document.body).style("background", "red"); +``` + +Or, to make a clicked paragraph red: + +```js +d3.selectAll("p").on("click", (event) => d3.select(event.currentTarget).style("color", "red")); +``` + +## selectAll(*selector*) {#selectAll} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selectAll.js) · Selects all elements that match the specified *selector* string. + +```js +const p = d3.selectAll("p"); +``` + +The elements will be selected in document order (top-to-bottom). If no elements in the document match the *selector*, or if the *selector* is null or undefined, returns an empty selection. + +If the *selector* is not a string, instead selects the specified array of nodes; this is useful if you already have a reference to nodes, such as `this.childNodes` within an event listener or a global such as `document.links`. The nodes may instead be an iterable, or a pseudo-array such as a NodeList. For example, to color all links red: + +```js +d3.selectAll(document.links).style("color", "red"); +``` + +## *selection*.select(*selector*) {#selection_select} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/select.js) · For each selected element, selects the first descendant element that matches the specified *selector* string. + +```js +const b = d3.selectAll("p").select("b"); // the first in every

+``` + +If no element matches the specified selector for the current element, the element at the current index will be null in the returned selection. (If the *selector* is null, every element in the returned selection will be null, resulting in an empty selection.) If the current element has associated data, this data is propagated to the corresponding selected element. If multiple elements match the selector, only the first matching element in document order is selected. + +If the *selector* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). It must return an element, or null if there is no matching element. For example, to select the previous sibling of each paragraph: + +```js +const previous = d3.selectAll("p").select(function() { + return this.previousElementSibling; +}); +``` + +Unlike [*selection*.selectAll](#selection_selectAll), *selection*.select does not affect grouping: it preserves the existing group structure and indexes, and propagates data (if any) to selected children. Grouping plays an important role in the [data join](#joining-data). See [Nested Selections](http://bost.ocks.org/mike/nest/) and [How Selections Work](http://bost.ocks.org/mike/selection/) for more on this topic. + +:::warning CAUTION +*selection*.select propagates the parent’s data to the selected child. +::: + +## *selection*.selectAll(selector) {#selection_selectAll} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/selectAll.js) · For each selected element, selects the descendant elements that match the specified *selector* string. + +```js +const b = d3.selectAll("p").selectAll("b"); // every in every

+``` + +The elements in the returned selection are grouped by their corresponding parent node in this selection. If no element matches the specified selector for the current element, or if the *selector* is null, the group at the current index will be empty. The selected elements do not inherit data from this selection; use [*selection*.data](./joining.md#selection_data) to propagate data to children. + +If the *selector* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). It must return an array of elements (or an iterable, or a pseudo-array such as a NodeList), or the empty array if there are no matching elements. For example, to select the previous and next siblings of each paragraph: + +```js +const sibling = d3.selectAll("p").selectAll(function() { + return [ + this.previousElementSibling, + this.nextElementSibling + ]; +}); +``` + +Unlike [*selection*.select](#selection_select), *selection*.selectAll does affect grouping: each selected descendant is grouped by the parent element in the originating selection. Grouping plays an important role in the [data join](#joining-data). See [Nested Selections](http://bost.ocks.org/mike/nest/) and [How Selections Work](http://bost.ocks.org/mike/selection/) for more on this topic. + +## *selection*.filter(*filter*) {#selection_filter} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/filter.js) · Filters the selection, returning a new selection that contains only the elements for which the specified *filter* is true. For example, to filter a selection of table rows to contain only even rows: + +```js +const even = d3.selectAll("tr").filter(":nth-child(even)"); +``` + +This is approximately equivalent to using [d3.selectAll](#selectAll) directly, although the indexes may be different: + +```js +const even = d3.selectAll("tr:nth-child(even)"); +``` + +The *filter* may be specified either as a selector string or a function. If the *filter* is a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element (*nodes*[*i*]). Using a function: + +```js +const even = d3.selectAll("tr").filter((d, i) => i & 1); +``` + +Or using [*selection*.select](#selection_select) (and avoiding an arrow function, since *this* is needed to refer to the current element): + +```js +const even = d3.selectAll("tr").select(function(d, i) { return i & 1 ? this : null; }); +``` + +Note that the `:nth-child` pseudo-class is a one-based index rather than a zero-based index. Also, the above filter functions do not have precisely the same meaning as `:nth-child`; they rely on the selection index rather than the number of preceding sibling elements in the DOM. + +The returned filtered selection preserves the parents of this selection, but like [*array*.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter), it does not preserve indexes as some elements may be removed; use [*selection*.select](#selection_select) to preserve the index, if needed. + +## *selection*.selectChild(*selector*) {#selection_selectChild} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/selectChild.js) · Returns a new selection with the (first) child of each element of the current selection matching the *selector*. + +```js +d3.selectAll("p").selectChild("b") // the first child of every

+``` + +If no *selector* is specified, selects the first child (if any). If the *selector* is specified as a string, selects the first child that matches (if any). If the *selector* is a function, it is evaluated for each of the children nodes, in order, being passed the child (*child*), the child’s index (*i*), and the list of children (*children*); the method selects the first child for which the selector return truthy, if any. + +:::warning CAUTION +*selection*.selectChild propagates the parent’s data to the selected child. +::: + +## *selection*.selectChildren(*selector*) {#selection_selectChildren} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/selectChildren.js) · Returns a new selection with the children of each element of the current selection matching the *selector*. If no *selector* is specified, selects all the children. If the *selector* is specified as a string, selects the children that match (if any). If the *selector* is a function, it is evaluated for each of the children nodes, in order, being passed the child (*child*), the child’s index (*i*), and the list of children (*children*); the method selects all children for which the selector return truthy. + +## *selection*.selection() {#selection_selection} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/index.js) · Returns the selection (for symmetry with [*transition*.selection](../d3-transition/selecting.md#transition_selection)). + +## matcher(*selector*) {#matcher} + +[Source](https://github.com/d3/d3-selection/blob/main/src/matcher.js) · Given the specified *selector*, returns a function which returns true if `this` element [matches](https://developer.mozilla.org/en-US/docs/Web/API/Element/matches) the specified selector. This method is used internally by [*selection*.filter](#selection_filter). For example, this: + +```js +const div = selection.filter("div"); +``` + +Is equivalent to: + +```js +const div = selection.filter(d3.matcher("div")); +``` + +(Although D3 is not a compatibility layer, this implementation does support vendor-prefixed implementations due to the recent standardization of *element*.matches.) + +## selector(*selector*) {#selector} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selector.js) · Given the specified *selector*, returns a function which returns the first descendant of `this` element that matches the specified selector. This method is used internally by [*selection*.select](#selection_select). For example, this: + +```js +const div = selection.select("div"); +``` + +Is equivalent to: + +```js +const div = selection.select(d3.selector("div")); +``` + +## selectorAll(*selector*) {#selectorAll} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selectAll.js) · Given the specified *selector*, returns a function which returns all descendants of `this` element that match the specified selector. This method is used internally by [*selection*.selectAll](#selection_selectAll). For example, this: + +```js +const div = selection.selectAll("div"); +``` + +Is equivalent to: + +```js +const div = selection.selectAll(d3.selectorAll("div")); +``` + +## window(*node*) {#window} + +[Source](https://github.com/d3/d3-selection/blob/main/src/window.js) · Returns the owner window for the specified *node*. If *node* is a node, returns the owner document’s default view; if *node* is a document, returns its default view; otherwise returns the *node*. + +## style(*node*, *name*) {#style} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/style.js) · Returns the value of the style property with the specified *name* for the specified *node*. If the *node* has an inline style with the specified *name*, its value is returned; otherwise, the [computed property value](https://developer.mozilla.org/en-US/docs/Web/CSS/computed_value) is returned. See also [*selection*.style](./modifying.md#selection_style). diff --git a/docs/d3-shape.md b/docs/d3-shape.md new file mode 100644 index 00000000000000..f156c6213b717e --- /dev/null +++ b/docs/d3-shape.md @@ -0,0 +1,37 @@ +# d3-shape + +Visualizations can be represented by discrete graphical marks such as [symbols](./d3-shape/symbol.md), [arcs](./d3-shape/arc.md), [lines](./d3-shape/line.md), and [areas](./d3-shape/area.md). While the rectangles of a bar chart may sometimes be simple, other shapes are complex, such as rounded annular sectors and Catmull–Rom splines. The d3-shape module provides a variety of shape generators for your convenience. + +As with other aspects of D3, these shapes are driven by data: each shape generator exposes accessors that control how the input data are mapped to a visual representation. For example, you might define a line generator for a time series by [scaling](https://github.com/d3/d3-scale) fields of your data to fit the chart: + +```js +const line = d3.line() + .x((d) => x(d.date)) + .y((d) => y(d.value)); +``` + +This line generator can then be used to compute the `d` attribute of an SVG path element: + +```js +path.datum(data).attr("d", line); +``` + +Or you can use it to render to a Canvas 2D context: + +```js +line.context(context)(data); +``` + +See one of: + +- [Arcs](./d3-shape/arc.md) - circular or annular sectors, as in a pie or donut chart. +- [Areas](./d3-shape/area.md) - an area defined by a bounding topline and baseline, as in an area chart. +- [Curves](./d3-shape/curve.md) - interpolate between points to produce a continuous shape. +- [Lines](./d3-shape/line.md) - a spline or polyline, as in a line chart. +- [Links](./d3-shape/link.md) - a smooth cubic Bézier curve from a source to a target. +- [Pies](./d3-shape/pie.md) - compute angles for a pie or donut chart. +- [Stacks](./d3-shape/stack.md) - stack adjacent shapes, as in a stacked bar chart. +- [Symbols](./d3-shape/symbol.md) - a categorical shape encoding, as in a scatterplot. +- [Radial areas](./d3-shape/radial-area.md) - like [area](./d3-shape/area.md), but in polar coordinates. +- [Radial lines](./d3-shape/radial-line.md) - like [line](./d3-shape/line.md), but in polar coordinates. +- [Radial links](./d3-shape/radial-link.md) - like [link](./d3-shape/link.md), but in polar coordinates. diff --git a/docs/d3-shape/arc.md b/docs/d3-shape/arc.md new file mode 100644 index 00000000000000..4c47ac0fe9056d --- /dev/null +++ b/docs/d3-shape/arc.md @@ -0,0 +1,302 @@ + + +# Arcs + +The arc generator produces a [circular](https://en.wikipedia.org/wiki/Circular_sector) or [annular](https://en.wikipedia.org/wiki/Annulus_(mathematics)) sector, as in a [pie](https://observablehq.com/@d3/pie-chart) or [donut](https://observablehq.com/@d3/donut-chart) chart. Arcs are centered at the origin; use a [transform](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) to move the arc to a different position. + +```js +svg.append("path") + .attr("transform", "translate(100,100)") + .attr("d", d3.arc()({ + innerRadius: 100, + outerRadius: 200, + startAngle: -Math.PI / 2, + endAngle: Math.PI / 2 + })); +``` + +If the absolute difference between the [start](#arc_startAngle) and [end](#arc_endAngle) angles (the *angular span*) is greater than 2π, the arc generator will produce a complete circle or annulus. If it is less than 2π, the arc’s angular length will be equal to the absolute difference between the two angles (going clockwise if the signed difference is positive and anticlockwise if it is negative). If the absolute difference is less than 2π, the arc may have [rounded corners](#arc_cornerRadius) and [angular padding](#arc_padAngle). + +See also the [pie generator](./pie.md), which computes the necessary angles to represent an array of data as a pie or donut chart; these angles can then be passed to an arc generator. + +## arc() {#arc} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · Constructs a new arc generator with the default settings. With default settings: + +```js +const arc = d3.arc(); +``` + +Or, with the radii and angles configured as constants: + +```js +const arc = d3.arc() + .innerRadius(0) + .outerRadius(100) + .startAngle(0) + .endAngle(Math.PI / 2); +``` + +## *arc*(...*arguments*) {#_arc} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · Generates an arc for the given *arguments*. The *arguments* are arbitrary; they are propagated to the arc generator’s accessor functions along with the `this` object. For example, with the default settings, an object with radii and angles is expected: + +```js +const arc = d3.arc(); + +arc({ + innerRadius: 0, + outerRadius: 100, + startAngle: 0, + endAngle: Math.PI / 2 +}); // "M0,-100A100,100,0,0,1,100,0L0,0Z" +``` + +If the radii and angles are instead defined as constants, you can generate an arc without any arguments: + +```js +d3.arc() + .innerRadius(0) + .outerRadius(100) + .startAngle(0) + .endAngle(Math.PI / 2) + (); // "M0,-100A100,100,0,0,1,100,0L0,0Z" +``` + +If the arc generator has a [context](#arc_context), then the arc is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. + +## *arc*.centroid(...*arguments*) {#arc_centroid} + +[Examples](https://observablehq.com/@d3/pie-settings) · [Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · Computes the midpoint [*x*, *y*] of the center line of the arc that would be [generated](#_arc) by the given *arguments*. + +The *arguments* are arbitrary; they are propagated to the arc generator’s accessor functions along with the `this` object. To be consistent with the generated arc, the accessors must be deterministic, *i.e.*, return the same value given the same arguments. The midpoint is defined as ([startAngle](#arc_startAngle) + [endAngle](#arc_endAngle)) / 2 and ([innerRadius](#arc_innerRadius) + [outerRadius](#arc_outerRadius)) / 2. For example: + +Note that this is **not the geometric center** of the arc, which may be outside the arc; this method is merely a convenience for positioning labels. + +## *arc*.innerRadius(*radius*) {#arc_innerRadius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *radius* is specified, sets the inner radius to the specified function or number and returns this arc generator. + +```js +const arc = d3.arc().innerRadius(40); +``` + +If *radius* is not specified, returns the current inner radius accessor. + +```js +arc.innerRadius() // () => 40 +``` + +The inner radius accessor defaults to: + +```js +function innerRadius(d) { + return d.innerRadius; +} +``` + +Specifying the inner radius as a function is useful for constructing a stacked polar bar chart, often in conjunction with a [sqrt scale](https://github.com/d3/d3-scale#sqrt). More commonly, a constant inner radius is used for a donut or pie chart. If the outer radius is smaller than the inner radius, the inner and outer radii are swapped. A negative value is treated as zero. + +## *arc*.outerRadius(*radius*) {#arc_outerRadius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *radius* is specified, sets the outer radius to the specified function or number and returns this arc generator. + +```js +const arc = d3.arc().outerRadius(240); +``` + +If *radius* is not specified, returns the current outer radius accessor. + +```js +arc.outerRadius() // () => 240 +``` + +The outer radius accessor defaults to: + +```js +function outerRadius(d) { + return d.outerRadius; +} +``` + +Specifying the outer radius as a function is useful for constructing a coxcomb or polar bar chart, often in conjunction with a [sqrt scale](https://github.com/d3/d3-scale#sqrt). More commonly, a constant outer radius is used for a pie or donut chart. If the outer radius is smaller than the inner radius, the inner and outer radii are swapped. A negative value is treated as zero. + +## *arc*.cornerRadius(*radius*) {#arc_cornerRadius} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/pie-settings) · [Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *radius* is specified, sets the corner radius to the specified function or number and returns this arc generator. + +```js-vue +const arc = d3.arc().cornerRadius({{cornerRadius}}); +``` + +If *radius* is not specified, returns the current corner radius accessor. + +```js-vue +arc.cornerRadius() // () => {{cornerRadius}} +``` + +The corner radius accessor defaults to: + +```js +function cornerRadius() { + return 0; +} +``` + +If the corner radius is greater than zero, the corners of the arc are rounded using circles of the given radius. For a circular sector, the two outer corners are rounded; for an annular sector, all four corners are rounded. + +The corner radius may not be larger than ([outerRadius](#arc_outerRadius) - [innerRadius](#arc_innerRadius)) / 2. In addition, for arcs whose angular span is less than π, the corner radius may be reduced as two adjacent rounded corners intersect. This is occurs more often with the inner corners. See the [arc corners animation](https://observablehq.com/@d3/arc-corners) for illustration. + +## *arc*.startAngle(*angle*) {#arc_startAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *angle* is specified, sets the start angle to the specified function or number in radius and returns this arc generator. + +```js +const arc = d3.arc().startAngle(Math.PI / 4); +``` + +If *angle* is not specified, returns the current start angle accessor. + +```js +arc.startAngle() // () => 0.7853981633974483 +``` + +The start angle accessor defaults to: + +```js +function startAngle(d) { + return d.startAngle; +} +``` + +The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. If |endAngle - startAngle| ≥ 2π, a complete circle or annulus is generated rather than a sector. + +## *arc*.endAngle(*angle*) {#arc_endAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *angle* is specified, sets the end angle to the specified function or number and returns this arc generator. + +```js +const arc = d3.arc().endAngle(Math.PI); +``` + +If *angle* is not specified, returns the current end angle accessor. + +```js +arc.endAngle() // () => 3.141592653589793 +``` + +The end angle accessor defaults to: + +```js +function endAngle(d) { + return d.endAngle; +} +``` + +The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. If |endAngle - startAngle| ≥ 2π, a complete circle or annulus is generated rather than a sector. + +## *arc*.padAngle(*angle*) {#arc_padAngle} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/pie-settings) · [Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *angle* is specified, sets the pad angle to the specified function or number and returns this arc generator. + +```js +const arc = d3.arc().padAngle(0); +``` + +If *angle* is not specified, returns the current pad angle accessor. + +```js +arc.padAngle() // () => 0 +``` + +The pad angle accessor defaults to: + +```js +function padAngle() { + return d && d.padAngle; +} +``` + +The pad angle is converted to a fixed linear distance separating adjacent arcs, defined as [padRadius](#arc_padRadius) × padAngle. This distance is subtracted equally from the [start](#arc_startAngle) and [end](#arc_endAngle) of the arc. If the arc forms a complete circle or annulus, as when |endAngle - startAngle| ≥ 2π, the pad angle is ignored. + +If the [inner radius](#arc_innerRadius) or angular span is small relative to the pad angle, it may not be possible to maintain parallel edges between adjacent arcs. In this case, the inner edge of the arc may collapse to a point, similar to a circular sector. For this reason, padding is typically only applied to annular sectors (*i.e.*, when innerRadius is positive), as shown in this diagram: + +The recommended minimum inner radius when using padding is outerRadius \* padAngle / sin(θ), where θ is the angular span of the smallest arc before padding. For example, if the outer radius is 200 pixels and the pad angle is 0.02 radians, a reasonable θ is 0.04 radians, and a reasonable inner radius is 100 pixels. See the [arc padding animation](https://observablehq.com/@d3/arc-pad-angle) for illustration. + +Often, the pad angle is not set directly on the arc generator, but is instead computed by the [pie generator](#pies) so as to ensure that the area of padded arcs is proportional to their value; see [*pie*.padAngle](#pie_padAngle). See the [pie padding animation](https://observablehq.com/@d3/arc-pad-angle) for illustration. If you apply a constant pad angle to the arc generator directly, it tends to subtract disproportionately from smaller arcs, introducing distortion. + +## *arc*.padRadius(*radius*) {#arc_padRadius} + +

+ +

+ + + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *radius* is specified, sets the pad radius to the specified function or number and returns this arc generator. If *radius* is not specified, returns the current pad radius accessor, which defaults to null, indicating that the pad radius should be automatically computed as sqrt([innerRadius](#arc_innerRadius) × innerRadius + [outerRadius](#arc_outerRadius) × outerRadius). The pad radius determines the fixed linear distance separating adjacent arcs, defined as padRadius × [padAngle](#arc_padAngle). + +## *arc*.context(*context*) {#arc_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *context* is specified, sets the context and returns this arc generator. + +```js +const context = canvas.getContext("2d"); +const arc = d3.arc().context(context); +``` + +If *context* is not specified, returns the current context, which defaults to null. + +```js +arc.context() // context +``` + +If the context is not null, then the [generated arc](#_arc) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated arc is returned. + +## *arc*.digits(*digits*) {#arc_digits} + +[Source](https://github.com/d3/d3-shape/blob/main/src/arc.js) · If *digits* is specified, sets the maximum number of digits after the decimal separator and returns this arc generator. + +```js +const arc = d3.arc().digits(3); +``` + +If *digits* is not specified, returns the current maximum fraction digits, which defaults to 3. + +```js +arc.digits() // 3 +``` + +This option only applies when the associated [*context*](#arc_context) is null, as when this arc generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). diff --git a/docs/d3-shape/area.md b/docs/d3-shape/area.md new file mode 100644 index 00000000000000..926cae23fa3448 --- /dev/null +++ b/docs/d3-shape/area.md @@ -0,0 +1,261 @@ +# Areas + + + + +[Examples](https://observablehq.com/@d3/area-chart/2?intent=fork) · The area generator produces an area defined by a *topline* and a *baseline* as in an area chart. Typically, the two lines share the same [*x*-values](#area_x) ([x0](#area_x0) = [x1](#area_x1)), differing only in *y*-value ([y0](#area_y0) and [y1](#area_y1)); most commonly, y0 is defined as a constant representing zero (the y scale’s output for zero). The *topline* is defined by x1 and y1 and is rendered first; the *baseline* is defined by x0 and y0 and is rendered second with the points in reverse order. With a [curveLinear](./curve.md#curveLinear) [curve](#area_curve), this produces a clockwise polygon. See also [radial areas](./radial-area.md). + +## area(*x*, *y0*, *y1*) {#area} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · Constructs a new area generator with the given *x*, *y0*, and *y1* accessors or numbers. + +```js +const area = d3.area((d) => x(d.Date), y(0), (d) => y(d.Close)); +``` + +If *x*, *y0* or *y1* are not specified, the respective defaults will be used. The above can be expressed more explicitly as: + +```js +const area = d3.area() + .x((d) => x(d.Date)) + .y0(y(0)) + .y1((d) => y(d.Close)); +``` + +## *area*(*data*) {#_area} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · Generates an area for the given array of *data*. + +```js +svg.append("path").attr("d", area(data)); +``` + +If the area generator has a [context](#area_context), then the area is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. + +:::warning CAUTION +Depending on this area generator’s associated [curve](#area_curve), the given input *data* may need to be sorted by *x*-value before being passed to the area generator. +::: + +## *area*.x(*x*) {#area_x} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *x* is specified, sets [x0](#area_x0) to *x* and [x1](#area_x1) to null and returns this area generator. + +```js +const area = d3.area().x((d) => x(d.Date)); +``` + +If *x* is not specified, returns the current x0 accessor. + +```js +area.x() // (d) => x(d.Date) +``` + +## *area*.x0(*x*) {#area_x0} + +:::tip +This method is intended for vertically-oriented areas, as when time goes down↓ rather than right→; for the more common horizontally-oriented areas, use [*area*.x](#area_x) instead. +::: + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *x* is specified, sets the x0 accessor to the specified function or number and returns this area generator. + +```js +const area = d3.area().x0(x(0)); +``` + +When an area is [generated](#_area), the x0 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +If *x* is not specified, returns the current x0 accessor. + +```js +area.x0() // () => 20 +``` + +The x0 accessor defaults to: + +```js +function x(d) { + return d[0]; +} +``` + +The default x0 accessor assumes that the input data are two-element arrays of numbers [[x0, y0], [x1, y1], …]. If your data are in a different format, or if you wish to transform the data before rendering, then you should specify a custom accessor as shown above. + +## *area*.x1(*x*) {#area_x1} + +:::tip +This method is intended for vertically-oriented areas, as when time goes down↓ rather than right→; for the more common horizontally-oriented areas, use [*area*.x](#area_x) instead. +::: + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *x* is specified, sets the x1 accessor to the specified function or number and returns this area generator. + +```js +const area = d3.area().x1((d) => x(d.Close)); +``` + +When an area is [generated](#_area), the x1 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +If *x* is not specified, returns the current x1 accessor. + +```js +area.x1() // (d) => x(d.Close) +``` + +The x1 accessor defaults to null, indicating that the previously-computed [x0](#area_x0) value should be reused for the x1 value; this default is intended for horizontally-oriented areas. + +## *area*.y(*y*) {#area_y} +:::tip +This method is intended for vertically-oriented areas, as when time goes down↓ rather than right→; for the more common horizontally-oriented areas, use [*area*.y0](#area_y0) and [*area*.y1](#area_y1) instead. +::: + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *y* is specified, sets [y0](#area_y0) to *y* and [y1](#area_y1) to null and returns this area generator. + +```js +const area = d3.area().y((d) => y(d.Date)); +``` + +If *y* is not specified, returns the current y0 accessor. + +```js +area.y() // (d) => y(d.Date) +``` + +## *area*.y0(*y*) {#area_y0} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *y* is specified, sets the y0 accessor to the specified function or number and returns this area generator. + +```js +const area = d3.area().y0(y(0)); +``` + +When an area is [generated](#_area), the y0 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. For a horizontally-oriented area with a constant baseline (*i.e.*, an area that is not stacked, and not a ribbon or band), y0 is typically set to the output of the y scale for zero. + +If *y* is not specified, returns the current y0 accessor. + +```js +area.y0() // () => 360 +``` + +The y0 accessor defaults to: + +```js +function y() { + return 0; +} +``` + +In the default SVG coordinate system, note that the default zero represents the top of the chart rather than the bottom, producing a flipped (or “hanging”) area. + +## *area*.y1(*y*) {#area_y1} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *y* is specified, sets the y1 accessor to the specified function or number and returns this area generator. + +```js +const area = d3.area().y1((d) => y(d.Close)); +``` + +When an area is [generated](#_area), the y1 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +If *y* is not specified, returns the current y1 accessor. + +```js +area.y1() // (d) => y(d.Close) +``` + +The y1 accessor defaults to: + +```js +function y(d) { + return d[1]; +} +``` + +The default y1 accessor assumes that the input data are two-element arrays of numbers [[x0, y0], [x1, y1], …]. If your data are in a different format, or if you wish to transform the data before rendering, then you should specify a custom accessor as shown above. A null accessor is also allowed, indicating that the previously-computed [y0](#area_y0) value should be reused for the y1 value; this can be used for a vertically-oriented area, as when time goes down↓ instead of right→. + +## *area*.defined(*defined*) {#area_defined} + +[Examples](https://observablehq.com/@d3/area-chart-missing-data/2?intent=fork) · [Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *defined* is specified, sets the defined accessor to the specified function or boolean and returns this area generator. + +```js +const area = d3.area().defined((d) => !isNaN(d.Close)); +``` + +When an area is [generated](#_area), the defined accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. If the given element is defined (*i.e.*, if the defined accessor returns a truthy value for this element), the [x0](#area_x0), [x1](#area_x1), [y0](#area_y0) and [y1](#area_y1) accessors will subsequently be evaluated and the point will be added to the current area segment. Otherwise, the element will be skipped, the current area segment will be ended, and a new area segment will be generated for the next defined point. As a result, the generated area may have several discrete segments. + +If *defined* is not specified, returns the current defined accessor. + +```js +area.defined() // (d) => !isNaN(d.Close) +``` + +The defined accessor defaults to the constant true, and assumes that the input data is always defined: + +```js +function defined() { + return true; +} +``` + +Note that if an area segment consists of only a single point, it may appear invisible unless rendered with rounded or square [line caps](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap). In addition, some curves such as [curveCardinalOpen](./curve.md#curveCardinalOpen) only render a visible segment if it contains multiple points. + +## *area*.curve(*curve*) {#area_curve} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *curve* is specified, sets the [curve factory](./curve.md) and returns this area generator. + +```js +const area = d3.area().curve(d3.curveStep); +``` + +If *curve* is not specified, returns the current curve factory, which defaults to [curveLinear](./curve.md#curveLinear). + +```js +area.curve() // d3.curveStep +``` + +## *area*.context(context) {#area_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *context* is specified, sets the context and returns this area generator. + +```js +const context = canvas.getContext("2d"); +const area = d3.area().context(context); +``` + +If *context* is not specified, returns the current context. + +```js +area.context() // context +``` + +The context defaults to null. If the context is not null, then the [generated area](#_area) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated area is returned. + +## *area*.digits(digits) {#area_digits} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · If *digits* is specified, sets the maximum number of digits after the decimal separator and returns this area generator. + +```js +const area = d3.area().digits(3); +``` + +If *digits* is not specified, returns the current maximum fraction digits, which defaults to 3. + +```js +area.digits() // 3 +``` + +This option only applies when the associated [*context*](#area_context) is null, as when this area generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). + +## *area*.lineX0() {#area_lineX0} + +An alias for [*area*.lineY0](#area_lineY0). + +## *area*.lineY0() {#area_lineY0} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · Returns a new [line generator](./line.md) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](./line.md#line_x) is this area’s [*x0*-accessor](#area_x0), and the line’s [*y*-accessor](./line.md#line_y) is this area’s [*y0*-accessor](#area_y0). + +## *area*.lineX1() {#area_lineX1} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · Returns a new [line generator](./line.md#lines) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](./line.md#line_x) is this area’s [*x1*-accessor](#area_x1), and the line’s [*y*-accessor](./line.md#line_y) is this area’s [*y0*-accessor](#area_y0). + +## *area*.lineY1() {#area_lineY1} + +[Source](https://github.com/d3/d3-shape/blob/main/src/area.js) · Returns a new [line generator](./line.md#lines) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](./line.md#line_x) is this area’s [*x0*-accessor](#area_x0), and the line’s [*y*-accessor](./line.md#line_y) is this area’s [*y1*-accessor](#area_y1). diff --git a/docs/d3-shape/curve.md b/docs/d3-shape/curve.md new file mode 100644 index 00000000000000..9af8d208e5fd9c --- /dev/null +++ b/docs/d3-shape/curve.md @@ -0,0 +1,224 @@ + + +# Curves + +Curves turn a discrete (pointwise) representation of a [line](./line.md) or [area](./area.md) into a continuous shape: curves specify how to interpolate between two-dimensional [*x*, *y*] points. + +Curves are typically not constructed or used directly. Instead, one of the built-in curves is being passed to [*line*.curve](./line.md#line_curve) or [*area*.curve](./area.md#area_curve). + +```js +const line = d3.line() + .x((d) => x(d.date)) + .y((d) => y(d.value)) + .curve(d3.curveCatmullRom.alpha(0.5)); +``` + +If desired, you can implement a [custom curve](#custom-curves). For an example of using a curve directly, see [Context to Curve](https://observablehq.com/@d3/context-to-curve). + +## *curveBasis*(*context*) {#curveBasis} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/basis.js) · Produces a cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. The first and last points are triplicated such that the spline starts at the first point and ends at the last point, and is tangent to the line between the first and second points, and to the line between the penultimate and last points. + +## *curveBasisClosed*(*context*) {#curveBasisClosed} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/basisClosed.js) · Produces a closed cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. When a line segment ends, the first three control points are repeated, producing a closed loop with C2 continuity. + +## *curveBasisOpen*(*context*) {#curveBasisOpen} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/basisOpen.js) · Produces a cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. Unlike [basis](#curveBasis), the first and last points are not repeated, and thus the curve typically does not intersect these points. + +## *curveBumpX*(*context*) {#curveBumpX} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/bump.js) · Produces a Bézier curve between each pair of points, with horizontal tangents at each point. + +## *curveBumpY*(*context*) {#curveBumpY} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/bump.js) · Produces a Bézier curve between each pair of points, with vertical tangents at each point. + +## *curveBundle*(*context*) {#curveBundle} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/bundle.js) · Produces a straightened cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points, with the spline straightened according to the curve’s [*beta*](#curveBundle_beta), which defaults to 0.85. This curve is typically used in [hierarchical edge bundling](https://observablehq.com/@d3/hierarchical-edge-bundling) to disambiguate connections, as proposed by [Danny Holten](https://www.win.tue.nl/vis1/home/dholten/) in [Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data](https://www.win.tue.nl/vis1/home/dholten/papers/bundles_infovis.pdf). This curve does not implement [*curve*.areaStart](#curve_areaStart) and [*curve*.areaEnd](#curve_areaEnd); it is intended to work with [d3.line](./line.md), not [d3.area](./area.md). + +## curveBundle.beta(*beta*) {#curveBundle_beta} + +

+ +

+ + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/bundle.js) · Returns a bundle curve with the specified *beta* in the range [0, 1], representing the bundle strength. If *beta* equals zero, a straight line between the first and last point is produced; if *beta* equals one, a standard [basis](#curveBasis) spline is produced. For example: + +```js +const line = d3.line().curve(d3.curveBundle.beta(0.5)); +``` + +## *curveCardinal*(*context*) {#curveCardinal} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/cardinal.js) · Produces a cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points, with one-sided differences used for the first and last piece. The default [tension](#curveCardinal_tension) is 0. + +## *curveCardinalClosed*(*context*) {#curveCardinalClosed} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/cardinalClosed.js) · Produces a closed cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points. When a line segment ends, the first three control points are repeated, producing a closed loop. The default [tension](#curveCardinal_tension) is 0. + +## *curveCardinalOpen*(*context*) {#curveCardinalOpen} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/cardinalOpen.js) · Produces a cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points. Unlike [curveCardinal](#curveCardinal), one-sided differences are not used for the first and last piece, and thus the curve starts at the second point and ends at the penultimate point. The default [tension](#curveCardinal_tension) is 0. + +## curveCardinal.tension(*tension*) {#curveCardinal_tension} + +

+ +

+ + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/cardinalOpen.js) · Returns a cardinal curve with the specified *tension* in the range [0, 1]. The *tension* determines the length of the tangents: a *tension* of one yields all zero tangents, equivalent to [curveLinear](#curveLinear); a *tension* of zero produces a uniform [Catmull–Rom](#curveCatmullRom) spline. For example: + +```js +const line = d3.line().curve(d3.curveCardinal.tension(0.5)); +``` + +## *curveCatmullRom*(*context*) {#curveCatmullRom} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/catmullRom.js) · Produces a cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. in [On the Parameterization of Catmull–Rom Curves](http://www.cemyuksel.com/research/catmullrom_param/), with one-sided differences used for the first and last piece. + +## *curveCatmullRomClosed*(*context*) {#curveCatmullRomClosed} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/catmullRomClosed.js) · Produces a closed cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. When a line segment ends, the first three control points are repeated, producing a closed loop. + +## *curveCatmullRomOpen*(*context*) {#curveCatmullRomOpen} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/catmullRomOpen.js) · Produces a cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. Unlike [curveCatmullRom](#curveCatmullRom), one-sided differences are not used for the first and last piece, and thus the curve starts at the second point and ends at the penultimate point. + +## curveCatmullRom.alpha(*alpha*) {#curveCatmullRom_alpha} + +

+ +

+ + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/catmullRom.js) · Returns a cubic Catmull–Rom curve with the specified *alpha* in the range [0, 1]. If *alpha* is zero, produces a uniform spline, equivalent to [curveCardinal](#curveCardinal) with a tension of zero; if *alpha* is one, produces a chordal spline; if *alpha* is 0.5, produces a [centripetal spline](https://en.wikipedia.org/wiki/Centripetal_Catmull–Rom_spline). Centripetal splines are recommended to avoid self-intersections and overshoot. For example: + +```js +const line = d3.line().curve(d3.curveCatmullRom.alpha(0.5)); +``` + +## *curveLinear*(*context*) {#curveLinear} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/linear.js) · Produces a polyline through the specified points. + +## *curveLinearClosed*(*context*) {#curveLinearClosed} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/linearClosed.js) · Produces a closed polyline through the specified points by repeating the first point when the line segment ends. + +## *curveMonotoneX*(*context*) {#curveMonotoneX} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js) · Produces a cubic spline that [preserves monotonicity](https://en.wikipedia.org/wiki/Monotone_cubic_interpolation) in *y*, assuming monotonicity in *x*, as proposed by Steffen in [A simple method for monotonic interpolation in one dimension](http://adsabs.harvard.edu/full/1990A%26A...239..443S): “a smooth curve with continuous first-order derivatives that passes through any given set of data points without spurious oscillations. Local extrema can occur only at grid points where they are given by the data, but not in between two adjacent grid points.” + +## *curveMonotoneY*(*context*) {#curveMonotoneY} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js) · Produces a cubic spline that [preserves monotonicity](https://en.wikipedia.org/wiki/Monotone_cubic_interpolation) in *x*, assuming monotonicity in *y*, as proposed by Steffen in [A simple method for monotonic interpolation in one dimension](http://adsabs.harvard.edu/full/1990A%26A...239..443S): “a smooth curve with continuous first-order derivatives that passes through any given set of data points without spurious oscillations. Local extrema can occur only at grid points where they are given by the data, but not in between two adjacent grid points.” + +## *curveNatural*(*context*) {#curveNatural} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/natural.js) · Produces a [natural](https://en.wikipedia.org/wiki/Spline_interpolation) [cubic spline](http://mathworld.wolfram.com/CubicSpline.html) with the second derivative of the spline set to zero at the endpoints. + +## *curveStep*(*context*) {#curveStep} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/step.js) · Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes at the midpoint of each pair of adjacent *x*-values. + +## *curveStepAfter*(*context*) {#curveStepAfter} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/step.js) · Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes after the *x*-value. + +## *curveStepBefore*(*context*) {#curveStepBefore} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/curve/step.js) · Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes before the *x*-value. + +## Custom curves + +Curves are typically not used directly, instead being passed to [*line*.curve](./line.md#line_curve) and [*area*.curve](./area.md#area_curve). However, you can define your own curve implementation should none of the built-in curves satisfy your needs using the following interface; see the [curveLinear source](https://github.com/d3/d3-shape/blob/main/src/curve/linear.js) for an example implementation. You can also use this low-level interface with a built-in curve type as an alternative to the line and area generators. + +### *curve*.areaStart() {#curve_areaStart} + +Indicates the start of a new area segment. Each area segment consists of exactly two [line segments](#curve_lineStart): the topline, followed by the baseline, with the baseline points in reverse order. + +### *curve*.areaEnd() {#curve_areaEnd} + +Indicates the end of the current area segment. + +### *curve*.lineStart() {#curve_lineStart} + +Indicates the start of a new line segment. Zero or more [points](#curve_point) will follow. + +### *curve*.lineEnd() {#curve_lineEnd} + +Indicates the end of the current line segment. + +### *curve*.point(*x*, *y*) {#curve_point} + +Indicates a new point in the current line segment with the given *x*- and *y*-values. diff --git a/docs/d3-shape/line.md b/docs/d3-shape/line.md new file mode 100644 index 00000000000000..26bd9d9e5aa7fc --- /dev/null +++ b/docs/d3-shape/line.md @@ -0,0 +1,160 @@ +# Lines + + + +[Examples](https://observablehq.com/@d3/line-chart/2?intent=fork) · The line generator produces a [spline](https://en.wikipedia.org/wiki/Spline_(mathematics)) or [polyline](https://en.wikipedia.org/wiki/Polygonal_chain) as in a line chart. Lines also appear in many other visualization types, such as the links in [hierarchical edge bundling](https://observablehq.com/@d3/hierarchical-edge-bundling). See also [radial lines](./radial-line.md). + +## line(*x*, *y*) {#line} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · Constructs a new line generator with the given *x* and *y* accessor. + +```js +const line = d3.line((d) => x(d.Date), (d) => y(d.Close)); +``` + +If *x* or *y* are not specified, the respective defaults will be used. The above can be expressed more explicitly as: + +```js +const line = d3.line() + .x((d) => x(d.Date)) + .y((d) => y(d.Close)); +``` + +## *line*(*data*) {#_line} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · Generates a line for the given array of *data*. + +```js +svg.append("path").attr("d", line(data)).attr("stroke", "currentColor"); +``` + +If the line generator has a [context](#line_context), then the line is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. + +:::warning CAUTION +Depending on this line generator’s associated [curve](#line_curve), the given input *data* may need to be sorted by *x*-value before being passed to the line generator. +::: + +## *line*.x(*x*) {#line_x} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *x* is specified, sets the x accessor to the specified function or number and returns this line generator. + +```js +const line = d3.line().x((d) => x(d.Date)); +``` + +If *x* is not specified, returns the current x accessor. + +```js +line.x() // (d) => x(d.Date) +``` + +The x accessor defaults to: + +```js +function x(d) { + return d[0]; +} +``` + +When a line is [generated](#_line), the x accessor will be invoked for each [defined](#line_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +The default x accessor assumes that the input data are two-element arrays of numbers. If your data are in a different format, or if you wish to transform the data before rendering, then you should specify a custom accessor. + +## *line*.y(y) {#line_y} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *y* is specified, sets the y accessor to the specified function or number and returns this line generator. + +```js +const line = d3.line().y((d) => y(d.Close)); +``` + +When a line is [generated](#_line), the y accessor will be invoked for each [defined](#line_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +If *y* is not specified, returns the current y accessor. + +```js +line.y() // (d) => y(d.Close) +``` + +The y accessor defaults to: + +```js +function y(d) { + return d[1]; +} +``` + +The default y accessor assumes that the input data are two-element arrays of numbers. See [*line*.x](#line_x) for more information. + +## *line*.defined(*defined*) {#line_defined} + +[Examples](https://observablehq.com/@d3/line-chart-missing-data/2?intent=fork) · [Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *defined* is specified, sets the defined accessor to the specified function or boolean and returns this line generator. + +```js +const line = d3.line().defined((d) => !isNaN(d.Close)); +``` + +When a line is [generated](#_line), the defined accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. If the given element is defined (*i.e.*, if the defined accessor returns a truthy value for this element), the [x](#line_x) and [y](#line_y) accessors will subsequently be evaluated and the point will be added to the current line segment. Otherwise, the element will be skipped, the current line segment will be ended, and a new line segment will be generated for the next defined point. + +If *defined* is not specified, returns the current defined accessor. + +```js +line.defined() // (d) => !isNaN(d.Close) +``` + +The defined accessor defaults to the constant true, and assumes that the input data is always defined: + +```js +function defined() { + return true; +} +``` + +Note that if a line segment consists of only a single point, it may appear invisible unless rendered with rounded or square [line caps](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap). In addition, some curves such as [curveCardinalOpen](./curve.md#curveCardinalOpen) only render a visible segment if it contains multiple points. + +## *line*.curve(*curve*) {#line_curve} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *curve* is specified, sets the [curve factory](#curves) and returns this line generator. + +```js +const line = d3.line().curve(d3.curveStep); +``` + +If *curve* is not specified, returns the current curve factory, which defaults to [curveLinear](#curveLinear). + +```js +line.curve() // d3.curveStep +``` + +## *line*.context(context) {#line_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *context* is specified, sets the context and returns this line generator. + +```js +const context = canvas.getContext("2d"); +const line = d3.line().context(context); +``` + +If *context* is not specified, returns the current context. + +```js +line.context() // context +``` + +The context defaults to null. If the context is not null, then the [generated line](#_line) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated line is returned. + +## *line*.digits(*digits*) {#line_digits} + +[Source](https://github.com/d3/d3-shape/blob/main/src/line.js) · If *digits* is specified, sets the maximum number of digits after the decimal separator and returns this line generator. + +```js +const line = d3.line().digits(3); +``` + +If *digits* is not specified, returns the current maximum fraction digits, which defaults to 3. + +```js +line.digits() // 3 +``` + +This option only applies when the associated [*context*](#line_context) is null, as when this line generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). diff --git a/docs/d3-shape/link.md b/docs/d3-shape/link.md new file mode 100644 index 00000000000000..011686416906cc --- /dev/null +++ b/docs/d3-shape/link.md @@ -0,0 +1,158 @@ +# Links + +[Examples](https://observablehq.com/@d3/tidy-tree) · The link shape generates a smooth cubic Bézier curve from a source point to a target point. The tangents of the curve at the start and end are either [vertical](#linkVertical) or [horizontal](#linkHorizontal). See also [radial links](./radial-link.md). + +## link(*curve*) {#link} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Returns a new [link generator](#_link) using the specified curve. For example, to visualize [links](../d3-hierarchy/hierarchy.md#node_links) in a [tree diagram](../d3-hierarchy/tree.md) rooted on the top edge of the display, you might say: + +```js +const link = d3.link(d3.curveBumpY) + .x((d) => d.x) + .y((d) => d.y); +``` + +## linkVertical() {#linkVertical} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Shorthand for [link](#link) with [curveBumpY](./curve.md#curveBumpY); suitable for visualizing [links](../d3-hierarchy/hierarchy.md#node_links) in a [tree diagram](../d3-hierarchy/tree.md) rooted on the top edge of the display. Equivalent to: + +```js +const link = d3.link(d3.curveBumpY); +``` + +## linkHorizontal() {#linkHorizontal} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Shorthand for [link](#link) with [curveBumpX](./curve.md#curveBumpX); suitable for visualizing [links](../d3-hierarchy/hierarchy.md#node_links) in a [tree diagram](../d3-hierarchy/tree.md) rooted on the left edge of the display. Equivalent to: + +```js +const link = d3.link(d3.curveBumpX); +``` + +## *link*(...*arguments*) {#_link} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Generates a link for the given *arguments*. The *arguments* are arbitrary; they are propagated to the link generator’s accessor functions along with the `this` object. With the default settings, an object with *source* and *target* properties is expected. + +```js +link({source: [100, 100], target: [300, 300]}) // "M100,100C200,100,200,300,300,300" +``` + +## *link*.source(*source*) {#link_source} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *source* is specified, sets the source accessor to the specified function and returns this link generator. + +```js +const link = d3.linkHorizontal().source((d) => d[0]); +``` + +If *source* is not specified, returns the current source accessor. + +```js +link.source() // (d) => d[0] +``` + +The source accessor defaults to: + +```js +function source(d) { + return d.source; +} +``` + +## *link*.target(*target*) {#link_target} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *target* is specified, sets the target accessor to the specified function and returns this link generator. + +```js +const link = d3.linkHorizontal().target((d) => d[1]); +``` + +If *target* is not specified, returns the current target accessor. + +```js +link.target() // (d) => d[1] +``` + +The target accessor defaults to: + +```js +function target(d) { + return d.target; +} +``` + +## *link*.x(*x*) {#link_x} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *x* is specified, sets the *x*-accessor to the specified function or number and returns this link generator. + +```js +const link = d3.linkHorizontal().x((d) => x(d.x)); +``` + +If *x* is not specified, returns the current x accessor. + +```js +link.x() // (d) => x(d.x) +``` + +The x accessor defaults to: + +```js +function x(d) { + return d[0]; +} +``` + +## *link*.y(*y*) {#link_y} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *y* is specified, sets the *y*-accessor to the specified function or number and returns this link generator. + +```js +const link = d3.linkHorizontal().y((d) => y(d.y)); +``` + +If *y* is not specified, returns the current y accessor. + +```js +link.y() // (d) => y(d.y) +``` + +The y accessor defaults to: + +```js +function y(d) { + return d[1]; +} +``` + +## *link*.context(*context*) {#link_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *context* is specified, sets the context and returns this link generator. + +```js +const context = canvas.getContext("2d"); +const link = d3.link().context(context); +``` + +If *context* is not specified, returns the current context. + +```js +link.context() // context +``` + +The context defaults to null. If the context is not null, then the [generated link](#_link) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated link is returned. See also [d3-path](../d3-path.md). + +## *link*.digits(*digits*) {#link_digits} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · If *digits* is specified, sets the maximum number of digits after the decimal separator and returns this link generator. + +```js +const link = d3.link().digits(3); +``` + +If *digits* is not specified, returns the current maximum fraction digits, which defaults to 3. + +```js +link.digits() // 3 +``` + +This option only applies when the associated [*context*](#link_context) is null, as when this link generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). diff --git a/docs/d3-shape/pie.md b/docs/d3-shape/pie.md new file mode 100644 index 00000000000000..ee0e6ee87bbc69 --- /dev/null +++ b/docs/d3-shape/pie.md @@ -0,0 +1,240 @@ + + +# Pies + +[Examples](https://observablehq.com/@d3/donut-chart/2?intent=fork) · The pie generator computes the necessary angles to represent a tabular dataset as a pie or donut chart; these angles can then be passed to an [arc generator](./arc.md). (The pie generator does not produce a shape directly.) + +## pie() {#pie} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · Constructs a new pie generator with the default settings. + +```js +const pie = d3.pie(); +``` + +## *pie*(*data*, ...*arguments*) {#_pie} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · Generates a pie for the given array of *data*, returning an array of objects representing each datum’s arc angles. For example, given a set of numbers, here is how to compute the angles for a pie chart: + +```js +const data = [1, 1, 2, 3, 5, 8, 13, 21]; +const pie = d3.pie(); +const arcs = pie(data); +``` + +The resulting `arcs` is an array of objects: + +```json +[ + {"data": 1, "value": 1, "index": 6, "startAngle": 6.050474740247008, "endAngle": 6.166830023713296, "padAngle": 0}, + {"data": 1, "value": 1, "index": 7, "startAngle": 6.166830023713296, "endAngle": 6.283185307179584, "padAngle": 0}, + {"data": 2, "value": 2, "index": 5, "startAngle": 5.817764173314431, "endAngle": 6.050474740247008, "padAngle": 0}, + {"data": 3, "value": 3, "index": 4, "startAngle": 5.468698322915565, "endAngle": 5.817764173314431, "padAngle": 0}, + {"data": 5, "value": 5, "index": 3, "startAngle": 4.886921905584122, "endAngle": 5.468698322915565, "padAngle": 0}, + {"data": 8, "value": 8, "index": 2, "startAngle": 3.956079637853813, "endAngle": 4.886921905584122, "padAngle": 0}, + {"data": 13, "value": 13, "index": 1, "startAngle": 2.443460952792061, "endAngle": 3.956079637853813, "padAngle": 0}, + {"data": 21, "value": 21, "index": 0, "startAngle": 0.000000000000000, "endAngle": 2.443460952792061, "padAngle": 0} +] +``` + +Each object in the returned array has the following properties: + +* `data` - the input datum; the corresponding element in the input data array. +* `value` - the numeric [value](#pie_value) of the arc. +* `index` - the zero-based [sorted index](#pie_sort) of the arc. +* `startAngle` - the [start angle](#pie_startAngle) of the arc. +* `endAngle` - the [end angle](#pie_endAngle) of the arc. +* `padAngle` - the [pad angle](#pie_padAngle) of the arc. + +This representation is designed to work with the arc generator’s default [startAngle](#arc_startAngle), [endAngle](#arc_endAngle) and [padAngle](#arc_padAngle) accessors. Angles are in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. + +The length of the returned array is the same as *data*, and each element *i* in the returned array corresponds to the element *i* in the input data. The returned array of arcs is in the same order as the data, even when the pie chart is [sorted](#pie_sortValues). + +Any additional *arguments* are arbitrary; they are propagated to the pie generator’s accessor functions along with the `this` object. + +## *pie*.value(*value*) {#pie_value} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *value* is specified, sets the value accessor to the specified function or number and returns this pie generator. + +```js +const pie = d3.pie().value((d) => d.value); +``` + +When a pie is [generated](#_pie), the value accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. + +If *value* is not specified, returns the current value accessor. + +```js +pie.value() // (d) => d.value +``` + +The value accessor defaults to: + +```js +function value(d) { + return d; +} +``` + +The default value accessor assumes that the input data are numbers, or that they are coercible to numbers using [valueOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf). If your data are not numbers, then you should specify an accessor that returns the corresponding numeric value for a given datum. For example, given a CSV file with *number* and *name* fields: + +``` +number,name +4,Locke +8,Reyes +15,Ford +16,Jarrah +23,Shephard +42,Kwon +``` + +You might say: + +```js +const data = await d3.csv("lost.csv", d3.autoType); +const pie = d3.pie().value((d) => d.number); +const arcs = pie(data); +``` + +This is similar to [mapping](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) your data to values before invoking the pie generator: + +```js +const arcs = d3.pie()(data.map((d) => d.number)); +``` + +The benefit of an accessor is that the input data remains associated with the returned objects, thereby making it easier to access other fields of the data, for example to set the color or to add text labels. + +## *pie*.sort(*compare*) {#pie_sort} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *compare* is specified, sets the data comparator to the specified function and returns this pie generator. + +```js +const pie = d3.pie().sort((a, b) => d3.ascending(a.name, b.name)); +``` + +The data comparator takes two arguments *a* and *b*, each elements from the input data array. If the arc for *a* should be before the arc for *b*, then the comparator must return a number less than zero; if the arc for *a* should be after the arc for *b*, then the comparator must return a number greater than zero; returning zero means that the relative order of *a* and *b* is unspecified. + +If *compare* is not specified, returns the current data comparator. + +```js +pie.sort() // (a, b) => d3.ascending(a.name, b.name)) +``` + +The data comparator defaults to null. If both the data comparator and the [value comparator](#pie_sortValue) are null, then arcs are positioned in the original input order. Setting the data comparator implicitly sets the value comparator to null. + +Sorting does not affect the order of the [generated arc array](#_pie) which is always in the same order as the input data array; it only affects the computed angles of each arc. The first arc starts at the [start angle](#pie_startAngle) and the last arc ends at the [end angle](#pie_endAngle). + +## *pie*.sortValues(*compare*) {#pie_sortValues} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *compare* is specified, sets the value comparator to the specified function and returns this pie generator. + +```js +const pie = d3.pie().sortValue(d3.ascending); +``` + +The value comparator is similar to the [data comparator](#pie_sort), except the two arguments *a* and *b* are values derived from the input data array using the [value accessor](#pie_value) rather than the data elements. If the arc for *a* should be before the arc for *b*, then the comparator must return a number less than zero; if the arc for *a* should be after the arc for *b*, then the comparator must return a number greater than zero; returning zero means that the relative order of *a* and *b* is unspecified. + +If *compare* is not specified, returns the current value comparator. + +```js +pie.sortValue() // d3.ascending +``` + +The value comparator defaults to [descending](../d3-array/sort.md#descending). If both the [data comparator](#pie_sort) and the value comparator are null, then arcs are positioned in the original input order. Setting the value comparator implicitly sets the [data comparator](#pie_sort) to null. + +Sorting does not affect the order of the [generated arc array](#_pie) which is always in the same order as the input data array; it merely affects the computed angles of each arc. The first arc starts at the [start angle](#pie_startAngle) and the last arc ends at the [end angle](#pie_endAngle). + +## *pie*.startAngle(*angle*) {#pie_startAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *angle* is specified, sets the overall start angle of the pie to the specified function or number and returns this pie generator. + +```js +const pie = d3.pie().startAngle(0); +``` + +The start angle is the *overall* start angle of the pie, *i.e.*, the start angle of the first arc. It is typically expressed as a constant number but can also be expressed as a function of data. When a function, the start angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). + +If *angle* is not specified, returns the current start angle accessor. + +```js +pie.startAngle() // () => 0 +``` + +The start angle accessor defaults to: + +```js +function startAngle() { + return 0; +} +``` + +Angles are in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. + +## *pie*.endAngle(*angle*) {#pie_endAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *angle* is specified, sets the overall end angle of the pie to the specified function or number and returns this pie generator. + +```js +const pie = d3.pie().endAngle(Math.PI); +``` + +The end angle here means the *overall* end angle of the pie, *i.e.*, the end angle of the last arc. It is typically expressed as a constant number but can also be expressed as a function of data. When a function, the end angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). + +If *angle* is not specified, returns the current end angle accessor. + +```js +pie.endAngle() // () => Math.PI +``` + +The end angle accessor defaults to: + +```js +function endAngle() { + return 2 * Math.PI; +} +``` + +Angles are in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. The value of the end angle is constrained to [startAngle](#pie_startAngle) ± τ, such that |endAngle - startAngle| ≤ τ. + +## *pie*.padAngle(*angle*) {#pie_padAngle} + +

+ +

+ + + +[Examples](https://observablehq.com/@d3/arc-pad-angle) · [Source](https://github.com/d3/d3-shape/blob/main/src/pie.js) · If *angle* is specified, sets the pad angle to the specified function or number and returns this pie generator. + +```js-vue +const pie = d3.pie().padAngle({{padAngle}}); +``` + +The pad angle specifies the angular separation in radians between adjacent arcs. The total amount of padding is the specified *angle* times the number of elements in the input data array, and at most |[endAngle](#pie_endAngle) - [startAngle](#pie_startAngle)|; the remaining space is divided proportionally by [value](#pie_value) such that the relative area of each arc is preserved. + +The pad angle is typically expressed as a constant number but can also be expressed as a function of data. When a function, the pad angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). + +If *angle* is not specified, returns the current pad angle accessor. + +```js-vue +pie.padAngle() // () => {{padAngle}} +``` + +The pad angle accessor defaults to: + +```js +function padAngle() { + return 0; +} +``` diff --git a/docs/d3-shape/radial-area.md b/docs/d3-shape/radial-area.md new file mode 100644 index 00000000000000..f6a992a20e0907 --- /dev/null +++ b/docs/d3-shape/radial-area.md @@ -0,0 +1,100 @@ +# Radial areas + +[Examples](https://observablehq.com/@d3/radial-area-chart) · A radial area generator is like the Cartesian [area generator](./area.md) except the [x](./area.md#area_x) and [y](./area.md#area_y) accessors are replaced with [angle](#areaRadial_angle) and [radius](#areaRadial_radius) accessors. Radial areas are positioned relative to the origin; use a [transform](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) to change the origin. + +## areaRadial() {#areaRadial} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Constructs a new radial area generator with the default settings. + +```js +const area = d3.areaRadial(); +``` + +## *areaRadial*(*data*) {#_areaRadial} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*](./area.md#_area). + +```js +svg.append("path").attr("d", area(data)); +``` + +## *areaRadial*.angle(*angle*) {#areaRadial_angle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.x](./area.md#area_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). + +```js +const area = d3.areaRadial().angle((d) => a(d.Date)); +``` + +## *areaRadial*.startAngle(*angle*) {#areaRadial_startAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.x0](./area.md#area_x0), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). Note: typically [angle](#areaRadial_angle) is used instead of setting separate start and end angles. + +## *areaRadial*.endAngle(*angle*) {#areaRadial_endAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.x1](./area.md#area_x1), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). Note: typically [angle](#areaRadial_angle) is used instead of setting separate start and end angles. + +## *areaRadial*.radius(*radius*) {#areaRadial_radius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.y](./area.md#area_y), except the accessor returns the radius: the distance from the origin. + +```js +const area = d3.areaRadial().radius((d) => r(d.temperature)); +``` + +## *areaRadial*.innerRadius(*radius*) {#areaRadial_innerRadius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.y0](./area.md#area_y0), except the accessor returns the radius: the distance from the origin. + +```js +const area = d3.areaRadial().radius((d) => r(d.low)); +``` + +## *areaRadial*.outerRadius(*radius*) {#areaRadial_outerRadius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.y1](./area.md#area_y1), except the accessor returns the radius: the distance from the origin. + +```js +const area = d3.areaRadial().radius((d) => r(d.high)); +``` + +## *areaRadial*.defined(*defined*) {#areaRadial_defined} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.defined](./area.md#area_defined). + +```js +const area = d3.areaRadial().defined((d) => !isNaN(d.temperature)); +``` + +## *areaRadial*.curve(*curve*) {#areaRadial_curve} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.curve](./area.md#area_curve). Note that [curveMonotoneX](./curve.md#curveMonotoneX) or [curveMonotoneY](./curve.md#curveMonotoneY) are not recommended for radial areas because they assume that the data is monotonic in *x* or *y*, which is typically untrue of radial areas. + +```js +const area = d3.areaRadial().curve(d3.curveBasisClosed); +``` + +## *areaRadial*.context(*context*) {#areaRadial_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Equivalent to [*area*.context](./area.md#area_context). + +```js +const context = canvas.getContext("2d"); +const area = d3.areaRadial().context(context); +``` + +## *areaRadial*.lineInnerRadius() {#areaRadial_lineInnerRadius} + +An alias for [*areaRadial*.lineStartAngle](#areaRadial_lineStartAngle). + +## *areaRadial*.lineStartAngle() {#areaRadial_lineStartAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Returns a new [radial line generator](./radial-line.md) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](./radial-line.md#lineRadial_angle) is this area’s [start angle accessor](#areaRadial_startAngle), and the line’s [radius accessor](./radial-line.md#lineRadial_radius) is this area’s [inner radius accessor](#areaRadial_innerRadius). + +## *areaRadial*.lineEndAngle() {#areaRadial_lineEndAngle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Returns a new [radial line generator](./radial-line.md#lineRadial) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](./radial-line.md#lineRadial_angle) is this area’s [end angle accessor](#areaRadial_endAngle), and the line’s [radius accessor](./radial-line.md#lineRadial_radius) is this area’s [inner radius accessor](#areaRadial_innerRadius). + +## *areaRadial*.lineOuterRadius() {#areaRadial_lineOuterRadius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/areaRadial.js) · Returns a new [radial line generator](./radial-line.md#lineRadial) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](./radial-line.md#lineRadial_angle) is this area’s [start angle accessor](#areaRadial_startAngle), and the line’s [radius accessor](./radial-line.md#lineRadial_radius) is this area’s [outer radius accessor](#areaRadial_outerRadius). diff --git a/docs/d3-shape/radial-line.md b/docs/d3-shape/radial-line.md new file mode 100644 index 00000000000000..9e0450211c6e47 --- /dev/null +++ b/docs/d3-shape/radial-line.md @@ -0,0 +1,60 @@ +# Radial lines + +[Examples](https://observablehq.com/@d3/d3-lineradial) · A radial line generator is like the Cartesian [line generator](./line.md) except the [x](./line.md#line_x) and [y](./line.md#line_y) accessors are replaced with [angle](#lineRadial_angle) and [radius](#lineRadial_radius) accessors. Radial lines are positioned relative to the origin; use a [transform](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) to change the origin. + +## lineRadial() {#lineRadial} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Constructs a new radial line generator with the default settings. + +```js +const line = d3.lineRadial(); +``` + +## *lineRadial*(*data*) {#_lineRadial} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*](./line.md#_line). + +```js +svg.append("path").attr("d", line(data)).attr("stroke", "currentColor"); +``` + +## *lineRadial*.angle(*angle*) {#lineRadial_angle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*.x](./line.md#line_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). + +```js +const line = d3.lineRadial().angle((d) => a(d.Date)); +``` + +## *lineRadial*.radius(*radius*) {#lineRadial_radius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*.y](./line.md#line_y), except the accessor returns the radius: the distance from the origin. + +```js +const line = d3.lineRadial().radius((d) => r(d.temperature)); +``` + +## *lineRadial*.defined(*defined*) {#lineRadial_defined} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*.defined](./line.md#line_defined). + +```js +const line = d3.lineRadial().defined((d) => !isNaN(d.temperature)); +``` + +## *lineRadial*.curve(*curve*) {#lineRadial_curve} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*.curve](./line.md#line_curve). Note that [curveMonotoneX](#curveMonotoneX) or [curveMonotoneY](#curveMonotoneY) are not recommended for radial lines because they assume that the data is monotonic in *x* or *y*, which is typically untrue of radial lines. + +```js +const line = d3.lineRadial().curve(d3.curveBasis); +``` + +## *lineRadial*.context(*context*) {#lineRadial_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/lineRadial.js) · Equivalent to [*line*.context](./line.md#line_context). + +```js +const context = canvas.getContext("2d"); +const line = d3.lineRadial().context(context); +``` diff --git a/docs/d3-shape/radial-link.md b/docs/d3-shape/radial-link.md new file mode 100644 index 00000000000000..1c36ee35752a0b --- /dev/null +++ b/docs/d3-shape/radial-link.md @@ -0,0 +1,21 @@ +# Radial links + +A radial link generator is like the Cartesian [link generator](./link.md) except the [x](./link.md#link_x) and [y](./link.md#link_y) accessors are replaced with [angle](#linkRadial_angle) and [radius](#linkRadial_radius) accessors. Radial links are positioned relative to the origin; use a [transform](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) to change the origin. + +## linkRadial() {#linkRadial} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Returns a new [link generator](./link.md#_link) with radial tangents. For example, to visualize [links](../d3-hierarchy/hierarchy.md#node_links) in a [tree diagram](../d3-hierarchy/tree.md) rooted in the center of the display, you might say: + +```js +const link = d3.linkRadial() + .angle((d) => d.x) + .radius((d) => d.y); +``` + +## *linkRadial*.angle(*angle*) {#linkRadial_angle} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Equivalent to [*link*.x](./link.md#link_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). + +## *linkRadial*.radius(*radius*) {#linkRadial_radius} + +[Source](https://github.com/d3/d3-shape/blob/main/src/link.js) · Equivalent to [*link*.y](./link.md#link_y), except the accessor returns the radius: the distance from the origin. diff --git a/docs/d3-shape/stack.md b/docs/d3-shape/stack.md new file mode 100644 index 00000000000000..74341bd461eb9b --- /dev/null +++ b/docs/d3-shape/stack.md @@ -0,0 +1,437 @@ + + +# Stacks + + + +[Examples](https://observablehq.com/@d3/stacked-bar-chart/2?intent=fork) · Stacking converts lengths into contiguous position intervals. For example, a bar chart of monthly sales might be broken down into a multi-series bar chart by category, stacking bars vertically and applying a categorical color encoding. Stacked charts can show overall value and per-category value simultaneously; however, it is typically harder to compare across categories as only the bottom layer of the stack is aligned. So, chose the [stack order](#stack_order) carefully, and consider a [streamgraph](#stackOffsetWiggle). (See also [grouped charts](https://observablehq.com/@d3/grouped-bar-chart).) + +Like the [pie generator](./pie.md), the stack generator does not produce a shape directly. Instead it computes positions which you can then pass to an [area generator](./area.md) or use directly, say to position bars. + +## stack() {#stack} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · Constructs a new stack generator with the default settings. See [*stack*](#_stack) for usage. + +## *stack*(*data*, ...*arguments*) {#_stack} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · Generates a stack for the given array of *data* and returns an array representing each series. Any additional *arguments* are arbitrary; they are propagated to accessors along with the `this` object. + +For example, consider this tidy table of monthly fruit sales: + +date | fruit | sales +--------|----------|--------: + 1/2015 | apples | 3840 + 1/2015 | bananas | 1920 + 1/2015 | cherries | 960 + 1/2015 | durians | 400 + 2/2015 | apples | 1600 + 2/2015 | bananas | 1440 + 2/2015 | cherries | 960 + 2/2015 | durians | 400 + 3/2015 | apples | 640 + 3/2015 | bananas | 960 + 3/2015 | cherries | 640 + 3/2015 | durians | 400 + 4/2015 | apples | 320 + 4/2015 | bananas | 480 + 4/2015 | cherries | 640 + 4/2015 | durians | 400 + +This could be represented in JavaScript as an array of objects, perhaps parsed from [CSV](../d3-dsv.md): + +```js +const data = [ + {date: new Date("2015-01-01"), fruit: "apples", sales: 3840}, + {date: new Date("2015-01-01"), fruit: "bananas", sales: 1920}, + {date: new Date("2015-01-01"), fruit: "cherries", sales: 960}, + {date: new Date("2015-01-01"), fruit: "durians", sales: 400}, + {date: new Date("2015-02-01"), fruit: "apples", sales: 1600}, + {date: new Date("2015-02-01"), fruit: "bananas", sales: 1440}, + {date: new Date("2015-02-01"), fruit: "cherries", sales: 960}, + {date: new Date("2015-02-01"), fruit: "durians", sales: 400}, + {date: new Date("2015-03-01"), fruit: "apples", sales: 640}, + {date: new Date("2015-03-01"), fruit: "bananas", sales: 960}, + {date: new Date("2015-03-01"), fruit: "cherries", sales: 640}, + {date: new Date("2015-03-01"), fruit: "durians", sales: 400}, + {date: new Date("2015-04-01"), fruit: "apples", sales: 320}, + {date: new Date("2015-04-01"), fruit: "bananas", sales: 480}, + {date: new Date("2015-04-01"), fruit: "cherries", sales: 640}, + {date: new Date("2015-04-01"), fruit: "durians", sales: 400} +]; +``` + +To compute the stacked series (a series, or layer, for each *fruit*; and a stack, or column, for each *date*), we can [index](../d3-array/group.md#index) the data by *date* and then *fruit*, compute the distinct *fruit* names across the data set, and lastly get the *sales* value for each *date* and *fruit*. + +```js +const series = d3.stack() + .keys(d3.union(data.map(d => d.fruit))) // apples, bananas, cherries, … + .value(([, group], key) => group.get(key).sales) + (d3.index(data, d => d.date, d => d.fruit)); +``` + +:::tip +See [union](../d3-array/sets.md#union) and [index](../d3-array/group.md#index) from d3-array. +::: + +The resulting array has one element per *series*. Each series has one point per month, and each point has a lower and upper value defining the baseline and topline: + +```js +[ + [[ 0, 3840], [ 0, 1600], [ 0, 640], [ 0, 320]], // apples + [[3840, 5760], [1600, 3040], [ 640, 1600], [ 320, 800]], // bananas + [[5760, 6720], [3040, 4000], [1600, 2240], [ 800, 1440]], // cherries + [[6720, 7120], [4000, 4400], [2240, 2640], [1440, 1840]] // durians +] +``` + +Each series in then typically passed to an [area generator](./area.md) to render an area chart, or used to construct rectangles for a bar chart. + +```js +svg.append("g") + .selectAll("g") + .data(series) + .join("g") + .attr("fill", d => color(d.key)) + .selectAll("rect") + .data(D => D) + .join("rect") + .attr("x", d => x(d.data[0])) + .attr("y", d => y(d[1])) + .attr("height", d => y(d[0]) - y(d[1])) + .attr("width", x.bandwidth()); +``` + +The series are determined by the [keys accessor](#stack_keys); each series *i* in the returned array corresponds to the *i*th key. Each series is an array of points, where each point *j* corresponds to the *j*th element in the input *data*. Lastly, each point is represented as an array [*y0*, *y1*] where *y0* is the lower value (baseline) and *y1* is the upper value (topline); the difference between *y0* and *y1* corresponds to the computed [value](#stack_value) for this point. The key for each series is available as *series*.key, and the [index](#stack_order) as *series*.index. The input data element for each point is available as *point*.data. + +## *stack*.keys(*keys*) {#stack_keys} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · If *keys* is specified, sets the keys accessor to the specified function or array and returns this stack generator. + +```js +const stack = d3.stack().keys(["apples", "bananas", "cherries", "durians"]); +``` + +If *keys* is not specified, returns the current keys accessor. + +```js +stack.keys() // () => ["apples", "bananas", "cherries", "durians"] +``` + +The keys accessor defaults to the empty array. A series (layer) is [generated](#_stack) for each key. Keys are typically strings, but they may be arbitrary values; see [InternMap](../d3-array/intern.md). The series’ key is passed to the [value accessor](#stack_value), along with each data point, to compute the point’s value. + +## *stack*.value(*value*) {#stack_value} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · If *value* is specified, sets the value accessor to the specified function or number and returns this stack generator. + +```js +const stack = d3.stack().value((d, key) => d[key]); +``` + +If *value* is not specified, returns the current value accessor. + +```js +stack.value() // (d, key) => d[key] +``` + +The value accessor defaults to: + +```js +function value(d, key) { + return d[key]; +} +``` + +:::warning CAUTION +The default value accessor assumes that the input data is an array of objects exposing named properties with numeric values. This is a “wide” rather than “tidy” representation of data and is no longer recommended. See [*stack*](#_stack) for an example using tidy data. +::: + +## *stack*.order(*order*) {#stack_order} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · If *order* is specified, sets the order accessor to the specified function or array and returns this stack generator. + +```js +const stack = d3.stack().order(d3.stackOrderNone); +``` + +If *order* is a function, it is passed the generated series array and must return an array of numeric indexes representing the stack order. For example, to use reverse key order: + +```js +const stack = d3.stack().order(series => d3.range(series.length).reverse()); +``` + +The stack order is computed prior to the [offset](#stack_offset); thus, the lower value for all points is zero at the time the order is computed. The index attribute for each series is also not set until after the order is computed. + +If *order* is not specified, returns the current order accessor. + +```js +stack.order() // d3.stackOrderNone +``` + +The order accessor defaults to [stackOrderNone](#stackOrderNone); this uses the order given by the [key accessor](#stack_key). See [stack orders](#stack-orders) for the built-in orders. + +## *stack*.offset(*offset*) {#stack_offset} + +[Source](https://github.com/d3/d3-shape/blob/main/src/stack.js) · If *offset* is specified, sets the offset accessor to the specified function and returns this stack generator. + +```js +const stack = d3.stack().offset(d3.stackOffsetExpand); +``` + +The offset function is passed the generated series array and the order index array; it is then responsible for updating the lower and upper values in the series array. See the built-in offsets for a reference implementation. + +If *offset* is not specified, returns the current offset acccesor. + +```js +stack.offset() // d3.stackOffsetExpand +``` + +The offset accessor defaults to [stackOffsetNone](#stackOffsetNone); this uses a zero baseline. See [stack offsets](#stack-offsets) for the built-in offsets. + +## Stack orders + +Stack orders are typically not used directly, but are instead passed to [*stack*.order](#stack_order). + +### stackOrderAppearance(*series*) {#stackOrderAppearance} + + + +```js +const stack = d3.stack().order(d3.stackOrderAppearance); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/appearance.js) · Returns a series order such that the earliest series (according to the maximum value) is at the bottom. + +### stackOrderAscending(*series*) {#stackOrderAscending} + + + +```js +const stack = d3.stack().order(d3.stackOrderAscending); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/ascending.js) · Returns a series order such that the smallest series (according to the sum of values) is at the bottom. + +### stackOrderDescending(*series*) {#stackOrderDescending} + + + +```js +const stack = d3.stack().order(d3.stackOrderDescending); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/descending.js) · Returns a series order such that the largest series (according to the sum of values) is at the bottom. + +### stackOrderInsideOut(*series*) {#stackOrderInsideOut} + + + +```js +const stack = d3.stack().order(d3.stackOrderInsideOut); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/insideOut.js) · Returns a series order such that the earliest series (according to the maximum value) are on the inside and the later series are on the outside. This order is recommended for streamgraphs in conjunction with the [wiggle offset](#stackOffsetWiggle). See [Stacked Graphs—Geometry & Aesthetics](http://leebyron.com/streamgraph/) by Byron & Wattenberg for more information. + +### stackOrderNone(*series*) {#stackOrderNone} + + + +```js +const stack = d3.stack().order(d3.stackOrderNone); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/none.js) · Returns the given series order [0, 1, … *n* - 1] where *n* is the number of elements in *series*. Thus, the stack order is given by the [key accessor](#stack_keys). + +### stackOrderReverse(*series*) {#stackOrderReverse} + + + +```js +const stack = d3.stack().order(d3.stackOrderReverse); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/order/reverse.js) · Returns the reverse of the given series order [*n* - 1, *n* - 2, … 0] where *n* is the number of elements in *series*. Thus, the stack order is given by the reverse of the [key accessor](#stack_keys). + +## Stack offsets + +Stack offsets are typically not used directly, but are instead passed to [*stack*.offset](#stack_offset). + +### stackOffsetExpand(*series*, *order*) {#stackOffsetExpand} + + + +```js +const stack = d3.stack().offset(d3.stackOffsetExpand); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/offset/expand.js) · Applies a zero baseline and normalizes the values for each point such that the topline is always one. + +### stackOffsetDiverging(*series*, *order*) {#stackOffsetDiverging} + + + +```js +const stack = d3.stack().offset(d3.stackOffsetDiverging); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/offset/diverging.js) · Positive values are stacked above zero, negative values are [stacked below zero](https://observablehq.com/@d3/diverging-stacked-bar-chart), and zero values are stacked at zero. + +### stackOffsetNone(*series*, *order*) {#stackOffsetNone} + + + +```js +const stack = d3.stack().offset(d3.stackOffsetNone); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/offset/none.js) · Applies a zero baseline. + +### stackOffsetSilhouette(*series*, *order*) {#stackOffsetSilhouette} + + + +```js +const stack = d3.stack().offset(d3.stackOffsetSilhouette); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/offset/silhouette.js) · Shifts the baseline down such that the center of the streamgraph is always at zero. + +### stackOffsetWiggle(*series*, *order*) {#stackOffsetWiggle} + + + +```js +const stack = d3.stack().offset(d3.stackOffsetWiggle); +``` + +[Source](https://github.com/d3/d3-shape/blob/main/src/offset/wiggle.js) · Shifts the baseline so as to minimize the weighted wiggle of layers. This offset is recommended for streamgraphs in conjunction with the [inside-out order](#stackOrderInsideOut). See [Stacked Graphs—Geometry & Aesthetics](http://leebyron.com/streamgraph/) by Bryon & Wattenberg for more information. diff --git a/docs/d3-shape/symbol.md b/docs/d3-shape/symbol.md new file mode 100644 index 00000000000000..f7f95f2deb811b --- /dev/null +++ b/docs/d3-shape/symbol.md @@ -0,0 +1,343 @@ + + +# Symbols + +[Examples](https://observablehq.com/@d3/fitted-symbols) · Symbols provide a categorical shape encoding as in a scatterplot. Symbols are centered at the origin; use a [transform](http://www.w3.org/TR/SVG/coords.html#TransformAttribute) to move the symbol to a different position. + +## symbol(*type*, *size*) {#symbol} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · Constructs a new symbol generator of the specified [type](#symbol_type) and [size](#symbol_size). If not specified, *type* defaults to a circle, and *size* defaults to 64. + +```js +svg.append("path").attr("d", d3.symbol(d3.symbolCross)); +``` + +## *symbol*(...*arguments*) {#_symbol} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · Generates a symbol for the given *arguments*. The *arguments* are arbitrary; they are propagated to the symbol generator’s accessor functions along with the `this` object. With the default settings, invoking the symbol generator produces a circle of 64 square pixels. + +```js +d3.symbol()() // "M4.514,0A4.514,4.514,0,1,1,-4.514,0A4.514,4.514,0,1,1,4.514,0" +``` + + +If the symbol generator has a [context](#symbol_context), then the symbol is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. + +## *symbol*.type(*type*) {#symbol_type} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · If *type* is specified, sets the symbol type to the specified function or symbol type and returns this symbol generator. + +```js +const symbol = d3.symbol().type(d3.symbolCross); +``` + +If *type* is a function, the symbol generator’s arguments and *this* are passed through. This is convenient for use with [*selection*.attr](../d3-selection/modifying.md#selection_attr), say in conjunction with an [ordinal scale](../d3-scale/ordinal.md) to produce a categorical symbol encoding. + +```js +const symbolType = d3.scaleOrdinal(d3.symbolsFill); +const symbol = d3.symbol().type((d) => symbolType(d.category)); +``` + +If *type* is not specified, returns the current symbol type accessor. + +```js +symbol.type() // () => d3.symbolCross +``` + +The symbol type accessor defaults to: + +```js +function type() { + return circle; +} +``` + +See [symbolsFill](#symbolsFill) and [symbolsStroke](#symbolsStroke) for built-in symbol types. To implement a custom symbol type, pass an object that implements [*symbolType*.draw](#symbolType_draw). + +## *symbol*.size(*size*) {#symbol_size} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · If *size* is specified, sets the size to the specified function or number and returns this symbol generator. + +```js +const symbol = d3.symbol().size(100); +``` + +If *size* is a function, the symbol generator’s arguments and *this* are passed through. This is convenient for use with [*selection*.attr](../d3-selection/modifying.md#selection_attr), say in conjunction with a [linear scale](../d3-scale/linear.md) to produce a quantitative size encoding. + +```js +const symbolSize = d3.scaleLinear([0, 100]); +const symbol = d3.symbol().size((d) => symbolSize(d.value)); +``` + +If *size* is not specified, returns the current size accessor. + +```js +symbol.size() // () => 100 +``` + +The size accessor defaults to: + +```js +function size() { + return 64; +} +``` + +## *symbol*.context(*context*) {#symbol_context} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · If *context* is specified, sets the context and returns this symbol generator. + +```js +const context = canvas.getContext("2d"); +const symbol = d3.symbol().context(context); +``` + +If *context* is not specified, returns the current context. + +```js +symbol.context() // context +``` + +The context defaults to null. If the context is not null, then the [generated symbol](#_symbol) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated symbol is returned. + +## *symbol*.digits(*digits*) {#symbol_digits} + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · If *digits* is specified, sets the maximum number of digits after the decimal separator and returns this symbol generator. + +```js +const symbol = d3.symbol().digits(3); +``` + +If *digits* is not specified, returns the current maximum fraction digits, which defaults to 3. + +```js +symbol.digits() // 3 +``` + +This option only applies when the associated [*context*](#symbol_context) is null, as when this symbol generator is used to produce [path data](http://www.w3.org/TR/SVG/paths.html#PathData). + +## symbolsFill {#symbolsFill} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · An array containing a set of symbol types designed for filling: [circle](#symbolCircle), [cross](#symbolCross), [diamond](#symbolDiamond), [square](#symbolSquare), [star](#symbolStar), [triangle](#symbolTriangle), and [wye](#symbolWye). Useful for a categorical shape encoding with an [ordinal scale](../d3-scale/ordinal.md). + +```js +const symbolType = d3.scaleOrdinal(d3.symbolsFill); +``` + +## symbolsStroke {#symbolsStroke} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol.js) · An array containing a set of symbol types designed for stroking: [circle](#symbolCircle), [plus](#symbolPlus), [times](#symbolTimes), [triangle2](#symbolTriangle2), [asterisk](#symbolAsterisk), [square2](#symbolSquare2), and [diamond2](#symbolDiamond2). Useful for a categorical shape encoding with an [ordinal scale](../d3-scale/ordinal.md). + +```js +const symbolType = d3.scaleOrdinal(d3.symbolsStroke); +``` + +## symbolAsterisk {#symbolAsterisk} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/asterisk.js) · The asterisk symbol type; intended for stroking. + +## symbolCircle {#symbolCircle} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/circle.js) · The circle symbol type; intended for either filling or stroking. + +## symbolCross {#symbolCross} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/cross.js) · The Greek cross symbol type, with arms of equal length; intended for filling. + +## symbolDiamond {#symbolDiamond} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/diamond.js) · The rhombus symbol type; intended for filling. + +## symbolDiamond2 {#symbolDiamond2} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/diamond.js) · The rotated square symbol type; intended for stroking. + +## symbolPlus {#symbolPlus} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/plus.js) · The plus symbol type; intended for stroking. + +## symbolSquare {#symbolSquare} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/square.js) · The square symbol type; intended for filling. + +## symbolSquare2 {#symbolSquare2} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/square2.js) · The square2 symbol type; intended for stroking. + +## symbolStar {#symbolStar} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/star.js) · The pentagonal star (pentagram) symbol type; intended for filling. + +## symbolTriangle {#symbolTriangle} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/triangle.js) · The up-pointing triangle symbol type; intended for filling. + +## symbolTriangle2 {#symbolTriangle2} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/triangle2.js) · The up-pointing triangle symbol type; intended for stroking. + +## symbolWye {#symbolWye} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/wye.js) · The Y-shape symbol type; intended for filling. + +## symbolTimes {#symbolTimes} + + + +[Source](https://github.com/d3/d3-shape/blob/main/src/symbol/times.js) · The X-shape symbol type; intended for stroking. + +## Custom symbols + +Symbol types are typically not used directly, instead being passed to [*symbol*.type](#symbol_type). However, you can define your own symbol type implementation should none of the built-in types satisfy your needs using the following interface. You can also use this low-level interface with a built-in symbol type as an alternative to the symbol generator. + +```js +const path = d3.pathRound(3); +const circle = d3.symbolCircle.draw(path, 64); +path.toString(); // "M4.514,0A4.514,4.514,0,1,1,-4.514,0A4.514,4.514,0,1,1,4.514,0" +``` + +### *symbolType*.draw(*context*, *size*) {#symbolType_draw} + +Renders this symbol type to the specified *context* with the specified *size* in square pixels. The *context* implements the [CanvasPathMethods](http://www.w3.org/TR/2dcontext/#canvaspathmethods) interface. (Note that this is a subset of the CanvasRenderingContext2D interface!) See also [d3-path](../d3-path.md). + +## pointRadial(*angle*, *radius*) {#pointRadial} + +[Examples](https://observablehq.com/@d3/radial-area-chart) · [Source](https://github.com/d3/d3-shape/blob/main/src/pointRadial.js) · Returns the point [x, y] for the given *angle* in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise, and the given *radius*. + +```js +d3.pointRadial(Math.PI / 3, 100) // [86.60254037844386, -50] +``` diff --git a/docs/d3-time-format.md b/docs/d3-time-format.md new file mode 100644 index 00000000000000..91a2a2ace728a1 --- /dev/null +++ b/docs/d3-time-format.md @@ -0,0 +1,231 @@ +# d3-time-format + +This module provides an approximate JavaScript implementation of the venerable [strptime](http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html) and [strftime](http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html) functions from the C standard library, and can be used to parse or format [dates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) in a variety of locale-specific representations. To format a date, create a [formatter](#locale_format) from a specifier (a string with the desired format *directives*, indicated by `%`); then pass a date to the formatter, which returns a string. For example, to convert the current date to a human-readable string: + +```js +const formatTime = d3.utcFormat("%B %d, %Y"); +formatTime(new Date()); // "May 31, 2023" +``` + +Likewise, to convert a string back to a date, create a [parser](#locale_parse): + +```js +const parseTime = d3.utcParse("%B %d, %Y"); +parseTime("June 30, 2015"); // 2023-05-31 +``` + +You can implement more elaborate conditional time formats, too. For example, here’s a multi-scale time format using [time intervals](./d3-time.md): + +```js +const formatMillisecond = d3.utcFormat(".%L"), + formatSecond = d3.utcFormat(":%S"), + formatMinute = d3.utcFormat("%I:%M"), + formatHour = d3.utcFormat("%I %p"), + formatDay = d3.utcFormat("%a %d"), + formatWeek = d3.utcFormat("%b %d"), + formatMonth = d3.utcFormat("%B"), + formatYear = d3.utcFormat("%Y"); + +function multiFormat(date) { + return (d3.utcSecond(date) < date ? formatMillisecond + : d3.utcMinute(date) < date ? formatSecond + : d3.utcHour(date) < date ? formatMinute + : d3.utcDay(date) < date ? formatHour + : d3.utcMonth(date) < date ? (d3.utcWeek(date) < date ? formatDay : formatWeek) + : d3.utcYear(date) < date ? formatMonth + : formatYear)(date); +} +``` + +This module is used by D3 [time scales](./d3-scale.md#time-scales) to generate human-readable ticks. + +Also see [*date*.toLocaleString](https://observablehq.com/@mbostock/date-formatting). + +## timeFormat(*specifier*) {#timeFormat} + +```js +d3.timeFormat("%b %d") +``` + +An alias for [*locale*.format](#locale_format) on the [default locale](#timeFormatDefaultLocale). + +## timeParse(*specifier*) {#timeParse} + +```js +d3.timeParse("%b %d") +``` + +An alias for [*locale*.parse](#locale_parse) on the [default locale](#timeFormatDefaultLocale). + +## utcFormat(*specifier*) {#utcFormat} + +```js +d3.utcFormat("%b %d") +``` + +An alias for [*locale*.utcFormat](#locale_utcFormat) on the [default locale](#timeFormatDefaultLocale). + +## utcParse(*specifier*) {#utcParse} + +```js +d3.utcParse("%b %d") +``` + +An alias for [*locale*.utcParse](#locale_utcParse) on the [default locale](#timeFormatDefaultLocale). + +## isoFormat {#isoFormat} + +```js +d3.isoFormat(new Date()) // "2023-05-31T18:17:36.788Z" +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/isoFormat.js) · The full [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC time formatter. Where available, this method will use [Date.toISOString](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString) to format. + +## isoParse {#isoParse} + +```js +d3.isoParse("2023-05-31T18:17:36.788Z") +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/isoParse.js) · The full [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC time parser. Where available, this method will use the [Date constructor](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date) to parse strings. If you depend on strict validation of the input format according to ISO 8601, you should construct a [UTC parser function](#utcParse): + +```js +const strictIsoParse = d3.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"); +``` + +## *locale*.format(*specifier*) {#locale_format} + +```js +d3.timeFormat("%b %d") +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/locale.js) · Returns a new formatter for the given string *specifier*. The specifier string may contain the following directives: + +* `%a` - abbreviated weekday name.* +* `%A` - full weekday name.* +* `%b` - abbreviated month name.* +* `%B` - full month name.* +* `%c` - the locale’s date and time, such as `%x, %X`.* +* `%d` - zero-padded day of the month as a decimal number [01,31]. +* `%e` - space-padded day of the month as a decimal number [ 1,31]; equivalent to `%_d`. +* `%f` - microseconds as a decimal number [000000, 999999]. +* `%g` - ISO 8601 week-based year without century as a decimal number [00,99]. +* `%G` - ISO 8601 week-based year with century as a decimal number. +* `%H` - hour (24-hour clock) as a decimal number [00,23]. +* `%I` - hour (12-hour clock) as a decimal number [01,12]. +* `%j` - day of the year as a decimal number [001,366]. +* `%m` - month as a decimal number [01,12]. +* `%M` - minute as a decimal number [00,59]. +* `%L` - milliseconds as a decimal number [000, 999]. +* `%p` - either AM or PM.* +* `%q` - quarter of the year as a decimal number [1,4]. +* `%Q` - milliseconds since UNIX epoch. +* `%s` - seconds since UNIX epoch. +* `%S` - second as a decimal number [00,61]. +* `%u` - Monday-based (ISO 8601) weekday as a decimal number [1,7]. +* `%U` - Sunday-based week of the year as a decimal number [00,53]. +* `%V` - ISO 8601 week of the year as a decimal number [01, 53]. +* `%w` - Sunday-based weekday as a decimal number [0,6]. +* `%W` - Monday-based week of the year as a decimal number [00,53]. +* `%x` - the locale’s date, such as `%-m/%-d/%Y`.* +* `%X` - the locale’s time, such as `%-I:%M:%S %p`.* +* `%y` - year without century as a decimal number [00,99]. +* `%Y` - year with century as a decimal number, such as `1999`. +* `%Z` - time zone offset, such as `-0700`, `-07:00`, `-07`, or `Z`. +* `%%` - a literal percent sign (`%`). + +Directives marked with an asterisk (\*) may be affected by the [locale definition](#timeFormatLocale). + +For `%U`, all days in a new year preceding the first Sunday are considered to be in week 0. For `%W`, all days in a new year preceding the first Monday are considered to be in week 0. Week numbers are computed using [*interval*.count](./d3-time.md#interval_count). For example, 2015-52 and 2016-00 represent Monday, December 28, 2015, while 2015-53 and 2016-01 represent Monday, January 4, 2016. This differs from the [ISO week date](https://en.wikipedia.org/wiki/ISO_week_date) specification (`%V`), which uses a more complicated definition! + +For `%V`,`%g` and `%G`, per the [strftime man page](http://man7.org/linux/man-pages/man3/strftime.3.html): + +> In this system, weeks start on a Monday, and are numbered from 01, for the first week, up to 52 or 53, for the last week. Week 1 is the first week where four or more days fall within the new year (or, synonymously, week 01 is: the first week of the year that contains a Thursday; or, the week that has 4 January in it). If the ISO week number belongs to the previous or next year, that year is used instead. + +The `%` sign indicating a directive may be immediately followed by a padding modifier: + +* `0` - zero-padding +* `_` - space-padding +* `-` - disable padding + +If no padding modifier is specified, the default is `0` for all directives except `%e`, which defaults to `_`. (In some implementations of strftime and strptime, a directive may include an optional field width or precision; this feature is not yet implemented.) + +The returned function formats a specified *[date](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)*, returning the corresponding string. + +```js +const formatMonth = d3.timeFormat("%B"), + formatDay = d3.timeFormat("%A"), + date = new Date(2014, 4, 1); // Thu May 01 2014 00:00:00 GMT-0700 (PDT) + +formatMonth(date); // "May" +formatDay(date); // "Thursday" +``` + +## *locale*.parse(*specifier*) {#locale_parse} + +```js +d3.timeParse("%b %d") +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/locale.js) · Returns a new parser for the given string *specifier*. The specifier string may contain the same directives as [*locale*.format](#locale_format). The `%d` and `%e` directives are considered equivalent for parsing. + +The returned function parses a specified *string*, returning the corresponding [date](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date) or null if the string could not be parsed according to this format’s specifier. Parsing is strict: if the specified string does not exactly match the associated specifier, this method returns null. For example, if the associated specifier is `%Y-%m-%dT%H:%M:%SZ`, then the string `"2011-07-01T19:15:28Z"` will be parsed as expected, but `"2011-07-01T19:15:28"`, `"2011-07-01 19:15:28"` and `"2011-07-01"` will return null. (Note that the literal `Z` here is different from the time zone offset directive `%Z`.) If a more flexible parser is desired, try multiple formats sequentially until one returns non-null. + +## *locale*.utcFormat(*specifier*) {#locale_utcFormat} + +```js +d3.utcFormat("%b %d") +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/locale.js) · Equivalent to [*locale*.format](#locale_format), except all directives are interpreted as [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) rather than local time. + +## *locale*.utcParse(*specifier*) {#locale_utcParse} + +```js +d3.utcParse("%b %d") +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/locale.js) · Equivalent to [*locale*.parse](#locale_parse), except all directives are interpreted as [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) rather than local time. + +## timeFormatLocale(*definition*) {#timeFormatLocale} + +```js +const enUs = d3.timeFormatLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/locale.js) · Returns a *locale* object for the specified *definition* with [*locale*.format](#locale_format), [*locale*.parse](#locale_parse), [*locale*.utcFormat](#locale_utcFormat), [*locale*.utcParse](#locale_utcParse) methods. The *definition* must include the following properties: + +* `dateTime` - the date and time (`%c`) format specifier (e.g., `"%a %b %e %X %Y"`). +* `date` - the date (`%x`) format specifier (e.g., `"%m/%d/%Y"`). +* `time` - the time (`%X`) format specifier (e.g., `"%H:%M:%S"`). +* `periods` - the A.M. and P.M. equivalents (e.g., `["AM", "PM"]`). +* `days` - the full names of the weekdays, starting with Sunday. +* `shortDays` - the abbreviated names of the weekdays, starting with Sunday. +* `months` - the full names of the months (starting with January). +* `shortMonths` - the abbreviated names of the months (starting with January). + +## timeFormatDefaultLocale(*definition*) {#timeFormatDefaultLocale} + +```js +const enUs = d3.timeFormatDefaultLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); +``` + +[Source](https://github.com/d3/d3-time-format/blob/main/src/defaultLocale.js) · Equivalent to [d3.timeFormatLocale](#timeFormatLocale), except it also redefines [d3.timeFormat](#timeFormat), [d3.timeParse](#timeParse), [d3.utcFormat](#utcFormat) and [d3.utcParse](#utcParse) to the new locale’s [*locale*.format](#locale_format), [*locale*.parse](#locale_parse), [*locale*.utcFormat](#locale_utcFormat) and [*locale*.utcParse](#locale_utcParse). If you do not set a default locale, it defaults to [U.S. English](https://github.com/d3/d3-time-format/blob/main/locale/en-US.json). diff --git a/docs/d3-time.md b/docs/d3-time.md new file mode 100644 index 00000000000000..170f0ef30fc69d --- /dev/null +++ b/docs/d3-time.md @@ -0,0 +1,474 @@ +# d3-time + +When visualizing time series data, analyzing temporal patterns, or working with time in general, the irregularities of conventional time units quickly become apparent. In the [Gregorian calendar](https://en.wikipedia.org/wiki/Gregorian_calendar), for example, most months have 31 days but some have 28, 29 or 30; most years have 365 days but [leap years](https://en.wikipedia.org/wiki/Leap_year) have 366; and with [daylight saving](https://en.wikipedia.org/wiki/Daylight_saving_time), most days have 24 hours but some have 23 or 25. Adding to complexity, daylight saving conventions vary around the world. + +As a result of these temporal peculiarities, it can be difficult to perform seemingly-trivial tasks. For example, if you want to compute the number of days that have passed between two dates, you can’t simply subtract and divide by 24 hours (86,400,000 ms): + +```js +const start = new Date(2015, 02, 01); // 2015-03-01T00:00 +const end = new Date(2015, 03, 01); // 2015-04-01T00:00 +const days = (end - start) / 864e5; // 30.958333333333332, oops! 🤯 +``` + +You can, however, use [d3.timeDay](#timeDay).[count](#interval_count): + +```js +d3.timeDay.count(start, end) // 31 😌 +``` + +The [day](#day) [interval](#api-reference) is one of several provided by d3-time. Each interval represents a conventional unit of time—[hours](#timeHour), [weeks](#timeWeek), [months](#timeMonth), *etc.*—and has methods to calculate boundary dates. For example, [d3.timeDay](#timeDay) computes midnight (typically 12:00 AM local time) of the corresponding day. In addition to [rounding](#interval_round) and [counting](#interval_count), intervals can also be used to generate arrays of boundary dates. For example, to compute each Sunday in the current month: + +```js +const start = d3.timeMonth.floor(); // 2015-01-01T00:00 +const stop = d3.timeMonth.ceil(); // 2015-02-01T00:00 +const weeks = d3.timeWeek.range(start, stop); // [2015-01-07T00:00, 2015-01-14T00:00, 2015-01-21T00:00, 2015-01-28T00:00] +``` + +The d3-time module does not implement its own calendaring system; it merely implements a convenient API for calendar math on top of ECMAScript [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date). Thus, it ignores leap seconds and can only work with the local time zone and [Coordinated Universal Time](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) (UTC). + +This module is used by D3’s time scales to generate sensible ticks, by D3’s time format, and can also be used directly to do things like [calendar layouts](https://observablehq.com/@d3/calendar/2). + +## *interval*(*date*) {#_interval} + +```js +d3.utcMonday() // the latest preceding Monday, UTC time +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Equivalent to [*interval*.floor](#interval_floor), except if *date* is not specified, it defaults to the current time. For example, [d3.timeYear](#timeYear)(*date*) and d3.timeYear.floor(*date*) are equivalent. + +## *interval*.floor(*date*) {#interval_floor} + +```js +d3.utcMonday.floor(new Date()) // the latest preceding Monday, UTC time +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a new date representing the latest interval boundary date before or equal to *date*. For example, [d3.timeDay](#timeDay).floor(*date*) typically returns 12:00 AM local time on the given *date*. + +This method is idempotent: if the specified *date* is already floored to the current interval, a new date with an identical time is returned. Furthermore, the returned date is the minimum expressible value of the associated interval, such that *interval*.floor(*interval*.floor(*date*) - 1) returns the preceeding interval boundary date. + +Note that the `==` and `===` operators do not compare by value with [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) objects, and thus you cannot use them to tell whether the specified *date* has already been floored. Instead, coerce to a number and then compare: + +```js +// Returns true if the specified date is a day boundary. +function isDay(date) { + return +d3.timeDay.floor(date) === +date; +} +``` + +This is more reliable than testing whether the time is 12:00 AM, as in some time zones midnight may not exist due to daylight saving. + +## *interval*.round(*date*) {#interval_round} + +```js +d3.utcMonday.round(new Date()) // the previous or following Monday, whichever is closer +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a new date representing the closest interval boundary date to *date*. For example, [d3.timeDay](#timeDay).round(*date*) typically returns 12:00 AM local time on the given *date* if it is on or before noon, and 12:00 AM of the following day if it is after noon. + +This method is idempotent: if the specified *date* is already rounded to the current interval, a new date with an identical time is returned. + +## *interval*.ceil(*date*) {#interval_ceil} + +```js +d3.utcMonday.ceil(new Date()) // the following Monday +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a new date representing the earliest interval boundary date after or equal to *date*. For example, [d3.timeDay](#timeDay).ceil(*date*) typically returns 12:00 AM local time on the date following the given *date*. + +This method is idempotent: if the specified *date* is already ceilinged to the current interval, a new date with an identical time is returned. Furthermore, the returned date is the maximum expressible value of the associated interval, such that *interval*.ceil(*interval*.ceil(*date*) + 1) returns the following interval boundary date. + +## *interval*.offset(*date*, *step*) {#interval_offset} + +```js +d3.utcDay.offset(new Date(), 1) // the same time tomorrow +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a new date equal to *date* plus *step* intervals. If *step* is not specified it defaults to 1. If *step* is negative, then the returned date will be before the specified *date*; if *step* is zero, then a copy of the specified *date* is returned; if *step* is not an integer, it is [floored](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor). This method does not round the specified *date* to the interval. For example, if *date* is today at 5:34 PM, then [d3.timeDay](#timeDay).offset(*date*, 1) returns 5:34 PM tomorrow (even if daylight saving changes!). + +## *interval*.range(*start*, *stop*, *step*) {#interval_range} + +```js +d3.utcDay.range(new Date("2014-01-01"), new Date("2015-01-01")) // every day in 2014 +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns an array of dates representing every interval boundary after or equal to *start* (inclusive) and before *stop* (exclusive). If *step* is specified, then every *step*th boundary will be returned; for example, for the [d3.timeDay](#timeDay) interval a *step* of 2 will return every other day. If *step* is not an integer, it is [floored](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor). + +The first date in the returned array is the earliest boundary after or equal to *start*; subsequent dates are [offset](#interval_offset) by *step* intervals and [floored](#interval_floor). Thus, two overlapping ranges may be consistent. For example, this range contains odd days: + +```js +d3.timeDay.range(new Date(2015, 0, 1), new Date(2015, 0, 7), 2) // [2015-01-01T00:00, 2015-01-03T00:00, 2015-01-05T00:00] +``` + +While this contains even days: + +```js +d3.timeDay.range(new Date(2015, 0, 2), new Date(2015, 0, 8), 2) // [2015-01-02T00:00, 2015-01-04T00:00, 2015-01-06T00:00] +``` + +To make ranges consistent when a *step* is specified, use [*interval*.every](#interval_every) instead. + +For convenience, aliases for *interval*.range are also provided as plural forms of the corresponding interval, such as [utcMondays](#utcMondays). + +## *interval*.filter(*test*) {#interval_filter} + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a new interval that is a filtered subset of this interval using the specified *test* function. The *test* function is passed a date and should return true if and only if the specified date should be considered part of the interval. For example, to create an interval that returns the 1st, 11th, 21th and 31th (if it exists) of each month: + +```js +d3.timeDay.filter((d) => (d.getDate() - 1) % 10 === 0) +``` + +The returned filtered interval does not support [*interval*.count](#interval_count). See also [*interval*.every](#interval_every). + +## *interval*.every(*step*) {#interval_every} + +```js +d3.unixDay.every(3) +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns a [filtered](#interval_filter) view of this interval representing every *step*th date. The meaning of *step* is dependent on this interval’s parent interval as defined by the field function. For example, [d3.timeMinute](#timeMinute).every(15) returns an interval representing every fifteen minutes, starting on the hour: :00, :15, :30, :45, etc. Note that for some intervals, the resulting dates may not be uniformly-spaced; [d3.timeDay](#timeDay)’s parent interval is [d3.timeMonth](#timeMonth), and thus the interval number resets at the start of each month. If *step* is not valid, returns null. If *step* is one, returns this interval. + +This method can be used in conjunction with [*interval*.range](#interval_range) to ensure that two overlapping ranges are consistent. For example, this range contains odd days: + +```js +d3.timeDay.every(2).range(new Date(2015, 0, 1), new Date(2015, 0, 7)) // [2015-01-01T00:00, 2015-01-03T00:00, 2015-01-05T00:00] +``` + +As does this one: + +```js +d3.timeDay.every(2).range(new Date(2015, 0, 2), new Date(2015, 0, 8)) // [2015-01-03T00:00, 2015-01-05T00:00, 2015-01-07T00:00] +``` + +The returned filtered interval does not support [*interval*.count](#interval_count). See also [*interval*.filter](#interval_filter). + +## *interval*.count(*start*, *end*) {#interval_count} + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Returns the number of interval boundaries after *start* (exclusive) and before or equal to *end* (inclusive). Note that this behavior is slightly different than [*interval*.range](#interval_range) because its purpose is to return the zero-based number of the specified *end* date relative to the specified *start* date. For example, to compute the current zero-based day-of-year number: + +```js +d3.timeDay.count(d3.timeYear(now), now) // 177 +``` + +Likewise, to compute the current zero-based week-of-year number for weeks that start on Sunday: + +```js +d3.timeSunday.count(d3.timeYear(now), now) // 25 +``` + +## timeInterval(*floor*, *offset*, *count*, *field*) {#timeInterval} + +```js +const utcDay = d3.timeInterval( + (date) => date.setUTCHours(0, 0, 0, 0), // floor + (date, step) => date.setUTCDate(date.getUTCDate() + step), // offset + (start, end) => (end - start) / 864e5, // count + (date) => date.getUTCDate() - 1 // field +); +``` + +[Source](https://github.com/d3/d3-time/blob/main/src/interval.js) · Constructs a new custom interval given the specified *floor* and *offset* functions and an optional *count* function. + +The *floor* function takes a single date as an argument and rounds it down to the nearest interval boundary. + +The *offset* function takes a date and an integer step as arguments and advances the specified date by the specified number of boundaries; the step may be positive, negative or zero. + +The optional *count* function takes a start date and an end date, already floored to the current interval, and returns the number of boundaries between the start (exclusive) and end (inclusive). If a *count* function is not specified, the returned interval does not expose [*interval*.count](#interval_count) or [*interval*.every](#interval_every) methods. Note: due to an internal optimization, the specified *count* function must not invoke *interval*.count on other time intervals. + +The optional *field* function takes a date, already floored to the current interval, and returns the field value of the specified date, corresponding to the number of boundaries between this date (exclusive) and the latest previous parent boundary. For example, for the [d3.timeDay](#timeDay) interval, this returns the number of days since the start of the month. If a *field* function is not specified, it defaults to counting the number of interval boundaries since the UNIX epoch of January 1, 1970 UTC. The *field* function defines the behavior of [*interval*.every](#interval_every). + +## timeMillisecond {#timeMillisecond} + +[Source](https://github.com/d3/d3-time/blob/main/src/millisecond.js) · Milliseconds in local time; the shortest available time unit. + +## timeSecond {#timeSecond} + +[Source](https://github.com/d3/d3-time/blob/main/src/second.js) · Seconds in local time (e.g., 01:23:45.0000 AM); 1,000 milliseconds. + +## timeMinute {#timeMinute} + +[Source](https://github.com/d3/d3-time/blob/main/src/minute.js) · Minutes in local time (e.g., 01:02:00 AM); 60 seconds. Note that ECMAScript [ignores leap seconds](http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.1). + +## timeHour {#timeHour} + +[Source](https://github.com/d3/d3-time/blob/main/src/hour.js) · Hours in local time (e.g., 01:00 AM); 60 minutes. Note that advancing time by one hour in local time can return the same hour or skip an hour due to daylight saving. + +## timeDay {#timeDay} + +[Source](https://github.com/d3/d3-time/blob/main/src/day.js) · Days in local time (e.g., February 7, 2012 at 12:00 AM); typically 24 hours. Days in local time may range from 23 to 25 hours due to daylight saving. d3.unixDay is like [d3.utcDay](#timeDay), except it counts days since the UNIX epoch (January 1, 1970) such that *interval*.every returns uniformly-spaced dates rather than varying based on day-of-month. + +## timeWeek {#timeWeek} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Alias for [d3.timeSunday](#timeSunday); 7 days and typically 168 hours. Weeks in local time may range from 167 to 169 hours due to daylight saving. + +## timeSunday {#timeSunday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Sunday-based weeks in local time (e.g., February 5, 2012 at 12:00 AM). + +## timeMonday {#timeMonday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Monday-based weeks in local time (e.g., February 6, 2012 at 12:00 AM). + +## timeTuesday {#timeTuesday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Tuesday-based weeks in local time (e.g., February 7, 2012 at 12:00 AM). + +## timeWednesday {#timeWednesday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Wednesday-based weeks in local time (e.g., February 8, 2012 at 12:00 AM). + +## timeThursday {#timeThursday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Thursday-based weeks in local time (e.g., February 9, 2012 at 12:00 AM). + +## timeFriday {#timeFriday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Friday-based weeks in local time (e.g., February 10, 2012 at 12:00 AM). + +## timeSaturday {#timeSaturday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Saturday-based weeks in local time (e.g., February 11, 2012 at 12:00 AM). + +## timeMonth {#timeMonth} + +[Source](https://github.com/d3/d3-time/blob/main/src/month.js) · Months in local time (e.g., February 1, 2012 at 12:00 AM); ranges from 28 to 31 days. + +## timeYear {#timeYear} + +[Source](https://github.com/d3/d3-time/blob/main/src/year.js) · Years in local time (e.g., January 1, 2012 at 12:00 AM); ranges from 365 to 366 days. + +## utcMillisecond {#utcMillisecond} + +[Source](https://github.com/d3/d3-time/blob/main/src/millisecond.js) · Milliseconds in UTC time; the shortest available time unit. + +## utcSecond {#utcSecond} + +[Source](https://github.com/d3/d3-time/blob/main/src/second.js) · Seconds in UTC time (e.g., 01:23:45.0000 AM); 1,000 milliseconds. + +## utcMinute {#utcMinute} + +[Source](https://github.com/d3/d3-time/blob/main/src/minute.js) · Minutes in UTC time (e.g., 01:02:00 AM); 60 seconds. Note that ECMAScript [ignores leap seconds](http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.1). + +## utcHour {#utcHour} + +[Source](https://github.com/d3/d3-time/blob/main/src/hour.js) · Hours in UTC time (e.g., 01:00 AM); 60 minutes. + +## utcDay {#utcDay} + +[Source](https://github.com/d3/d3-time/blob/main/src/day.js) · Days in UTC time (e.g., February 7, 2012 at 12:00 AM); 24 hours. + +## utcWeek {#utcWeek} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Alias for [d3.timeSunday](#timeSunday); 7 days and 168 hours. + +## utcSunday {#utcSunday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Sunday-based weeks in UTC time (e.g., February 5, 2012 at 12:00 AM). + +## utcMonday {#utcMonday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Monday-based weeks in UTC time (e.g., February 6, 2012 at 12:00 AM). + +## utcTuesday {#utcTuesday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Tuesday-based weeks in UTC time (e.g., February 7, 2012 at 12:00 AM). + +## utcWednesday {#utcWednesday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Wednesday-based weeks in UTC time (e.g., February 8, 2012 at 12:00 AM). + +## utcThursday {#utcThursday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Thursday-based weeks in UTC time (e.g., February 9, 2012 at 12:00 AM). + +## utcFriday {#utcFriday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Friday-based weeks in UTC time (e.g., February 10, 2012 at 12:00 AM). + +## utcSaturday {#utcSaturday} + +[Source](https://github.com/d3/d3-time/blob/main/src/week.js) · Saturday-based weeks in UTC time (e.g., February 11, 2012 at 12:00 AM). + +## utcMonth {#utcMonth} + +[Source](https://github.com/d3/d3-time/blob/main/src/month.js) · Months in UTC time (e.g., February 1, 2012 at 12:00 AM); ranges from 28 to 31 days. + +## utcYear {#utcYear} + +[Source](https://github.com/d3/d3-time/blob/main/src/year.js) · Years in UTC time (e.g., January 1, 2012 at 12:00 AM); ranges from 365 to 366 days. + +## unixDay {#unixDay} + +Like [d3.utcDay](#utcDay), except it counts days since the UNIX epoch (January 1, 1970) such that [*interval*.every](#interval_every) returns uniformly-spaced dates rather than varying based on day-of-month. + +## timeMilliseconds(*start*, *stop*, *step*) {#timeMilliseconds} + +Alias for [d3.timeMillisecond](#timeMillisecond).[range](#interval_range). + +## timeSeconds(*start*, *stop*, *step*) {#timeSeconds} + +Alias for [d3.timeSecond](#timeSecond).[range](#interval_range). + +## timeMinutes(*start*, *stop*, *step*) {#timeMinutes} + +Alias for [d3.timeMinute](#timeMinute).[range](#interval_range). + +## timeHours(*start*, *stop*, *step*) {#timeHours} + +Alias for [d3.timeHour](#timeHour).[range](#interval_range). + +## timeDays(*start*, *stop*, *step*) {#timeDays} + +Alias for [d3.timeDay](#timeDay).[range](#interval_range). + +## timeWeeks(*start*, *stop*, *step*) {#timeWeeks} + +Alias for [d3.timeWeek](#timeWeek).[range](#interval_range). + +## timeSundays(*start*, *stop*, *step*) {#timeSundays} + +Alias for [d3.timeSunday](#timeSunday).[range](#interval_range). + +## timeMondays(*start*, *stop*, *step*) {#timeMondays} + +Alias for [d3.timeMonday](#timeMonday).[range](#interval_range). + +## timeTuesdays(*start*, *stop*, *step*) {#timeTuesdays} + +Alias for [d3.timeTuesday](#timeTuesday).[range](#interval_range). + +## timeWednesdays(*start*, *stop*, *step*) {#timeWednesdays} + +Alias for [d3.timeWednesday](#timeWednesday).[range](#interval_range). + +## timeThursdays(*start*, *stop*, *step*) {#timeThursdays} + +Alias for [d3.timeThursday](#timeThursday).[range](#interval_range). + +## timeFridays(*start*, *stop*, *step*) {#timeFridays} + +Alias for [d3.timeFriday](#timeFriday).[range](#interval_range). + +## timeSaturdays(*start*, *stop*, *step*) {#timeSaturdays} + +Alias for [d3.timeSaturday](#timeSaturday).[range](#interval_range). + +## timeMonths(*start*, *stop*, *step*) {#timeMonths} + +Alias for [d3.timeMonth](#timeMonth).[range](#interval_range). + +## timeYears(*start*, *stop*, *step*) {#timeYears} + +Alias for [d3.timeYear](#timeYear).[range](#interval_range). + +## utcMilliseconds(*start*, *stop*, *step*) {#utcMilliseconds} + +Alias for [d3.utcMillisecond](#utcMillisecond).[range](#interval_range). + +## utcSeconds(*start*, *stop*, *step*) {#utcSeconds} + +Alias for [d3.utcSecond](#utcSecond).[range](#interval_range). + +## utcMinutes(*start*, *stop*, *step*) {#utcMinutes} + +Alias for [d3.utcMinute](#utcMinute).[range](#interval_range). + +## utcHours(*start*, *stop*, *step*) {#utcHours} + +Alias for [d3.utcHour](#utcHour).[range](#interval_range). + +## utcDays(*start*, *stop*, *step*) {#utcDays} + +Alias for [d3.utcDay](#utcDay).[range](#interval_range). + +## utcWeeks(*start*, *stop*, *step*) {#utcWeeks} + +Alias for [d3.utcWeek](#utcWeek).[range](#interval_range). + +## utcSundays(*start*, *stop*, *step*) {#utcSundays} + +Alias for [d3.utcSunday](#utcSunday).[range](#interval_range). + +## utcMondays(*start*, *stop*, *step*) {#utcMondays} + +Alias for [d3.utcMonday](#utcMonday).[range](#interval_range). + +## utcTuesdays(*start*, *stop*, *step*) {#utcTuesdays} + +Alias for [d3.utcTuesday](#utcTuesday).[range](#interval_range). + +## utcWednesdays(*start*, *stop*, *step*) {#utcWednesdays} + +Alias for [d3.utcWednesday](#utcWednesday).[range](#interval_range). + +## utcThursdays(*start*, *stop*, *step*) {#utcThursdays} + +Alias for [d3.utcThursday](#utcThursday).[range](#interval_range). + +## utcFridays(*start*, *stop*, *step*) {#utcFridays} + +Alias for [d3.utcFriday](#utcFriday).[range](#interval_range). + +## utcSaturdays(*start*, *stop*, *step*) {#utcSaturdays} + +Alias for [d3.utcSaturday](#utcSaturday).[range](#interval_range). + +## utcMonths(*start*, *stop*, *step*) {#utcMonths} + +Alias for [d3.utcMonth](#utcMonth).[range](#interval_range). + +## utcYears(*start*, *stop*, *step*) {#utcYears} + +Alias for [d3.utcYear](#utcYear).[range](#interval_range). + +## timeTicks(*start*, *stop*, *count*) {#timeTicks} + +[Source](https://github.com/d3/d3-time/blob/main/src/ticks.js) · Equivalent to [d3.utcTicks](#utcTicks), but in local time. + +## timeTickInterval(*start*, *stop*, *count*) {#timeTickInterval} + +[Source](https://github.com/d3/d3-time/blob/main/src/ticks.js) · Returns the time interval that would be used by [d3.timeTicks](#timeTicks) given the same arguments. + +## utcTicks(*start*, *stop*, *count*) {#utcTicks} + +[Source](https://github.com/d3/d3-time/blob/main/src/ticks.js) · Returns an array of approximately *count* dates at regular intervals between *start* and *stop* (inclusive). If *stop* is before *start*, dates are returned in reverse chronological order; otherwise dates are returned in chronological order. The following UTC time intervals are considered: + +* 1 second +* 5 seconds +* 15 seconds +* 30 seconds +* 1 minute +* 5 minutes +* 15 minutes +* 30 minutes +* 1 hour +* 3 hours +* 6 hours +* 12 hours +* 1 day +* 2 days +* 1 week +* 1 month +* 3 months +* 1 year + +Multiples of milliseconds (for small ranges) and years (for large ranges) are also considered, following the rules of [d3.ticks](https://github.com/d3/d3-array/blob/main/README.md#ticks). The interval producing the number of dates that is closest to *count* is used. For example: + +```js +const start = new Date("1970-03-01"); +const stop = new Date("1996-03-19"); +const count = 4; +const ticks = d3.utcTicks(start, stop, count); // [1975-01-01, 1980-01-01, 1985-01-01, 1990-01-01, 1995-01-01] +``` + +If *count* is a time interval, this function behaves similarly to [*interval*.range](#interval_range) except that both *start* and *stop* are inclusive and it may return dates in reverse chronological order if *stop* is before *start*. + +## utcTickInterval(*start*, *stop*, *count*) {#utcTickInterval} + +[Source](https://github.com/d3/d3-time/blob/main/src/ticks.js) · Returns the time interval that would be used by [d3.utcTicks](#utcTicks) given the same arguments. If there is no associated interval, such as when *start* or *stop* is invalid, returns null. + +```js +const start = new Date("1970-03-01"); +const stop = new Date("1996-03-19"); +const count = 4; +const interval = d3.utcTickInterval(start, stop, count); // d3.utcYear.every(5) +``` diff --git a/docs/d3-timer.md b/docs/d3-timer.md new file mode 100644 index 00000000000000..7e6e5eb655fe62 --- /dev/null +++ b/docs/d3-timer.md @@ -0,0 +1,66 @@ +# d3-timer + +This module provides an efficient queue capable of managing thousands of concurrent animations, while guaranteeing consistent, synchronized timing with concurrent or staged animations. Internally, it uses [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) for fluid animation (if available), switching to [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout) for delays longer than 24ms. + +## now() {#now} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timer.js) · Returns the current time as defined by [performance.now](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) if available, and [Date.now](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/now) if not. + +```js +d3.now() // 1236.3000000715256 +``` + +The current time is updated at the start of a frame; it is thus consistent during the frame, and any timers scheduled during the same frame will be synchronized. If this method is called outside of a frame, such as in response to a user event, the current time is calculated and then fixed until the next frame, again ensuring consistent timing during event handling. + +## timer(*callback*, *delay*, *time*) {#timer} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timer.js) · Schedules a new timer, invoking the specified *callback* repeatedly until the timer is [stopped](#timer_stop). An optional numeric *delay* in milliseconds may be specified to invoke the given *callback* after a delay; if *delay* is not specified, it defaults to zero. The delay is relative to the specified *time* in milliseconds; if *time* is not specified, it defaults to [now](#now). + +The *callback* is passed the (apparent) *elapsed* time since the timer became active. For example: + +```js +const t = d3.timer((elapsed) => { + console.log(elapsed); + if (elapsed > 200) t.stop(); +}, 150); +``` + +This produces roughly the following console output: + +``` +3 +25 +48 +65 +85 +106 +125 +146 +167 +189 +209 +``` + +(The exact values may vary depending on your JavaScript runtime and what else your computer is doing.) Note that the first *elapsed* time is 3ms: this is the elapsed time since the timer started, not since the timer was scheduled. Here the timer started 150ms after it was scheduled due to the specified delay. The apparent *elapsed* time may be less than the true *elapsed* time if the page is backgrounded and [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) is paused; in the background, apparent time is frozen. + +If [timer](#timer) is called within the callback of another timer, the new timer callback (if eligible as determined by the specified *delay* and *time*) will be invoked immediately at the end of the current frame, rather than waiting until the next frame. Within a frame, timer callbacks are guaranteed to be invoked in the order they were scheduled, regardless of their start time. + +## *timer*.restart(*callback*, *delay*, *time*) {#timer_restart} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timer.js) · Restart a timer with the specified *callback* and optional *delay* and *time*. This is equivalent to stopping this timer and creating a new timer with the specified arguments, although this timer retains the original invocation priority. + +## *timer*.stop() {#timer_stop} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timer.js) · Stops this timer, preventing subsequent callbacks. This method has no effect if the timer has already stopped. + +## timerFlush() {#timerFlush} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timer.js) · Immediately invoke any eligible timer callbacks. Note that zero-delay timers are normally first executed after one frame (~17ms). This can cause a brief flicker because the browser renders the page twice: once at the end of the first event loop, then again immediately on the first timer callback. By flushing the timer queue at the end of the first event loop, you can run any zero-delay timers immediately and avoid the flicker. + +## timeout(*callback*, *delay*, *time*) {#timeout} + +[Source](https://github.com/d3/d3-timer/blob/main/src/timeout.js) · Like [timer](#timer), except the timer automatically [stops](#timer_stop) on its first callback. A suitable replacement for [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout) that is guaranteed to not run in the background. The *callback* is passed the elapsed time. + +## interval(*callback*, *delay*, *time*) {#interval} + +[Source](https://github.com/d3/d3-timer/blob/main/src/interval.js) · Like [timer](#timer), except the *callback* is invoked only every *delay* milliseconds; if *delay* is not specified, this is equivalent to [timer](#timer). A suitable replacement for [setInterval](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) that is guaranteed to not run in the background. The *callback* is passed the elapsed time. diff --git a/docs/d3-transition.md b/docs/d3-transition.md new file mode 100644 index 00000000000000..0990fd57808e7f --- /dev/null +++ b/docs/d3-transition.md @@ -0,0 +1,22 @@ +# d3-transition + +A transition is a [selection](./d3-selection.md)-like interface for animating changes to the DOM. Instead of applying changes instantaneously, transitions smoothly interpolate the DOM from its current state to the desired target state over a given duration. + +To apply a transition, select elements, call [*selection*.transition](./d3-transition/selecting.md#selection_transition), and then make the desired changes. For example: + +```js +d3.select("body") + .transition() + .style("background-color", "red"); +``` + +Transitions support most selection methods (such as [*transition*.attr](./d3-transition/modifying.md#transition_attr) and [*transition*.style](./d3-transition/modifying.md#transition_style) in place of [*selection*.attr](./d3-selection/modifying.md#selection_attr) and [*selection*.style](./d3-selection/modifying.md#selection_style)), but not all methods are supported; for example, you must [append](./d3-selection/modifying.md#selection_append) elements or [bind data](./d3-selection/joining.md) before a transition starts. A [*transition*.remove](./d3-transition/modifying.md#transition_remove) operator is provided for convenient removal of elements when the transition ends. + +To compute intermediate state, transitions leverage a variety of [built-in interpolators](./d3-interpolate.md). [Colors](./d3-interpolate/color.md#interpolateRgb), [numbers](./d3-interpolate/value.md#interpolateNumber), and [transforms](./d3-interpolate/transform.md) are automatically detected. [Strings](./d3-interpolate/value.md#interpolateString) with embedded numbers are also detected, as is common with many styles (such as padding or font sizes) and paths. To specify a custom interpolator, use [*transition*.attrTween](./d3-transition/modifying.md#transition_attrTween), [*transition*.styleTween](./d3-transition/modifying.md#transition_styleTween) or [*transition*.tween](./d3-transition/modifying.md#transition_tween). + +See one of: + +* [Selecting elements](./d3-transition/selecting.md) +* [Modifying elements](./d3-transition/modifying.md) +* [Timing](./d3-transition/timing.md) +* [Control flow](./d3-transition/control-flow.md) diff --git a/docs/d3-transition/control-flow.md b/docs/d3-transition/control-flow.md new file mode 100644 index 00000000000000..5ea0f37fad7f75 --- /dev/null +++ b/docs/d3-transition/control-flow.md @@ -0,0 +1,106 @@ +# Control flow + +For advanced usage, transitions provide methods for custom control flow. + +## The life of a transition + +Immediately after creating a transition, such as by [*selection*.transition](./selecting.md#selection_transition) or [*transition*.transition](./selecting.md#transition_transition), you may configure the transition using methods such as [*transition*.delay](./timing.md#transition_delay), [*transition*.duration](./timing.md#transition_duration), [*transition*.attr](./modifying.md#transition_attr) and [*transition*.style](./modifying.md#transition_style). Methods that specify target values (such as *transition*.attr) are evaluated synchronously; however, methods that require the starting value for interpolation, such as [*transition*.attrTween](./modifying.md#transition_attrTween) and [*transition*.styleTween](./modifying.md#transition_styleTween), must be deferred until the transition starts. + +Shortly after creation, either at the end of the current frame or during the next frame, the transition is scheduled. At this point, the delay and `start` event listeners may no longer be changed; attempting to do so throws an error with the message “too late: already scheduled” (or if the transition has ended, “transition not found”). + +When the transition subsequently starts, it interrupts the active transition of the same name on the same element, if any, dispatching an `interrupt` event to registered listeners. (Note that interrupts happen on start, not creation, and thus even a zero-delay transition will not immediately interrupt the active transition: the old transition is given a final frame. Use [*selection*.interrupt](#selection_interrupt) to interrupt immediately.) The starting transition also cancels any pending transitions of the same name on the same element that were created before the starting transition. The transition then dispatches a `start` event to registered listeners. This is the last moment at which the transition may be modified: the transition’s timing, tweens, and listeners may not be changed when it is running; attempting to do so throws an error with the message “too late: already running” (or if the transition has ended, “transition not found”). The transition initializes its tweens immediately after starting. + +During the frame the transition starts, but *after* all transitions starting this frame have been started, the transition invokes its tweens for the first time. Batching tween initialization, which typically involves reading from the DOM, improves performance by avoiding interleaved DOM reads and writes. + +For each frame that a transition is active, it invokes its tweens with an [eased](./timing.md#transition_ease) *t*-value ranging from 0 to 1. Within each frame, the transition invokes its tweens in the order they were registered. + +When a transition ends, it invokes its tweens a final time with a (non-eased) *t*-value of 1. It then dispatches an `end` event to registered listeners. This is the last moment at which the transition may be inspected: after ending, the transition is deleted from the element, and its configuration is destroyed. (A transition’s configuration is also destroyed on interrupt or cancel.) Attempting to inspect a transition after it is destroyed throws an error with the message “transition not found”. + +## *selection*.interrupt(*name*) {#selection_interrupt} + +[Source](https://github.com/d3/d3-transition/blob/main/src/selection/interrupt.js) · Interrupts the active transition of the specified *name* on the selected elements, and cancels any pending transitions with the specified *name*, if any. If a name is not specified, null is used. + +Interrupting a transition on an element has no effect on any transitions on any descendant elements. For example, an [axis transition](https://github.com/d3/d3-axis) consists of multiple independent, synchronized transitions on the descendants of the axis [G element](https://www.w3.org/TR/SVG/struct.html#Groups) (the tick lines, the tick labels, the domain path, *etc.*). To interrupt the axis transition, you must therefore interrupt the descendants: + +```js +selection.selectAll("*").interrupt(); +``` + +The [universal selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors), `*`, selects all descendant elements. If you also want to interrupt the G element itself: + +```js +selection.interrupt().selectAll("*").interrupt(); +``` + +## interrupt(*node*, *name*) {#interrupt} + +[Source](https://github.com/d3/d3-transition/blob/main/src/interrupt.js) · Interrupts the active transition of the specified *name* on the specified *node*, and cancels any pending transitions with the specified *name*, if any. If a name is not specified, null is used. See also [*selection*.interrupt](#selection_interrupt). + +## *transition*.end() {#transition_end} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/end.js) · Returns a promise that resolves when every selected element finishes transitioning. If any element’s transition is cancelled or interrupted, the promise rejects. + +## *transition*.on(*typenames*, *listener*) {#transition_on} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/on.js) · Adds or removes a *listener* to each selected element for the specified event *typenames*. The *typenames* is one of the following string event types: + +* `start` - when the transition starts. +* `end` - when the transition ends. +* `interrupt` - when the transition is interrupted. +* `cancel` - when the transition is cancelled. + +See [The Life of a Transition](#the-life-of-a-transition) for more. Note that these are *not* native DOM events as implemented by [*selection*.on](../d3-selection/control-flow.md#selection_on) and [*selection*.dispatch](../d3-selection/control-flow.md#selection_dispatch), but transition events! + +The type may be optionally followed by a period (`.`) and a name; the optional name allows multiple callbacks to be registered to receive events of the same type, such as `start.foo` and `start.bar`. To specify multiple typenames, separate typenames with spaces, such as `interrupt end` or `start.foo start.bar`. + +When a specified transition event is dispatched on a selected node, the specified *listener* will be invoked for the transitioning element, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. Listeners always see the latest datum for their element, but the index is a property of the selection and is fixed when the listener is assigned; to update the index, re-assign the listener. + +If an event listener was previously registered for the same *typename* on a selected element, the old listener is removed before the new listener is added. To remove a listener, pass null as the *listener*. To remove all listeners for a given name, pass null as the *listener* and `.foo` as the *typename*, where `foo` is the name; to remove all listeners with no name, specify `.` as the *typename*. + +If a *listener* is not specified, returns the currently-assigned listener for the specified event *typename* on the first (non-null) selected element, if any. If multiple typenames are specified, the first matching listener is returned. + +## *transition*.each(*function*) {#transition_each} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/each.js) · Invokes the specified *function* for each selected element, passing in the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. This method can be used to invoke arbitrary code for each selected element, and is useful for creating a context to access parent and child data simultaneously. Equivalent to [*selection*.each](../d3-selection/control-flow.md#selection_each). + +## *transition*.call(*function*, ...*arguments*) {#transition_call} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/call.js) · Invokes the specified *function* exactly once, passing in this transition along with any optional *arguments*. Returns this transition. This is equivalent to invoking the function by hand but facilitates method chaining. For example, to set several attributes in a reusable function: + +```js +function color(transition, fill, stroke) { + transition + .style("fill", fill) + .style("stroke", stroke); +} +``` + +Now say: + +```js +d3.selectAll("div").transition().call(color, "red", "blue"); +``` + +This is equivalent to: + +```js +color(d3.selectAll("div").transition(), "red", "blue"); +``` + +Equivalent to [*selection*.call](../d3-selection/control-flow.md#selection_call). + +## *transition*.empty() {#transition_empty} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/empty.js) · Returns true if this transition contains no (non-null) elements. Equivalent to [*selection*.empty](../d3-selection/control-flow.md#selection_empty). + +## *transition*.nodes() {#transition_nodes} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/nodes.js) · Returns an array of all (non-null) elements in this transition. Equivalent to [*selection*.nodes](../d3-selection/control-flow.md#selection_nodes). + +## *transition*.node() {#transition_node} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/node.js) · Returns the first (non-null) element in this transition. If the transition is empty, returns null. Equivalent to [*selection*.node](../d3-selection/control-flow.md#selection_node). + +## *transition*.size() {#transition_size} + +[Source](https://github.com/d3/d3-selection/blob/main/src/selection/size.js) · Returns the total number of elements in this transition. Equivalent to [*selection*.size](../d3-selection/control-flow.md#selection_size). diff --git a/docs/d3-transition/modifying.md b/docs/d3-transition/modifying.md new file mode 100644 index 00000000000000..d7ba097925af97 --- /dev/null +++ b/docs/d3-transition/modifying.md @@ -0,0 +1,124 @@ +# Modifying elements + +After selecting elements and creating a transition with [*selection*.transition](./selecting.md#selection_transition), use the transition’s transformation methods to affect document content. + +## *transition*.attr(*name*, *value*) {#transition_attr} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/attr.js) · For each selected element, assigns the [attribute tween](#transition_attrTween) for the attribute with the specified *name* to the specified target *value*. The starting value of the tween is the attribute’s value when the transition starts. The target *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. + +If the target value is null, the attribute is removed when the transition starts. Otherwise, an interpolator is chosen based on the type of the target value, using the following algorithm: + +1. If *value* is a number, use [interpolateNumber](../d3-interpolate/value.md#interpolateNumber). +2. If *value* is a [color](../d3-color.md) or a string coercible to a color, use [interpolateRgb](../d3-interpolate/color.md#interpolateRgb). +3. Use [interpolateString](../d3-interpolate/value.md#interpolateString). + +To apply a different interpolator, use [*transition*.attrTween](#transition_attrTween). + +## *transition*.attrTween(*name*, *factory*) {#transition_attrTween} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/attrTween.js) · If *factory* is specified and not null, assigns the attribute [tween](#transition_tween) for the attribute with the specified *name* to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](../d3-interpolate.md); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](./timing.md#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the attribute value. The interpolator must return a string. (To remove an attribute at the start of a transition, use [*transition*.attr](#transition_attr); to remove an attribute at the end of a transition, use [*transition*.on](./control-flow.md#transition_on) to listen for the *end* event.) + +If the specified *factory* is null, removes the previously-assigned attribute tween of the specified *name*, if any. If *factory* is not specified, returns the current interpolator factory for attribute with the specified *name*, or undefined if no such tween exists. + +For example, to interpolate the fill attribute from red to blue: + +```js +transition.attrTween("fill", () => d3.interpolateRgb("red", "blue")); +``` + +Or to interpolate from the current fill to blue, like [*transition*.attr](#transition_attr): + +```js +transition.attrTween("fill", function() { + return d3.interpolateRgb(this.getAttribute("fill"), "blue"); +}); +``` + +Or to apply a custom rainbow interpolator: + +```js +transition.attrTween("fill", () => (t) => `hsl(${t * 360},100%,50%)`); +``` + +This method is useful to specify a custom interpolator, such as one that understands [SVG paths](https://bl.ocks.org/mbostock/3916621). A useful technique is *data interpolation*, where [interpolateObject](../d3-interpolate/value.md#interpolateObject) is used to interpolate two data values, and the resulting value is then used (say, with a [shape](../d3-shape.md)) to compute the new attribute value. + +## *transition*.style(*name*, *value*, *priority*) {#transition_style} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/style.js) · For each selected element, assigns the [style tween](#transition_styleTween) for the style with the specified *name* to the specified target *value* with the specified *priority*. The starting value of the tween is the style’s inline value if present, and otherwise its computed value, when the transition starts. The target *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. + +If the target value is null, the style is removed when the transition starts. Otherwise, an interpolator is chosen based on the type of the target value, using the following algorithm: + +1. If *value* is a number, use [interpolateNumber](../d3-interpolate/value.md#interpolateNumber). +2. If *value* is a [color](../d3-color.md) or a string coercible to a color, use [interpolateRgb](../d3-interpolate/color.md#interpolateRgb). +3. Use [interpolateString](../d3-interpolate/value.md#interpolateString). + +To apply a different interpolator, use [*transition*.styleTween](#transition_styleTween). + +## *transition*.styleTween(*name*, *factory*, *priority*) {#transition_styleTween} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/styleTween.js) · If *factory* is specified and not null, assigns the style [tween](#transition_tween) for the style with the specified *name* to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](../d3-interpolate.md); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](./timing.md#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the style value with the specified *priority*. The interpolator must return a string. (To remove an style at the start of a transition, use [*transition*.style](#transition_style); to remove an style at the end of a transition, use [*transition*.on](./control-flow.md#transition_on) to listen for the *end* event.) + +If the specified *factory* is null, removes the previously-assigned style tween of the specified *name*, if any. If *factory* is not specified, returns the current interpolator factory for style with the specified *name*, or undefined if no such tween exists. + +For example, to interpolate the fill style from red to blue: + +```js +transition.styleTween("fill", () => d3.interpolateRgb("red", "blue")); +``` + +Or to interpolate from the current fill to blue, like [*transition*.style](#transition_style): + +```js +transition.styleTween("fill", function() { + return d3.interpolateRgb(this.style.fill, "blue"); +}); +``` + +Or to apply a custom rainbow interpolator: + +```js +transition.styleTween("fill", () => (t) => `hsl(${t * 360},100%,50%)`); +``` + +This method is useful to specify a custom interpolator, such as with *data interpolation*, where [interpolateObject](../d3-interpolate/value.md#interpolateObject) is used to interpolate two data values, and the resulting value is then used to compute the new style value. + +## *transition*.text(*value*) {#transition_text} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/text.js) · For each selected element, sets the [text content](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent) to the specified target *value* when the transition starts. The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The function’s return value is then used to set each element’s text content. A null value will clear the content. + +To interpolate text rather than to set it on start, use [*transition*.textTween](#transition_textTween) or append a replacement element and cross-fade opacity. Text is not interpolated by default because it is usually undesirable. + +## *transition*.textTween(*factory*) {#transition_textTween} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/textTween.js), [Examples](https://observablehq.com/@d3/transition-texttween) + +If *factory* is specified and not null, assigns the text [tween](#transition_tween) to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](../d3-interpolate.md); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](./timing.md#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the text. The interpolator must return a string. + +For example, to interpolate the text with integers from 0 to 100: + +```js +transition.textTween(() => d3.interpolateRound(0, 100)); +``` + +If the specified *factory* is null, removes the previously-assigned text tween, if any. If *factory* is not specified, returns the current interpolator factory for text, or undefined if no such tween exists. + +## *transition*.remove() {#transition_remove} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/remove.js) · For each selected element, [removes](./selecting.md#selection_remove) the element when the transition ends, as long as the element has no other active or pending transitions. If the element has other active or pending transitions, does nothing. + +## *transition*.tween(name, value) {#transition_tween} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/tween.js) · For each selected element, assigns the tween with the specified *name* with the specified *value* function. The *value* must be specified as a function that returns a function. When the transition starts, the *value* function is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The returned function is then invoked for each frame of the transition, in order, being passed the [eased](./timing.md#transition_ease) time *t*, typically in the range [0, 1]. If the specified *value* is null, removes the previously-assigned tween of the specified *name*, if any. + +For example, to interpolate the fill attribute to blue, like [*transition*.attr](#transition_attr): + +```js +transition.tween("attr.fill", function() { + const i = d3.interpolateRgb(this.getAttribute("fill"), "blue"); + return function(t) { + this.setAttribute("fill", i(t)); + }; +}); +``` + + diff --git a/docs/d3-transition/selecting.md b/docs/d3-transition/selecting.md new file mode 100644 index 00000000000000..da61578687de73 --- /dev/null +++ b/docs/d3-transition/selecting.md @@ -0,0 +1,153 @@ +# Selecting elements + +Transitions are derived from [selections](../d3-selection.md) via [*selection*.transition](#selection_transition). You can also create a transition on the document root element using [d3.transition](#transition). + +## *selection*.transition(*name*) {#selection_transition} + +[Source](https://github.com/d3/d3-transition/blob/main/src/selection/transition.js) · Returns a new transition on the given *selection* with the specified *name*. If a *name* is not specified, null is used. The new transition is only exclusive with other transitions of the same name. + +If the *name* is a [transition](#transition) instance, the returned transition has the same id and name as the specified transition. If a transition with the same id already exists on a selected element, the existing transition is returned for that element. Otherwise, the timing of the returned transition is inherited from the existing transition of the same id on the nearest ancestor of each selected element. Thus, this method can be used to synchronize a transition across multiple selections, or to re-select a transition for specific elements and modify its configuration. For example: + +```js +const t = d3.transition() + .duration(750) + .ease(d3.easeLinear); + +d3.selectAll(".apple").transition(t) + .style("fill", "red"); + +d3.selectAll(".orange").transition(t) + .style("fill", "orange"); +``` + +If the specified *transition* is not found on a selected node or its ancestors (such as if the transition [already ended](#the-life-of-a-transition)), the default timing parameters are used; however, in a future release, this will likely be changed to throw an error. See [#59](https://github.com/d3/d3-transition/issues/59). + +## transition(*name*) {#transition} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/index.js) · Returns a new transition on the root element, `document.documentElement`, with the specified *name*. If a *name* is not specified, null is used. The new transition is only exclusive with other transitions of the same name. The *name* may also be a [transition](#transition) instance; see [*selection*.transition](#selection_transition). This method is equivalent to: + +```js +d3.selection() + .transition(name) +``` + +This function can also be used to test for transitions (`instanceof d3.transition`) or to extend the transition prototype. + +## *transition*.select(*selector*) {#transition_select} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/select.js) · For each selected element, selects the first descendant element that matches the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.select](../d3-selection/selecting.md#selection_select), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .select(selector) + .transition(transition) +``` + +## *transition*.selectAll(selector) {#transition_selectAll} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/selectAll.js) · For each selected element, selects all descendant elements that match the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.selectAll](../d3-selection/selecting.md#selection_selectAll), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .selectAll(selector) + .transition(transition) +``` + +## *transition*.selectChild(*selector*) {#transition_selectChild} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/select.js) · For each selected element, selects the first child element that matches the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.selectChild](../d3-selection/selecting.md#selection_selectChild), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .selectChild(selector) + .transition(transition) +``` + +## *transition*.selectChildren(*selector*) {#transition_selectChildren} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/selectAll.js) · For each selected element, selects all children that match the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.selectChildren](../d3-selection/selecting.md#selection_selectChildren), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .selectChildren(selector) + .transition(transition) +``` + +## *transition*.filter(*filter*) {#transition_filter} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/filter.js) · For each selected element, selects only the elements that match the specified *filter*, and returns a transition on the resulting selection. The *filter* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.filter](../d3-selection/selecting.md#selection_filter), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .filter(filter) + .transition(transition) +``` + +## *transition*.merge(*other*) {#transition_merge} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/merge.js) · Returns a new transition merging this transition with the specified *other* transition, which must have the same id as this transition. The returned transition has the same number of groups, the same parents, the same name and the same id as this transition. Any missing (null) elements in this transition are filled with the corresponding element, if present (not null), from the *other* transition. + +This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), merging with the selection likewise derived from the *other* transition via [*selection*.merge](../d3-selection/selecting.md#selection_merge), and then creating a new transition via [*selection*.transition](#selection_transition): + +```js +transition + .selection() + .merge(other.selection()) + .transition(transition) +``` + +## *transition*.transition() {#transition_transition} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/transition.js) · Returns a new transition on the same selected elements as this transition, scheduled to start when this transition ends. The new transition inherits a reference time equal to this transition’s time plus its [delay](./timing.md#transition_delay) and [duration](./timing.md#transition_duration). The new transition also inherits this transition’s name, duration, and [easing](./timing.md#transition_ease). This method can be used to schedule a sequence of chained transitions. For example: + +```js +d3.selectAll(".apple") + .transition() // First fade to green. + .style("fill", "green") + .transition() // Then red. + .style("fill", "red") + .transition() // Wait one second. Then brown, and remove. + .delay(1000) + .style("fill", "brown") + .remove(); +``` + +The delay for each transition is relative to its previous transition. Thus, in the above example, apples will stay red for one second before the last transition to brown starts. + +## *transition*.selection() {#transition_selection} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/selection.js) · Returns the [selection](../d3-selection/selecting.md#selection) corresponding to this transition. + +## active(node, name) {#active} + +[Examples](https://observablehq.com/@d3/chained-transitions) · [Source](https://github.com/d3/d3-transition/blob/main/src/active.js) · Returns the active transition on the specified *node* with the specified *name*, if any. If no *name* is specified, null is used. Returns null if there is no such active transition on the specified node. This method is useful for creating chained transitions. For example, to initiate disco mode: + +```js +d3.selectAll("circle").transition() + .delay((d, i) => i * 50) + .on("start", function repeat() { + d3.active(this) + .style("fill", "red") + .transition() + .style("fill", "green") + .transition() + .style("fill", "blue") + .transition() + .on("start", repeat); + }); +``` diff --git a/docs/d3-transition/timing.md b/docs/d3-transition/timing.md new file mode 100644 index 00000000000000..488a8042bcc936 --- /dev/null +++ b/docs/d3-transition/timing.md @@ -0,0 +1,69 @@ +# Timing + +The [easing](#transition_ease), [delay](#transition_delay) and [duration](#transition_duration) of a transition is configurable. For example, a per-element delay can be used to [stagger the reordering](https://observablehq.com/@d3/sortable-bar-chart) of elements, improving perception. See [Animated Transitions in Statistical Data Graphics](http://vis.berkeley.edu/papers/animated_transitions/) for recommendations. + +## *transition*.delay(*value*) {#transition_delay} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/delay.js) · For each selected element, sets the transition delay to the specified *value* in milliseconds. + +```js +transition.delay(250); +``` + +The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The function’s return value is then used to set each element’s transition delay. If a delay is not specified, it defaults to zero. + +If a *value* is not specified, returns the current value of the delay for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element. + +```js +transition.delay() // 250 +``` + +Setting the delay to a multiple of the index `i` is a convenient way to stagger transitions across a set of elements. For example: + +```js +transition.delay((d, i) => i * 10); +``` + +Of course, you can also compute the delay as a function of the data, or [sort the selection](../d3-selection/selecting.md#selection_sort) before computed an index-based delay. + +## *transition*.duration(*value*) {#transition_duration} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/duration.js) · For each selected element, sets the transition duration to the specified *value* in milliseconds. + +```js +transition.duration(750); +``` + +The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. The function’s return value is then used to set each element’s transition duration. If a duration is not specified, it defaults to 250ms. + +If a *value* is not specified, returns the current value of the duration for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element. + +```js +transition.duration() // 750 +``` + +## *transition*.ease(*value*) {#transition_ease} + +[Source](https://github.com/d3/d3-transition/blob/main/src/transition/ease.js) · Specifies the transition [easing function](../d3-ease.md) for all selected elements. + +```js +transition.ease(d3.easeCubic); +``` + +The *value* must be specified as a function. The easing function is invoked for each frame of the animation, being passed the normalized time *t* in the range [0, 1]; it must then return the eased time *tʹ* which is typically also in the range [0, 1]. A good easing function should return 0 if *t* = 0 and 1 if *t* = 1. If an easing function is not specified, it defaults to [easeCubic](../d3-ease.md#easeCubic). + +If a *value* is not specified, returns the current easing function for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element. + +```js +transition.ease() // d3.easeCubic +``` + +## *transition*.easeVarying(*factory*) {#transition_easeVarying} + +[Examples](https://observablehq.com/@d3/transition-easevarying) · [Source](https://github.com/d3/d3-transition/blob/main/src/transition/easeVarying.js) · Specifies a factory for the transition [easing function](../d3-ease.md). + +```js +transition.easeVarying((d) => d3.easePolyIn.exponent(d.exponent)); +``` + +The *factory* must be a function. It is invoked for each node of the selection, being passed the current datum (*d*), the current index (*i*), and the current group (*nodes*), with *this* as the current DOM element. It must return an easing function. diff --git a/docs/d3-zoom.md b/docs/d3-zoom.md new file mode 100644 index 00000000000000..ff406e77d9cec1 --- /dev/null +++ b/docs/d3-zoom.md @@ -0,0 +1,373 @@ +# d3-zoom + +[Examples](https://observablehq.com/collection/@d3/d3-zoom) · [Panning and zooming](https://observablehq.com/@d3/zoomable-scatterplot) let the user focus on a region of interest by restricting the view. It uses direct manipulation: click-and-drag to pan (translate), spin the wheel to zoom (scale), or pinch with touch. Panning and zooming are widely used in web-based mapping, but can also be used in visualization such as dense time series and scatterplots. + +The zoom behavior is a flexible abstraction, handling a surprising variety of input modalities and browser quirks. The zoom behavior is agnostic about the DOM, so you can use it with HTML, [SVG](https://observablehq.com/@d3/zoom), or [Canvas](https://observablehq.com/@d3/zoom-canvas). You can use d3-zoom with [d3-scale](./d3-scale.md) and [d3-axis](./d3-axis.md) to [zoom axes](https://observablehq.com/@d3/pan-zoom-axes). You can restrict zooming using [*zoom*.scaleExtent](#zoom_scaleExtent) and panning using [*zoom*.translateExtent](#zoom_translateExtent). You can combine d3-zoom with other behaviors such as [d3-drag](./d3-drag.md) for [dragging](https://observablehq.com/@d3/drag-zoom) and [d3-brush](./d3-brush.md) for [focus + context](https://observablehq.com/@d3/focus-context). + +The zoom behavior can be controlled programmatically using [*zoom*.transform](#zoom_transform), allowing you to implement user interface controls which drive the display or to stage [animated tours](https://observablehq.com/@d3/scatterplot-tour) through your data. [Smooth zoom transitions](https://observablehq.com/@d3/programmatic-zoom) are based on [“Smooth and efficient zooming and panning”](http://www.win.tue.nl/~vanwijk/zoompan.pdf) by Jarke J. van Wijk and Wim A.A. Nuij. + +See also [d3-tile](https://github.com/d3/d3-tile) for examples panning and zooming maps. + +## zoom() {#zoom} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · Creates a new zoom behavior. The returned behavior, [*zoom*](#_zoom), is both an object and a function, and is typically applied to selected elements via [*selection*.call](./d3-selection/control-flow.md#selection_call). + +## *zoom*(*selection*) {#_zoom} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · Applies this zoom behavior to the specified [*selection*](./d3-selection.md), binding the necessary event listeners to allow panning and zooming, and initializing the [zoom transform](#zoomTransform) on each selected element to the identity transform if not already defined. + +This function is typically not invoked directly, and is instead invoked via [*selection*.call](./d3-selection/control-flow.md#selection_call). For example, to instantiate a zoom behavior and apply it to a selection: + +```js +selection.call(d3.zoom().on("zoom", zoomed)); +``` + +Internally, the zoom behavior uses [*selection*.on](./d3-selection/events.md#selection_on) to bind the necessary event listeners for zooming. The listeners use the name `.zoom`, so you can subsequently unbind the zoom behavior as follows: + +```js +selection.on(".zoom", null); +``` + +To disable just wheel-driven zooming (say to not interfere with native scrolling), you can remove the zoom behavior’s wheel event listener after applying the zoom behavior to the selection: + +```js +selection + .call(zoom) + .on("wheel.zoom", null); +``` + +Alternatively, use [*zoom*.filter](#zoom_filter) for greater control over which events can initiate zoom gestures. + +Applying the zoom behavior also sets the [-webkit-tap-highlight-color](https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/AdjustingtheTextSize/AdjustingtheTextSize.html#//apple_ref/doc/uid/TP40006510-SW5) style to transparent, disabling the tap highlight on iOS. If you want a different tap highlight color, remove or re-apply this style after applying the drag behavior. + +The zoom behavior stores the zoom state on the element to which the zoom behavior was applied, not on the zoom behavior itself. This allows the zoom behavior to be applied to many elements simultaneously with independent zooming. The zoom state can change either on user interaction or programmatically via [*zoom*.transform](#zoom_transform). + +To retrieve the zoom state, use *event*.transform on the current [zoom event](#zoom-events) within a zoom event listener (see [*zoom*.on](#zoom_on)), or use [zoomTransform](#zoomTransform) for a given node. The latter is useful for modifying the zoom state programmatically, say to implement buttons for zooming in and out. + +## *zoom*.transform(*selection*, *transform*, *point*) {#zoom_transform} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *selection* is a selection, sets the [current zoom transform](#zoomTransform) of the selected elements to the specified *transform*, instantaneously emitting start, zoom and end [events](#zoom-events). + +If *selection* is a transition, defines a “zoom” tween to the specified *transform* using [interpolateZoom](./d3-interpolate/zoom.md#interpolateZoom), emitting a start event when the transition starts, zoom events for each tick of the transition, and then an end event when the transition ends (or is interrupted). The transition will attempt to minimize the visual movement around the specified *point*; if the *point* is not specified, it defaults to the center of the viewport [extent](#zoom_extent). + +The *transform* may be specified either as a [zoom transform](#zoomTransform) or as a function that returns a zoom transform; similarly, the *point* may be specified either as a two-element array [*x*, *y*] or a function that returns such an array. If a function, it is invoked for each selected element, being passed the current event (`event`) and datum `d`, with the `this` context as the current DOM element. + +This function is typically not invoked directly, and is instead invoked via [*selection*.call](./d3-selection/control-flow.md#selection_call) or [*transition*.call](./d3-transition/control-flow.md#transition_call). For example, to reset the zoom transform to the [identity transform](#zoomIdentity) instantaneously: + +```js +selection.call(zoom.transform, d3.zoomIdentity); +``` + +To smoothly reset the zoom transform to the identity transform over 750 milliseconds: + +```js +selection.transition().duration(750).call(zoom.transform, d3.zoomIdentity); +``` + +This method requires that you specify the new zoom transform completely, and does not enforce the defined [scale extent](#zoom_scaleExtent) and [translate extent](#zoom_translateExtent), if any. To derive a new transform from the existing transform, and to enforce the scale and translate extents, see the convenience methods [*zoom*.translateBy](#zoom_translateBy), [*zoom*.scaleBy](#zoom_scaleBy) and [*zoom*.scaleTo](#zoom_scaleTo). + +## *zoom*.translateBy(*selection*, *x*, *y*) {#zoom_translateBy} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *selection* is a selection, [translates](#transform_translate) the [current zoom transform](#zoomTransform) of the selected elements by *x* and *y*, such that the new *tx1* = *tx0* + *kx* and *ty1* = *ty0* + *ky*. If *selection* is a transition, defines a “zoom” tween translating the current transform. This method is a convenience method for [*zoom*.transform](#zoom_transform). The *x* and *y* translation amounts may be specified either as numbers or as functions that return numbers. If a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. + +## *zoom*.translateTo(*selection*, *x*, *y*, *p*) {#zoom_translateTo} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *selection* is a selection, [translates](#transform_translate) the [current zoom transform](#zoomTransform) of the selected elements such that the given position ⟨*x*,*y*⟩ appears at given point *p*. The new *tx* = *px* - *kx* and *ty* = *py* - *ky*. If *p* is not specified, it defaults to the center of the viewport [extent](#zoom_extent). If *selection* is a transition, defines a “zoom” tween translating the current transform. This method is a convenience method for [*zoom*.transform](#zoom_transform). The *x* and *y* coordinates may be specified either as numbers or as functions that returns numbers; similarly the *p* point may be specified either as a two-element array [*px*,*py*] or a function. If a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. + +## *zoom*.scaleBy(*selection*, *k*, *p*) {#zoom_scaleBy} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *selection* is a selection, [scales](#transform_scale) the [current zoom transform](#zoomTransform) of the selected elements by *k*, such that the new *k₁* = *k₀k*. The reference point *p* does move. If *p* is not specified, it defaults to the center of the viewport [extent](#zoom_extent). If *selection* is a transition, defines a “zoom” tween translating the current transform. This method is a convenience method for [*zoom*.transform](#zoom_transform). The *k* scale factor may be specified either as a number or a function that returns a number; similarly the *p* point may be specified either as a two-element array [*px*,*py*] or a function. If a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. + +## *zoom*.scaleTo(*selection*, *k*, *p*) {#zoom_scaleTo} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *selection* is a selection, [scales](#transform_scale) the [current zoom transform](#zoomTransform) of the selected elements to *k*, such that the new *k₁* = *k*. The reference point *p* does move. If *p* is not specified, it defaults to the center of the viewport [extent](#zoom_extent). If *selection* is a transition, defines a “zoom” tween translating the current transform. This method is a convenience method for [*zoom*.transform](#zoom_transform). The *k* scale factor may be specified either as a number or a function that returns a number; similarly the *p* point may be specified either as a two-element array [*px*,*py*] or a function. If a function, it is invoked for each selected element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. + +## *zoom*.constrain(*constrain*) {#zoom_constrain} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *constrain* is specified, sets the transform constraint function to the specified function and returns the zoom behavior. If *constrain* is not specified, returns the current constraint function, which defaults to: + +```js +function constrain(transform, extent, translateExtent) { + var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], + dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], + dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], + dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; + return transform.translate( + dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), + dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) + ); +} +``` + +The constraint function must return a [*transform*]#zoomTransform) given the current *transform*, [viewport extent](#zoom_extent) and [translate extent](#zoom_translateExtent). The default implementation attempts to ensure that the viewport extent does not go outside the translate extent. + +## *zoom*.filter(*filter*) {#zoom_filter} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *filter* is specified, sets the filter to the specified function and returns the zoom behavior. If *filter* is not specified, returns the current filter, which defaults to: + +```js +function filter(event) { + return (!event.ctrlKey || event.type === 'wheel') && !event.button; +} +``` + +The filter is passed the current event (`event`) and datum `d`, with the `this` context as the current DOM element. If the filter returns falsey, the initiating event is ignored and no zoom gestures are started. Thus, the filter determines which input events are ignored. The default filter ignores mousedown events on secondary buttons, since those buttons are typically intended for other purposes, such as the context menu. + +## *zoom*.touchable(*touchable*) {#zoom_touchable} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *touchable* is specified, sets the touch support detector to the specified function and returns the zoom behavior. If *touchable* is not specified, returns the current touch support detector, which defaults to: + +```js +function touchable() { + return navigator.maxTouchPoints || ("ontouchstart" in this); +} +``` + +Touch event listeners are only registered if the detector returns truthy for the corresponding element when the zoom behavior is [applied](#_zoom). The default detector works well for most browsers that are capable of touch input, but not all; Chrome’s mobile device emulator, for example, fails detection. + +## *zoom*.wheelDelta(*delta*) {#zoom_wheelDelta} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *delta* is specified, sets the wheel delta function to the specified function and returns the zoom behavior. If *delta* is not specified, returns the current wheel delta function, which defaults to: + +```js +function wheelDelta(event) { + return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1); +} +``` + +The value *Δ* returned by the wheel delta function determines the amount of scaling applied in response to a [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent). The scale factor [*transform*.k](#zoomTransform) is multiplied by 2*Δ*; for example, a *Δ* of +1 doubles the scale factor, *Δ* of -1 halves the scale factor. + +## *zoom*.extent(*extent*) {#zoom_extent} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *extent* is specified, sets the viewport extent to the specified array of points [[*x0*, *y0*], [*x1*, *y1*]], where [*x0*, *y0*] is the top-left corner of the viewport and [*x1*, *y1*] is the bottom-right corner of the viewport, and returns this zoom behavior. The *extent* may also be specified as a function which returns such an array; if a function, it is invoked for each selected element, being passed the current datum `d`, with the `this` context as the current DOM element. + +If *extent* is not specified, returns the current extent accessor, which defaults to [[0, 0], [*width*, *height*]] where *width* is the [client width](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth) of the element and *height* is its [client height](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight); for SVG elements, the nearest ancestor SVG element’s viewBox, or [width](https://www.w3.org/TR/SVG/struct.html#SVGElementWidthAttribute) and [height](https://www.w3.org/TR/SVG/struct.html#SVGElementHeightAttribute) attributes, are used. Alternatively, consider using [*element*.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). + +The viewport extent affects several functions: the center of the viewport remains fixed during changes by [*zoom*.scaleBy](#zoom_scaleBy) and [*zoom*.scaleTo](#zoom_scaleTo); the viewport center and dimensions affect the path chosen by [interpolateZoom](./d3-interpolate/zoom.md#interpolateZoom); and the viewport extent is needed to enforce the optional [translate extent](#zoom_translateExtent). + +## *zoom*.scaleExtent(*extent*) {#zoom_scaleExtent} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *extent* is specified, sets the scale extent to the specified array of numbers [*k0*, *k1*] where *k0* is the minimum allowed scale factor and *k1* is the maximum allowed scale factor, and returns this zoom behavior. If *extent* is not specified, returns the current scale extent, which defaults to [0, ∞]. The scale extent restricts zooming in and out. It is enforced on interaction and when using [*zoom*.scaleBy](#zoom_scaleBy), [*zoom*.scaleTo](#zoom_scaleTo) and [*zoom*.translateBy](#zoom_translateBy); however, it is not enforced when using [*zoom*.transform](#zoom_transform) to set the transform explicitly. + +If the user tries to zoom by wheeling when already at the corresponding limit of the scale extent, the wheel events will be ignored and not initiate a zoom gesture. This allows the user to scroll down past a zoomable area after zooming in, or to scroll up after zooming out. If you would prefer to always prevent scrolling on wheel input regardless of the scale extent, register a wheel event listener to prevent the browser default behavior: + +```js +selection + .call(zoom) + .on("wheel", event => event.preventDefault()); +``` + +## *zoom*.translateExtent(*extent*) {#zoom_translateExtent} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *extent* is specified, sets the translate extent to the specified array of points [[*x0*, *y0*], [*x1*, *y1*]], where [*x0*, *y0*] is the top-left corner of the world and [*x1*, *y1*] is the bottom-right corner of the world, and returns this zoom behavior. If *extent* is not specified, returns the current translate extent, which defaults to [[-∞, -∞], [+∞, +∞]]. The translate extent restricts panning, and may cause translation on zoom out. It is enforced on interaction and when using [*zoom*.scaleBy](#zoom_scaleBy), [*zoom*.scaleTo](#zoom_scaleTo) and [*zoom*.translateBy](#zoom_translateBy); however, it is not enforced when using [*zoom*.transform](#zoom_transform) to set the transform explicitly. + +## *zoom*.clickDistance(*distance*) {#zoom_clickDistance} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *distance* is specified, sets the maximum distance that the mouse can move between mousedown and mouseup that will trigger a subsequent click event. If at any point between mousedown and mouseup the mouse is greater than or equal to *distance* from its position on mousedown, the click event following mouseup will be suppressed. If *distance* is not specified, returns the current distance threshold, which defaults to zero. The distance threshold is measured in client coordinates ([*event*.clientX](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX) and [*event*.clientY](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY)). + +## *zoom*.tapDistance(*distance*) {#zoom_tapDistance} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *distance* is specified, sets the maximum distance that a double-tap gesture can move between first touchstart and second touchend that will trigger a subsequent double-click event. If *distance* is not specified, returns the current distance threshold, which defaults to 10. The distance threshold is measured in client coordinates ([*event*.clientX](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX) and [*event*.clientY](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY)). + +## *zoom*.duration(*duration*) {#zoom_duration} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *duration* is specified, sets the duration for zoom transitions on double-click and double-tap to the specified number of milliseconds and returns the zoom behavior. If *duration* is not specified, returns the current duration, which defaults to 250 milliseconds. If the duration is not greater than zero, double-click and -tap trigger instantaneous changes to the zoom transform rather than initiating smooth transitions. + +To disable double-click and double-tap transitions, you can remove the zoom behavior’s dblclick event listener after applying the zoom behavior to the selection: + +```js +selection + .call(zoom) + .on("dblclick.zoom", null); +``` + +## *zoom*.interpolate(*interpolate*) {#zoom_interpolate} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *interpolate* is specified, sets the interpolation factory for zoom transitions to the specified function. If *interpolate* is not specified, returns the current interpolation factory, which defaults to [interpolateZoom](./d3-interpolate/zoom.md#interpolateZoom) to implement smooth zooming. To apply direct interpolation between two views, try [interpolate](./d3-interpolate/value.md#interpolate) instead. + +## *zoom*.on(*typenames*, *listener*) {#zoom_on} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/zoom.js) · If *listener* is specified, sets the event *listener* for the specified *typenames* and returns the zoom behavior. If an event listener was already registered for the same type and name, the existing listener is removed before the new listener is added. If *listener* is null, removes the current event listeners for the specified *typenames*, if any. If *listener* is not specified, returns the first currently-assigned listener matching the specified *typenames*, if any. When a specified event is dispatched, each *listener* will be invoked with the same context and arguments as [*selection*.on](./d3-selection/control-flow.md#selection_on) listeners: the current event (`event`) and datum `d`, with the `this` context as the current DOM element. + +The *typenames* is a string containing one or more *typename* separated by whitespace. Each *typename* is a *type*, optionally followed by a period (`.`) and a *name*, such as `zoom.foo` and `zoom.bar`; the name allows multiple listeners to be registered for the same *type*. The *type* must be one of the following: + +* `start` - after zooming begins (such as on mousedown). +* `zoom` - after a change to the zoom transform (such as on mousemove). +* `end` - after zooming ends (such as on mouseup ). + +See [*dispatch*.on](./d3-dispatch.md#dispatch_on) for more. + +## Zoom events + +When a [zoom event listener](#zoom_on) is invoked, it receives the current zoom event as a first argument. The *event* object exposes several fields: + +* *event*.target - the associated [zoom behavior](#zoom). +* *event*.type - the string “start”, “zoom” or “end”; see [*zoom*.on](#zoom_on). +* *event*.transform - the current [zoom transform](#zoomTransform). +* *event*.sourceEvent - the underlying input event, such as mousemove or touchmove. + +The zoom behavior handles a variety of interaction events: + +| Event | Listening Element | Zoom Event | Default Prevented? | +| ------------ | ----------------- | ----------- | ------------------ | +| mousedown⁵ | selection | start | no¹ | +| mousemove² | window¹ | zoom | yes | +| mouseup² | window¹ | end | yes | +| dragstart² | window | - | yes | +| selectstart² | window | - | yes | +| click³ | window | - | yes | +| dblclick | selection | *multiple*⁶ | yes | +| wheel⁸ | selection | zoom⁷ | yes | +| touchstart | selection | *multiple*⁶ | no⁴ | +| touchmove | selection | zoom | yes | +| touchend | selection | end | no⁴ | +| touchcancel | selection | end | no⁴ | + +The propagation of all consumed events is [immediately stopped](https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation). + +¹ Necessary to capture events outside an iframe; see [d3-drag#9](https://github.com/d3/d3-drag/issues/9). +
² Only applies during an active, mouse-based gesture; see [d3-drag#9](https://github.com/d3/d3-drag/issues/9). +
³ Only applies immediately after some mouse-based gestures; see [*zoom*.clickDistance](#zoom_clickDistance). +
⁴ Necessary to allow [click emulation](https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW7) on touch input; see [d3-drag#9](https://github.com/d3/d3-drag/issues/9). +
⁵ Ignored if within 500ms of a touch gesture ending; assumes [click emulation](https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW7). +
⁶ Double-click and double-tap initiate a transition that emits start, zoom and end events; see [*zoom*.tapDistance](#zoom_tapDistance). +
⁷ The first wheel event emits a start event; an end event is emitted when no wheel events are received for 150ms. +
⁸ Ignored if already at the corresponding limit of the [scale extent](#zoom_scaleExtent). + +## zoomTransform(*node*) {#zoomTransform} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the current transform for the specified *node*. Note that *node* should typically be a DOM element, not a *selection*. (A selection may consist of multiple nodes, in different states, and this function only returns a single transform.) If you have a selection, call [*selection*.node](./d3-selection/control-flow.md#selection_node) first: + +```js +var transform = d3.zoomTransform(selection.node()); +``` + +In the context of an [event listener](./d3-selection/events.md#selection_on), the *node* is typically the element that received the input event (which should be equal to [*event*.transform](#zoom-events)), *this*: + +```js +var transform = d3.zoomTransform(this); +``` + +Internally, an element’s transform is stored as *element*.\_\_zoom; however, you should use this method rather than accessing it directly. If the given *node* has no defined transform, returns the transform of the closest ancestor, or if none exists, the [identity transformation](#zoomIdentity). The returned transform represents a two-dimensional [transformation matrix](https://en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations) of the form: + +*k* 0 *tx* +
0 *k* *ty* +
0 0 1 + +(This matrix is capable of representing only scale and translation; a future release may also allow rotation, though this would probably not be a backwards-compatible change.) The position ⟨*x*,*y*⟩ is transformed to ⟨*xk* + *tx*,*yk* + *ty*⟩. The transform object exposes the following properties: + +* *transform*.x - the translation amount *tx* along the *x*-axis. +* *transform*.y - the translation amount *ty* along the *y*-axis. +* *transform*.k - the scale factor *k*. + +These properties should be considered read-only; instead of mutating a transform, use [*transform*.scale](#transform_scale) and [*transform*.translate](#transform_translate) to derive a new transform. Also see [*zoom*.scaleBy](#zoom_scaleBy), [*zoom*.scaleTo](#zoom_scaleTo) and [*zoom*.translateBy](#zoom_translateBy) for convenience methods on the zoom behavior. To create a transform with a given *k*, *tx*, and *ty*: + +```js +var t = d3.zoomIdentity.translate(x, y).scale(k); +``` + +To apply the transformation to a [Canvas 2D context](https://www.w3.org/TR/2dcontext/), use [*context*.translate](https://www.w3.org/TR/2dcontext/#dom-context-2d-translate) followed by [*context*.scale](https://www.w3.org/TR/2dcontext/#dom-context-2d-scale): + +```js +context.translate(transform.x, transform.y); +context.scale(transform.k, transform.k); +``` + +Similarly, to apply the transformation to HTML elements via [CSS](https://www.w3.org/TR/css-transforms-1/): + +```js +div.style("transform", "translate(" + transform.x + "px," + transform.y + "px) scale(" + transform.k + ")"); +div.style("transform-origin", "0 0"); +``` + +To apply the transformation to [SVG](https://www.w3.org/TR/SVG/coords.html#TransformAttribute): + +```js +g.attr("transform", "translate(" + transform.x + "," + transform.y + ") scale(" + transform.k + ")"); +``` + +Or more simply, taking advantage of [*transform*.toString](#transform_toString): + +```js +g.attr("transform", transform); +``` + +Note that the order of transformations matters! The translate must be applied before the scale. + +## zoomIdentity {#zoomIdentity} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · The identity transform, where *k* = 1, *tx* = *ty* = 0. + +## new d3.ZoomTransform(*k*, *x*, *y*) {#ZoomTransform} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a transform with scale *k* and translation (*x*, *y*). + +## *transform*.scale(*k*) {#transform_scale} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a transform whose scale *k₁* is equal to *k₀k*, where *k₀* is this transform’s scale. + +## *transform*.translate(*x*, *y*) {#transform_translate} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a transform whose translation *tx1* and *ty1* is equal to *tx0* + *tk x* and *ty0* + *tk y*, where *tx0* and *ty0* is this transform’s translation and *tk* is this transform’s scale. + +## *transform*.apply(*point*) {#transform_apply} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the transformation of the specified *point* which is a two-element array of numbers [*x*, *y*]. The returned point is equal to [*xk* + *tx*, *yk* + *ty*]. + +## *transform*.applyX(*x*) {#transform_applyX} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the transformation of the specified *x*-coordinate, *xk* + *tx*. + +## *transform*.applyY(*y*) {#transform_applyY} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the transformation of the specified y coordinate, *yk* + *ty*. + +## *transform*.invert(*point*) {#transform_invert} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the inverse transformation of the specified *point* which is a two-element array of numbers [*x*, *y*]. The returned point is equal to [(*x* - *tx*) / *k*, (*y* - *ty*) / *k*]. + +## *transform*.invertX(*x*) {#transform_invertX} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the inverse transformation of the specified *x*-coordinate, (*x* - *tx*) / *k*. + +## *transform*.invertY(*y*) {#transform_invertY} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns the inverse transformation of the specified y coordinate, (*y* - *ty*) / *k*. + +## *transform*.rescaleX(*x*) {#transform_rescaleX} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a [copy](https://github.com/d3/d3-scale#continuous_copy) of the [continuous scale](https://github.com/d3/d3-scale#continuous-scales) *x* whose [domain](https://github.com/d3/d3-scale#continuous_domain) is transformed. This is implemented by first applying the [inverse *x*-transform](#transform_invertX) on the scale’s [range](https://github.com/d3/d3-scale#continuous_range), and then applying the [inverse scale](https://github.com/d3/d3-scale#continuous_invert) to compute the corresponding domain: + +```js +function rescaleX(x) { + var range = x.range().map(transform.invertX, transform), + domain = range.map(x.invert, x); + return x.copy().domain(domain); +} +``` + +The scale *x* must use [interpolateNumber](https://github.com/d3/d3-interpolate#interpolateNumber); do not use [*continuous*.rangeRound](https://github.com/d3/d3-scale#continuous_rangeRound) as this reduces the accuracy of [*continuous*.invert](https://github.com/d3/d3-scale#continuous_invert) and can lead to an inaccurate rescaled domain. This method does not modify the input scale *x*; *x* thus represents the untransformed scale, while the returned scale represents its transformed view. + +## *transform*.rescaleY(*y*) {#transform_rescaleY} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a [copy](https://github.com/d3/d3-scale#continuous_copy) of the [continuous scale](https://github.com/d3/d3-scale#continuous-scales) *y* whose [domain](https://github.com/d3/d3-scale#continuous_domain) is transformed. This is implemented by first applying the [inverse *y*-transform](#transform_invertY) on the scale’s [range](https://github.com/d3/d3-scale#continuous_range), and then applying the [inverse scale](https://github.com/d3/d3-scale#continuous_invert) to compute the corresponding domain: + +```js +function rescaleY(y) { + var range = y.range().map(transform.invertY, transform), + domain = range.map(y.invert, y); + return y.copy().domain(domain); +} +``` + +The scale *y* must use [interpolateNumber](https://github.com/d3/d3-interpolate#interpolateNumber); do not use [*continuous*.rangeRound](https://github.com/d3/d3-scale#continuous_rangeRound) as this reduces the accuracy of [*continuous*.invert](https://github.com/d3/d3-scale#continuous_invert) and can lead to an inaccurate rescaled domain. This method does not modify the input scale *y*; *y* thus represents the untransformed scale, while the returned scale represents its transformed view. + +## *transform*.toString() {#transform_toString} + +[Source](https://github.com/d3/d3-zoom/blob/main/src/transform.js) · Returns a string representing the [SVG transform](https://www.w3.org/TR/SVG/coords.html#TransformAttribute) corresponding to this transform. Implemented as: + +```js +function toString() { + return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; +} +``` diff --git a/docs/data/riaa-us-revenue.csv b/docs/data/riaa-us-revenue.csv new file mode 100644 index 00000000000000..a09401f0af6af7 --- /dev/null +++ b/docs/data/riaa-us-revenue.csv @@ -0,0 +1,1082 @@ +format,group,year,revenue +8 - Track,Tape,1973-01-01,2815.68 +8 - Track,Tape,1974-01-01,2848.01 +8 - Track,Tape,1975-01-01,2770.41 +8 - Track,Tape,1976-01-01,3047.22 +8 - Track,Tape,1977-01-01,3421.42 +8 - Track,Tape,1978-01-01,3717.22 +8 - Track,Tape,1979-01-01,2409.73 +8 - Track,Tape,1980-01-01,1635.09 +8 - Track,Tape,1981-01-01,880.315082508 +8 - Track,Tape,1982-01-01,95.374632124 +8 - Track,Tape,1983-01-01,0 +8 - Track,Tape,1984-01-01,0 +8 - Track,Tape,1985-01-01,0 +8 - Track,Tape,1986-01-01,0 +8 - Track,Tape,1987-01-01,0 +8 - Track,Tape,1988-01-01,0 +8 - Track,Tape,1989-01-01,0 +8 - Track,Tape,1990-01-01,0 +8 - Track,Tape,1991-01-01,0 +8 - Track,Tape,1992-01-01,0 +8 - Track,Tape,1993-01-01,0 +8 - Track,Tape,1994-01-01,0 +8 - Track,Tape,1995-01-01,0 +8 - Track,Tape,1996-01-01,0 +8 - Track,Tape,1997-01-01,0 +8 - Track,Tape,1998-01-01,0 +8 - Track,Tape,1999-01-01,0 +8 - Track,Tape,2000-01-01,0 +8 - Track,Tape,2001-01-01,0 +8 - Track,Tape,2002-01-01,0 +8 - Track,Tape,2003-01-01,0 +8 - Track,Tape,2004-01-01,0 +8 - Track,Tape,2005-01-01,0 +8 - Track,Tape,2006-01-01,0 +8 - Track,Tape,2007-01-01,0 +8 - Track,Tape,2008-01-01,0 +8 - Track,Tape,2009-01-01,0 +8 - Track,Tape,2010-01-01,0 +8 - Track,Tape,2011-01-01,0 +8 - Track,Tape,2012-01-01,0 +8 - Track,Tape,2013-01-01,0 +8 - Track,Tape,2014-01-01,0 +8 - Track,Tape,2015-01-01,0 +8 - Track,Tape,2016-01-01,0 +8 - Track,Tape,2017-01-01,0 +8 - Track,Tape,2018-01-01,0 +8 - Track,Tape,2019-01-01,0 +CD,Disc,1973-01-01,0 +CD,Disc,1974-01-01,0 +CD,Disc,1975-01-01,0 +CD,Disc,1976-01-01,0 +CD,Disc,1977-01-01,0 +CD,Disc,1978-01-01,0 +CD,Disc,1979-01-01,0 +CD,Disc,1980-01-01,0 +CD,Disc,1981-01-01,0 +CD,Disc,1982-01-01,0 +CD,Disc,1983-01-01,44.14960241 +CD,Disc,1984-01-01,254.180636189 +CD,Disc,1985-01-01,925.449828067 +CD,Disc,1986-01-01,2169.59 +CD,Disc,1987-01-01,3586.4 +CD,Disc,1988-01-01,4516.46 +CD,Disc,1989-01-01,5335.19 +CD,Disc,1990-01-01,6751.54 +CD,Disc,1991-01-01,8142.17 +CD,Disc,1992-01-01,9706.04 +CD,Disc,1993-01-01,11520.31 +CD,Disc,1994-01-01,14601.95 +CD,Disc,1995-01-01,15730.96 +CD,Disc,1996-01-01,16187.86 +CD,Disc,1997-01-01,15793.55 +CD,Disc,1998-01-01,17905.4 +CD,Disc,1999-01-01,19667.33 +CD,Disc,2000-01-01,19618.93 +CD,Disc,2001-01-01,18635.68 +CD,Disc,2002-01-01,17115.94 +CD,Disc,2003-01-01,15607.44 +CD,Disc,2004-01-01,15491.68 +CD,Disc,2005-01-01,13771.44 +CD,Disc,2006-01-01,11885.77 +CD,Disc,2007-01-01,9190.7 +CD,Disc,2008-01-01,6496.78 +CD,Disc,2009-01-01,5146.58 +CD,Disc,2010-01-01,3973.86 +CD,Disc,2011-01-01,3524.14 +CD,Disc,2012-01-01,2767.78 +CD,Disc,2013-01-01,2349.53 +CD,Disc,2014-01-01,1918.22 +CD,Disc,2015-01-01,1558.63 +CD,Disc,2016-01-01,1204.5 +CD,Disc,2017-01-01,1102.77 +CD,Disc,2018-01-01,711.041239463 +CD,Disc,2019-01-01,614.509779894 +CD Single,Disc,1973-01-01,0 +CD Single,Disc,1974-01-01,0 +CD Single,Disc,1975-01-01,0 +CD Single,Disc,1976-01-01,0 +CD Single,Disc,1977-01-01,0 +CD Single,Disc,1978-01-01,0 +CD Single,Disc,1979-01-01,0 +CD Single,Disc,1980-01-01,0 +CD Single,Disc,1981-01-01,0 +CD Single,Disc,1982-01-01,0 +CD Single,Disc,1983-01-01,0 +CD Single,Disc,1984-01-01,0 +CD Single,Disc,1985-01-01,0 +CD Single,Disc,1986-01-01,0 +CD Single,Disc,1987-01-01,0 +CD Single,Disc,1988-01-01,21.178686391 +CD Single,Disc,1989-01-01,1.443225 +CD Single,Disc,1990-01-01,11.736358072 +CD Single,Disc,1991-01-01,65.885174009 +CD Single,Disc,1992-01-01,82.181972202 +CD Single,Disc,1993-01-01,81.031768858 +CD Single,Disc,1994-01-01,96.77704251 +CD Single,Disc,1995-01-01,186.039116142 +CD Single,Disc,1996-01-01,299.977397706 +CD Single,Disc,1997-01-01,434.377968224 +CD Single,Disc,1998-01-01,334.393082209 +CD Single,Disc,1999-01-01,341.285214886 +CD Single,Disc,2000-01-01,211.859778746 +CD Single,Disc,2001-01-01,114.619795596 +CD Single,Disc,2002-01-01,27.853680934 +CD Single,Disc,2003-01-01,50.019847826 +CD Single,Disc,2004-01-01,20.300979354 +CD Single,Disc,2005-01-01,14.268619048 +CD Single,Disc,2006-01-01,9.764677083 +CD Single,Disc,2007-01-01,15.045901592 +CD Single,Disc,2008-01-01,4.156001078 +CD Single,Disc,2009-01-01,3.694172567 +CD Single,Disc,2010-01-01,3.400068331 +CD Single,Disc,2011-01-01,3.977965137 +CD Single,Disc,2012-01-01,3.59119832 +CD Single,Disc,2013-01-01,2.684056894 +CD Single,Disc,2014-01-01,3.905023683 +CD Single,Disc,2015-01-01,1.291079457 +CD Single,Disc,2016-01-01,0.280361354 +CD Single,Disc,2017-01-01,1.542258972 +CD Single,Disc,2018-01-01,0.157981482 +CD Single,Disc,2019-01-01,0.181678878 +Cassette,Tape,1973-01-01,437.611081081 +Cassette,Tape,1974-01-01,452.196559838 +Cassette,Tape,1975-01-01,469.496498141 +Cassette,Tape,1976-01-01,654.643671353 +Cassette,Tape,1977-01-01,1053 +Cassette,Tape,1978-01-01,1763.72 +Cassette,Tape,1979-01-01,2044.55 +Cassette,Tape,1980-01-01,2187.36 +Cassette,Tape,1981-01-01,2989.13 +Cassette,Tape,1982-01-01,3667.95 +Cassette,Tape,1983-01-01,4648.29 +Cassette,Tape,1984-01-01,5865.84 +Cassette,Tape,1985-01-01,5729.71 +Cassette,Tape,1986-01-01,5830.43 +Cassette,Tape,1987-01-01,6660.81 +Cassette,Tape,1988-01-01,7315.51 +Cassette,Tape,1989-01-01,6898.2 +Cassette,Tape,1990-01-01,6792.22 +Cassette,Tape,1991-01-01,5668 +Cassette,Tape,1992-01-01,5678.57 +Cassette,Tape,1993-01-01,5158.79 +Cassette,Tape,1994-01-01,5134.53 +Cassette,Tape,1995-01-01,3864.38 +Cassette,Tape,1996-01-01,3104.55 +Cassette,Tape,1997-01-01,2425.48 +Cassette,Tape,1998-01-01,2227.04 +Cassette,Tape,1999-01-01,1629.08 +Cassette,Tape,2000-01-01,929.391881533 +Cassette,Tape,2001-01-01,524.594883117 +Cassette,Tape,2002-01-01,298.148074486 +Cassette,Tape,2003-01-01,150.1984875 +Cassette,Tape,2004-01-01,32.07554738 +Cassette,Tape,2005-01-01,17.14852381 +Cassette,Tape,2006-01-01,4.69211756 +Cassette,Tape,2007-01-01,3.699811867 +Cassette,Tape,2008-01-01,1.068685991 +Cassette,Tape,2009-01-01,0 +Cassette,Tape,2010-01-01,0 +Cassette,Tape,2011-01-01,0 +Cassette,Tape,2012-01-01,0 +Cassette,Tape,2013-01-01,0 +Cassette,Tape,2014-01-01,0 +Cassette,Tape,2015-01-01,0 +Cassette,Tape,2016-01-01,0 +Cassette,Tape,2017-01-01,0 +Cassette,Tape,2018-01-01,0 +Cassette,Tape,2019-01-01,0 +Cassette Single,Tape,1973-01-01,0 +Cassette Single,Tape,1974-01-01,0 +Cassette Single,Tape,1975-01-01,0 +Cassette Single,Tape,1976-01-01,0 +Cassette Single,Tape,1977-01-01,0 +Cassette Single,Tape,1978-01-01,0 +Cassette Single,Tape,1979-01-01,0 +Cassette Single,Tape,1980-01-01,0 +Cassette Single,Tape,1981-01-01,0 +Cassette Single,Tape,1982-01-01,0 +Cassette Single,Tape,1983-01-01,0 +Cassette Single,Tape,1984-01-01,0 +Cassette Single,Tape,1985-01-01,0 +Cassette Single,Tape,1986-01-01,0 +Cassette Single,Tape,1987-01-01,32.182175176 +Cassette Single,Tape,1988-01-01,123.830482671 +Cassette Single,Tape,1989-01-01,401.21655 +Cassette Single,Tape,1990-01-01,504.467791125 +Cassette Single,Tape,1991-01-01,432.477039648 +Cassette Single,Tape,1992-01-01,544.47834355 +Cassette Single,Tape,1993-01-01,528.121899654 +Cassette Single,Tape,1994-01-01,474.224759109 +Cassette Single,Tape,1995-01-01,396.40255315 +Cassette Single,Tape,1996-01-01,308.450414914 +Cassette Single,Tape,1997-01-01,212.649280374 +Cassette Single,Tape,1998-01-01,148.061477301 +Cassette Single,Tape,1999-01-01,73.658679472 +Cassette Single,Tape,2000-01-01,6.829397213 +Cassette Single,Tape,2001-01-01,7.650943535 +Cassette Single,Tape,2002-01-01,2.273769872 +Cassette Single,Tape,2003-01-01,0 +Cassette Single,Tape,2004-01-01,0 +Cassette Single,Tape,2005-01-01,0 +Cassette Single,Tape,2006-01-01,0 +Cassette Single,Tape,2007-01-01,0 +Cassette Single,Tape,2008-01-01,0 +Cassette Single,Tape,2009-01-01,0 +Cassette Single,Tape,2010-01-01,0 +Cassette Single,Tape,2011-01-01,0 +Cassette Single,Tape,2012-01-01,0 +Cassette Single,Tape,2013-01-01,0 +Cassette Single,Tape,2014-01-01,0 +Cassette Single,Tape,2015-01-01,0 +Cassette Single,Tape,2016-01-01,0 +Cassette Single,Tape,2017-01-01,0 +Cassette Single,Tape,2018-01-01,0 +Cassette Single,Tape,2019-01-01,0 +DVD Audio,Other,1973-01-01,0 +DVD Audio,Other,1974-01-01,0 +DVD Audio,Other,1975-01-01,0 +DVD Audio,Other,1976-01-01,0 +DVD Audio,Other,1977-01-01,0 +DVD Audio,Other,1978-01-01,0 +DVD Audio,Other,1979-01-01,0 +DVD Audio,Other,1980-01-01,0 +DVD Audio,Other,1981-01-01,0 +DVD Audio,Other,1982-01-01,0 +DVD Audio,Other,1983-01-01,0 +DVD Audio,Other,1984-01-01,0 +DVD Audio,Other,1985-01-01,0 +DVD Audio,Other,1986-01-01,0 +DVD Audio,Other,1987-01-01,0 +DVD Audio,Other,1988-01-01,0 +DVD Audio,Other,1989-01-01,0 +DVD Audio,Other,1990-01-01,0 +DVD Audio,Other,1991-01-01,0 +DVD Audio,Other,1992-01-01,0 +DVD Audio,Other,1993-01-01,0 +DVD Audio,Other,1994-01-01,0 +DVD Audio,Other,1995-01-01,0 +DVD Audio,Other,1996-01-01,0 +DVD Audio,Other,1997-01-01,0 +DVD Audio,Other,1998-01-01,0 +DVD Audio,Other,1999-01-01,0 +DVD Audio,Other,2000-01-01,0 +DVD Audio,Other,2001-01-01,8.661445511 +DVD Audio,Other,2002-01-01,12.079402446 +DVD Audio,Other,2003-01-01,11.115521739 +DVD Audio,Other,2004-01-01,8.797091053 +DVD Audio,Other,2005-01-01,14.661333333 +DVD Audio,Other,2006-01-01,3.043535714 +DVD Audio,Other,2007-01-01,3.453157742 +DVD Audio,Other,2008-01-01,1.424914655 +DVD Audio,Other,2009-01-01,1.906669712 +DVD Audio,Other,2010-01-01,1.05519362 +DVD Audio,Other,2011-01-01,0.34096844 +DVD Audio,Other,2012-01-01,0.20389289 +DVD Audio,Other,2013-01-01,0.544116778 +DVD Audio,Other,2014-01-01,2.310456232 +DVD Audio,Other,2015-01-01,5.842187676 +DVD Audio,Other,2016-01-01,3.020431045 +DVD Audio,Other,2017-01-01,2.718901189 +DVD Audio,Other,2018-01-01,3.377493968 +DVD Audio,Other,2019-01-01,1.067303184 +Download Album,Download,1973-01-01,0 +Download Album,Download,1974-01-01,0 +Download Album,Download,1975-01-01,0 +Download Album,Download,1976-01-01,0 +Download Album,Download,1977-01-01,0 +Download Album,Download,1978-01-01,0 +Download Album,Download,1979-01-01,0 +Download Album,Download,1980-01-01,0 +Download Album,Download,1981-01-01,0 +Download Album,Download,1982-01-01,0 +Download Album,Download,1983-01-01,0 +Download Album,Download,1984-01-01,0 +Download Album,Download,1985-01-01,0 +Download Album,Download,1986-01-01,0 +Download Album,Download,1987-01-01,0 +Download Album,Download,1988-01-01,0 +Download Album,Download,1989-01-01,0 +Download Album,Download,1990-01-01,0 +Download Album,Download,1991-01-01,0 +Download Album,Download,1992-01-01,0 +Download Album,Download,1993-01-01,0 +Download Album,Download,1994-01-01,0 +Download Album,Download,1995-01-01,0 +Download Album,Download,1996-01-01,0 +Download Album,Download,1997-01-01,0 +Download Album,Download,1998-01-01,0 +Download Album,Download,1999-01-01,0 +Download Album,Download,2000-01-01,0 +Download Album,Download,2001-01-01,0 +Download Album,Download,2002-01-01,0 +Download Album,Download,2003-01-01,0 +Download Album,Download,2004-01-01,61.579637374 +Download Album,Download,2005-01-01,177.637761905 +Download Album,Download,2006-01-01,349.879793155 +Download Album,Download,2007-01-01,613.428807525 +Download Album,Download,2008-01-01,754.37356702 +Download Album,Download,2009-01-01,886.958916644 +Download Album,Download,2010-01-01,1022.83 +Download Album,Download,2011-01-01,1217.03 +Download Album,Download,2012-01-01,1341.59 +Download Album,Download,2013-01-01,1352.2 +Download Album,Download,2014-01-01,1207.25 +Download Album,Download,2015-01-01,1148.15 +Download Album,Download,2016-01-01,925.232200992 +Download Album,Download,2017-01-01,697.237618181 +Download Album,Download,2018-01-01,508.704388424 +Download Album,Download,2019-01-01,394.533006158 +Download Music Video,Download,1973-01-01,0 +Download Music Video,Download,1974-01-01,0 +Download Music Video,Download,1975-01-01,0 +Download Music Video,Download,1976-01-01,0 +Download Music Video,Download,1977-01-01,0 +Download Music Video,Download,1978-01-01,0 +Download Music Video,Download,1979-01-01,0 +Download Music Video,Download,1980-01-01,0 +Download Music Video,Download,1981-01-01,0 +Download Music Video,Download,1982-01-01,0 +Download Music Video,Download,1983-01-01,0 +Download Music Video,Download,1984-01-01,0 +Download Music Video,Download,1985-01-01,0 +Download Music Video,Download,1986-01-01,0 +Download Music Video,Download,1987-01-01,0 +Download Music Video,Download,1988-01-01,0 +Download Music Video,Download,1989-01-01,0 +Download Music Video,Download,1990-01-01,0 +Download Music Video,Download,1991-01-01,0 +Download Music Video,Download,1992-01-01,0 +Download Music Video,Download,1993-01-01,0 +Download Music Video,Download,1994-01-01,0 +Download Music Video,Download,1995-01-01,0 +Download Music Video,Download,1996-01-01,0 +Download Music Video,Download,1997-01-01,0 +Download Music Video,Download,1998-01-01,0 +Download Music Video,Download,1999-01-01,0 +Download Music Video,Download,2000-01-01,0 +Download Music Video,Download,2001-01-01,0 +Download Music Video,Download,2002-01-01,0 +Download Music Video,Download,2003-01-01,0 +Download Music Video,Download,2004-01-01,0 +Download Music Video,Download,2005-01-01,4.84347619 +Download Music Video,Download,2006-01-01,24.982355655 +Download Music Video,Download,2007-01-01,34.778231548 +Download Music Video,Download,2008-01-01,49.040812715 +Download Music Video,Download,2009-01-01,48.739244513 +Download Music Video,Download,2010-01-01,42.911207213 +Download Music Video,Download,2011-01-01,36.824591556 +Download Music Video,Download,2012-01-01,23.208206935 +Download Music Video,Download,2013-01-01,18.372074986 +Download Music Video,Download,2014-01-01,14.662197203 +Download Music Video,Download,2015-01-01,6.918875516 +Download Music Video,Download,2016-01-01,4.547792467 +Download Music Video,Download,2017-01-01,2.905533136 +Download Music Video,Download,2018-01-01,2.261051168 +Download Music Video,Download,2019-01-01,1.858910402 +Download Single,Download,1973-01-01,0 +Download Single,Download,1974-01-01,0 +Download Single,Download,1975-01-01,0 +Download Single,Download,1976-01-01,0 +Download Single,Download,1977-01-01,0 +Download Single,Download,1978-01-01,0 +Download Single,Download,1979-01-01,0 +Download Single,Download,1980-01-01,0 +Download Single,Download,1981-01-01,0 +Download Single,Download,1982-01-01,0 +Download Single,Download,1983-01-01,0 +Download Single,Download,1984-01-01,0 +Download Single,Download,1985-01-01,0 +Download Single,Download,1986-01-01,0 +Download Single,Download,1987-01-01,0 +Download Single,Download,1988-01-01,0 +Download Single,Download,1989-01-01,0 +Download Single,Download,1990-01-01,0 +Download Single,Download,1991-01-01,0 +Download Single,Download,1992-01-01,0 +Download Single,Download,1993-01-01,0 +Download Single,Download,1994-01-01,0 +Download Single,Download,1995-01-01,0 +Download Single,Download,1996-01-01,0 +Download Single,Download,1997-01-01,0 +Download Single,Download,1998-01-01,0 +Download Single,Download,1999-01-01,0 +Download Single,Download,2000-01-01,0 +Download Single,Download,2001-01-01,0 +Download Single,Download,2002-01-01,0 +Download Single,Download,2003-01-01,0 +Download Single,Download,2004-01-01,186.769010058 +Download Single,Download,2005-01-01,475.577 +Download Single,Download,2006-01-01,736.282014881 +Download Single,Download,2007-01-01,1000.18 +Download Single,Download,2008-01-01,1225.66 +Download Single,Download,2009-01-01,1396.64 +Download Single,Download,2010-01-01,1566.85 +Download Single,Download,2011-01-01,1730.3 +Download Single,Download,2012-01-01,1831.26 +Download Single,Download,2013-01-01,1726.74 +Download Single,Download,2014-01-01,1463.66 +Download Single,Download,2015-01-01,1278.45 +Download Single,Download,2016-01-01,958.87910313 +Download Single,Download,2017-01-01,707.692711218 +Download Single,Download,2018-01-01,499.316974193 +Download Single,Download,2019-01-01,414.804250982 +Kiosk,Other,1973-01-01,0 +Kiosk,Other,1974-01-01,0 +Kiosk,Other,1975-01-01,0 +Kiosk,Other,1976-01-01,0 +Kiosk,Other,1977-01-01,0 +Kiosk,Other,1978-01-01,0 +Kiosk,Other,1979-01-01,0 +Kiosk,Other,1980-01-01,0 +Kiosk,Other,1981-01-01,0 +Kiosk,Other,1982-01-01,0 +Kiosk,Other,1983-01-01,0 +Kiosk,Other,1984-01-01,0 +Kiosk,Other,1985-01-01,0 +Kiosk,Other,1986-01-01,0 +Kiosk,Other,1987-01-01,0 +Kiosk,Other,1988-01-01,0 +Kiosk,Other,1989-01-01,0 +Kiosk,Other,1990-01-01,0 +Kiosk,Other,1991-01-01,0 +Kiosk,Other,1992-01-01,0 +Kiosk,Other,1993-01-01,0 +Kiosk,Other,1994-01-01,0 +Kiosk,Other,1995-01-01,0 +Kiosk,Other,1996-01-01,0 +Kiosk,Other,1997-01-01,0 +Kiosk,Other,1998-01-01,0 +Kiosk,Other,1999-01-01,0 +Kiosk,Other,2000-01-01,0 +Kiosk,Other,2001-01-01,0 +Kiosk,Other,2002-01-01,0 +Kiosk,Other,2003-01-01,0 +Kiosk,Other,2004-01-01,0 +Kiosk,Other,2005-01-01,1.309047619 +Kiosk,Other,2006-01-01,2.409465774 +Kiosk,Other,2007-01-01,3.206503618 +Kiosk,Other,2008-01-01,3.087315086 +Kiosk,Other,2009-01-01,7.507511991 +Kiosk,Other,2010-01-01,7.503599075 +Kiosk,Other,2011-01-01,3.068715963 +Kiosk,Other,2012-01-01,4.068866328 +Kiosk,Other,2013-01-01,6.786152156 +Kiosk,Other,2014-01-01,2.789051821 +Kiosk,Other,2015-01-01,3.99147413 +Kiosk,Other,2016-01-01,3.13587911 +Kiosk,Other,2017-01-01,2.351668038 +Kiosk,Other,2018-01-01,2.000651969 +Kiosk,Other,2019-01-01,1.586470587 +LP/EP,Vinyl,1973-01-01,7174.52 +LP/EP,Vinyl,1974-01-01,7031.86 +LP/EP,Vinyl,1975-01-01,7056.7 +LP/EP,Vinyl,1976-01-01,7472.01 +LP/EP,Vinyl,1977-01-01,9260.61 +LP/EP,Vinyl,1978-01-01,9698.11 +LP/EP,Vinyl,1979-01-01,7243.62 +LP/EP,Vinyl,1980-01-01,6825.79 +LP/EP,Vinyl,1981-01-01,6586.05 +LP/EP,Vinyl,1982-01-01,5100.16 +LP/EP,Vinyl,1983-01-01,4335.39 +LP/EP,Vinyl,1984-01-01,3810.99 +LP/EP,Vinyl,1985-01-01,3042.46 +LP/EP,Vinyl,1986-01-01,2292.98 +LP/EP,Vinyl,1987-01-01,1784.87 +LP/EP,Vinyl,1988-01-01,1150.13 +LP/EP,Vinyl,1989-01-01,454.203525 +LP/EP,Vinyl,1990-01-01,169.199162204 +LP/EP,Vinyl,1991-01-01,55.185872247 +LP/EP,Vinyl,1992-01-01,24.59992516 +LP/EP,Vinyl,1993-01-01,18.754077509 +LP/EP,Vinyl,1994-01-01,30.706441296 +LP/EP,Vinyl,1995-01-01,42.106238189 +LP/EP,Vinyl,1996-01-01,59.962891013 +LP/EP,Vinyl,1997-01-01,53.042854206 +LP/EP,Vinyl,1998-01-01,53.327226994 +LP/EP,Vinyl,1999-01-01,48.79887515 +LP/EP,Vinyl,2000-01-01,41.124848432 +LP/EP,Vinyl,2001-01-01,39.5539345 +LP/EP,Vinyl,2002-01-01,29.132676487 +LP/EP,Vinyl,2003-01-01,30.150852717 +LP/EP,Vinyl,2004-01-01,26.120593436 +LP/EP,Vinyl,2005-01-01,18.58847619 +LP/EP,Vinyl,2006-01-01,19.909796131 +LP/EP,Vinyl,2007-01-01,28.24189725 +LP/EP,Vinyl,2008-01-01,67.327217456 +LP/EP,Vinyl,2009-01-01,76.028454765 +LP/EP,Vinyl,2010-01-01,104.229680908 +LP/EP,Vinyl,2011-01-01,135.705439252 +LP/EP,Vinyl,2012-01-01,178.967982236 +LP/EP,Vinyl,2013-01-01,231.274070194 +LP/EP,Vinyl,2014-01-01,263.336179145 +LP/EP,Vinyl,2015-01-01,359.598162864 +LP/EP,Vinyl,2016-01-01,378.607270991 +LP/EP,Vinyl,2017-01-01,405.212077272 +LP/EP,Vinyl,2018-01-01,426.820186646 +LP/EP,Vinyl,2019-01-01,497.588920842 +Limited Tier Paid Subscription,Streaming,1973-01-01,0 +Limited Tier Paid Subscription,Streaming,1974-01-01,0 +Limited Tier Paid Subscription,Streaming,1975-01-01,0 +Limited Tier Paid Subscription,Streaming,1976-01-01,0 +Limited Tier Paid Subscription,Streaming,1977-01-01,0 +Limited Tier Paid Subscription,Streaming,1978-01-01,0 +Limited Tier Paid Subscription,Streaming,1979-01-01,0 +Limited Tier Paid Subscription,Streaming,1980-01-01,0 +Limited Tier Paid Subscription,Streaming,1981-01-01,0 +Limited Tier Paid Subscription,Streaming,1982-01-01,0 +Limited Tier Paid Subscription,Streaming,1983-01-01,0 +Limited Tier Paid Subscription,Streaming,1984-01-01,0 +Limited Tier Paid Subscription,Streaming,1985-01-01,0 +Limited Tier Paid Subscription,Streaming,1986-01-01,0 +Limited Tier Paid Subscription,Streaming,1987-01-01,0 +Limited Tier Paid Subscription,Streaming,1988-01-01,0 +Limited Tier Paid Subscription,Streaming,1989-01-01,0 +Limited Tier Paid Subscription,Streaming,1990-01-01,0 +Limited Tier Paid Subscription,Streaming,1991-01-01,0 +Limited Tier Paid Subscription,Streaming,1992-01-01,0 +Limited Tier Paid Subscription,Streaming,1993-01-01,0 +Limited Tier Paid Subscription,Streaming,1994-01-01,0 +Limited Tier Paid Subscription,Streaming,1995-01-01,0 +Limited Tier Paid Subscription,Streaming,1996-01-01,0 +Limited Tier Paid Subscription,Streaming,1997-01-01,0 +Limited Tier Paid Subscription,Streaming,1998-01-01,0 +Limited Tier Paid Subscription,Streaming,1999-01-01,0 +Limited Tier Paid Subscription,Streaming,2000-01-01,0 +Limited Tier Paid Subscription,Streaming,2001-01-01,0 +Limited Tier Paid Subscription,Streaming,2002-01-01,0 +Limited Tier Paid Subscription,Streaming,2003-01-01,0 +Limited Tier Paid Subscription,Streaming,2004-01-01,0 +Limited Tier Paid Subscription,Streaming,2005-01-01,0 +Limited Tier Paid Subscription,Streaming,2006-01-01,0 +Limited Tier Paid Subscription,Streaming,2007-01-01,0 +Limited Tier Paid Subscription,Streaming,2008-01-01,0 +Limited Tier Paid Subscription,Streaming,2009-01-01,0 +Limited Tier Paid Subscription,Streaming,2010-01-01,0 +Limited Tier Paid Subscription,Streaming,2011-01-01,0 +Limited Tier Paid Subscription,Streaming,2012-01-01,0 +Limited Tier Paid Subscription,Streaming,2013-01-01,0 +Limited Tier Paid Subscription,Streaming,2014-01-01,0 +Limited Tier Paid Subscription,Streaming,2015-01-01,0 +Limited Tier Paid Subscription,Streaming,2016-01-01,280.536691286 +Limited Tier Paid Subscription,Streaming,2017-01-01,617.032317981 +Limited Tier Paid Subscription,Streaming,2018-01-01,760.591366006 +Limited Tier Paid Subscription,Streaming,2019-01-01,829.498739675 +Music Video (Physical),Other,1973-01-01,0 +Music Video (Physical),Other,1974-01-01,0 +Music Video (Physical),Other,1975-01-01,0 +Music Video (Physical),Other,1976-01-01,0 +Music Video (Physical),Other,1977-01-01,0 +Music Video (Physical),Other,1978-01-01,0 +Music Video (Physical),Other,1979-01-01,0 +Music Video (Physical),Other,1980-01-01,0 +Music Video (Physical),Other,1981-01-01,0 +Music Video (Physical),Other,1982-01-01,0 +Music Video (Physical),Other,1983-01-01,0 +Music Video (Physical),Other,1984-01-01,0 +Music Video (Physical),Other,1985-01-01,0 +Music Video (Physical),Other,1986-01-01,0 +Music Video (Physical),Other,1987-01-01,0 +Music Video (Physical),Other,1988-01-01,0 +Music Video (Physical),Other,1989-01-01,237.92595 +Music Video (Physical),Other,1990-01-01,337.029082632 +Music Video (Physical),Other,1991-01-01,221.682024229 +Music Video (Physical),Other,1992-01-01,286.816905203 +Music Video (Physical),Other,1993-01-01,377.381578547 +Music Video (Physical),Other,1994-01-01,398.666212551 +Music Video (Physical),Other,1995-01-01,369.561923228 +Music Video (Physical),Other,1996-01-01,384.70756979 +Music Video (Physical),Other,1997-01-01,515.933347664 +Music Video (Physical),Other,1998-01-01,796.771509202 +Music Video (Physical),Other,1999-01-01,578.067178271 +Music Video (Physical),Other,2000-01-01,418.523277003 +Music Video (Physical),Other,2001-01-01,475.224643704 +Music Video (Physical),Other,2002-01-01,409.847019455 +Music Video (Physical),Other,2003-01-01,555.637142935 +Music Video (Physical),Other,2004-01-01,821.783644256 +Music Video (Physical),Other,2005-01-01,788.30847619 +Music Video (Physical),Other,2006-01-01,572.057900298 +Music Video (Physical),Other,2007-01-01,598.012924747 +Music Video (Physical),Other,2008-01-01,269.902584265 +Music Video (Physical),Other,2009-01-01,249.77373227 +Music Video (Physical),Other,2010-01-01,208.224874344 +Music Video (Physical),Other,2011-01-01,171.620781634 +Music Video (Physical),Other,2012-01-01,129.85137719 +Music Video (Physical),Other,2013-01-01,116.639672376 +Music Video (Physical),Other,2014-01-01,96.875251056 +Music Video (Physical),Other,2015-01-01,75.973614493 +Music Video (Physical),Other,2016-01-01,60.634642175 +Music Video (Physical),Other,2017-01-01,40.279585351 +Music Video (Physical),Other,2018-01-01,28.060663877 +Music Video (Physical),Other,2019-01-01,27.705246783 +On-Demand Streaming (Ad-Supported),Streaming,1973-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1974-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1975-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1976-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1977-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1978-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1979-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1980-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1981-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1982-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1983-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1984-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1985-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1986-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1987-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1988-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1989-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1990-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1991-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1992-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1993-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1994-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1995-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1996-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1997-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1998-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,1999-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2000-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2001-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2002-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2003-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2004-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2005-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2006-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2007-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2008-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2009-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2010-01-01,0 +On-Demand Streaming (Ad-Supported),Streaming,2011-01-01,129.340695033 +On-Demand Streaming (Ad-Supported),Streaming,2012-01-01,190.339615647 +On-Demand Streaming (Ad-Supported),Streaming,2013-01-01,242.396097837 +On-Demand Streaming (Ad-Supported),Streaming,2014-01-01,306.475448007 +On-Demand Streaming (Ad-Supported),Streaming,2015-01-01,401.245264147 +On-Demand Streaming (Ad-Supported),Streaming,2016-01-01,521.288175026 +On-Demand Streaming (Ad-Supported),Streaming,2017-01-01,686.918081261 +On-Demand Streaming (Ad-Supported),Streaming,2018-01-01,773.294916688 +On-Demand Streaming (Ad-Supported),Streaming,2019-01-01,908.149330523 +Other Ad-Supported Streaming,Streaming,1973-01-01,0 +Other Ad-Supported Streaming,Streaming,1974-01-01,0 +Other Ad-Supported Streaming,Streaming,1975-01-01,0 +Other Ad-Supported Streaming,Streaming,1976-01-01,0 +Other Ad-Supported Streaming,Streaming,1977-01-01,0 +Other Ad-Supported Streaming,Streaming,1978-01-01,0 +Other Ad-Supported Streaming,Streaming,1979-01-01,0 +Other Ad-Supported Streaming,Streaming,1980-01-01,0 +Other Ad-Supported Streaming,Streaming,1981-01-01,0 +Other Ad-Supported Streaming,Streaming,1982-01-01,0 +Other Ad-Supported Streaming,Streaming,1983-01-01,0 +Other Ad-Supported Streaming,Streaming,1984-01-01,0 +Other Ad-Supported Streaming,Streaming,1985-01-01,0 +Other Ad-Supported Streaming,Streaming,1986-01-01,0 +Other Ad-Supported Streaming,Streaming,1987-01-01,0 +Other Ad-Supported Streaming,Streaming,1988-01-01,0 +Other Ad-Supported Streaming,Streaming,1989-01-01,0 +Other Ad-Supported Streaming,Streaming,1990-01-01,0 +Other Ad-Supported Streaming,Streaming,1991-01-01,0 +Other Ad-Supported Streaming,Streaming,1992-01-01,0 +Other Ad-Supported Streaming,Streaming,1993-01-01,0 +Other Ad-Supported Streaming,Streaming,1994-01-01,0 +Other Ad-Supported Streaming,Streaming,1995-01-01,0 +Other Ad-Supported Streaming,Streaming,1996-01-01,0 +Other Ad-Supported Streaming,Streaming,1997-01-01,0 +Other Ad-Supported Streaming,Streaming,1998-01-01,0 +Other Ad-Supported Streaming,Streaming,1999-01-01,0 +Other Ad-Supported Streaming,Streaming,2000-01-01,0 +Other Ad-Supported Streaming,Streaming,2001-01-01,0 +Other Ad-Supported Streaming,Streaming,2002-01-01,0 +Other Ad-Supported Streaming,Streaming,2003-01-01,0 +Other Ad-Supported Streaming,Streaming,2004-01-01,0 +Other Ad-Supported Streaming,Streaming,2005-01-01,0 +Other Ad-Supported Streaming,Streaming,2006-01-01,0 +Other Ad-Supported Streaming,Streaming,2007-01-01,0 +Other Ad-Supported Streaming,Streaming,2008-01-01,0 +Other Ad-Supported Streaming,Streaming,2009-01-01,0 +Other Ad-Supported Streaming,Streaming,2010-01-01,0 +Other Ad-Supported Streaming,Streaming,2011-01-01,0 +Other Ad-Supported Streaming,Streaming,2012-01-01,0 +Other Ad-Supported Streaming,Streaming,2013-01-01,0 +Other Ad-Supported Streaming,Streaming,2014-01-01,0 +Other Ad-Supported Streaming,Streaming,2015-01-01,0 +Other Ad-Supported Streaming,Streaming,2016-01-01,86.559596683 +Other Ad-Supported Streaming,Streaming,2017-01-01,273.040319024 +Other Ad-Supported Streaming,Streaming,2018-01-01,255.967443871 +Other Ad-Supported Streaming,Streaming,2019-01-01,251.064710118 +Other Digital,Download,1973-01-01,0 +Other Digital,Download,1974-01-01,0 +Other Digital,Download,1975-01-01,0 +Other Digital,Download,1976-01-01,0 +Other Digital,Download,1977-01-01,0 +Other Digital,Download,1978-01-01,0 +Other Digital,Download,1979-01-01,0 +Other Digital,Download,1980-01-01,0 +Other Digital,Download,1981-01-01,0 +Other Digital,Download,1982-01-01,0 +Other Digital,Download,1983-01-01,0 +Other Digital,Download,1984-01-01,0 +Other Digital,Download,1985-01-01,0 +Other Digital,Download,1986-01-01,0 +Other Digital,Download,1987-01-01,0 +Other Digital,Download,1988-01-01,0 +Other Digital,Download,1989-01-01,0 +Other Digital,Download,1990-01-01,0 +Other Digital,Download,1991-01-01,0 +Other Digital,Download,1992-01-01,0 +Other Digital,Download,1993-01-01,0 +Other Digital,Download,1994-01-01,0 +Other Digital,Download,1995-01-01,0 +Other Digital,Download,1996-01-01,0 +Other Digital,Download,1997-01-01,0 +Other Digital,Download,1998-01-01,0 +Other Digital,Download,1999-01-01,0 +Other Digital,Download,2000-01-01,0 +Other Digital,Download,2001-01-01,0 +Other Digital,Download,2002-01-01,0 +Other Digital,Download,2003-01-01,0 +Other Digital,Download,2004-01-01,0 +Other Digital,Download,2005-01-01,0 +Other Digital,Download,2006-01-01,0 +Other Digital,Download,2007-01-01,0 +Other Digital,Download,2008-01-01,0 +Other Digital,Download,2009-01-01,0 +Other Digital,Download,2010-01-01,0 +Other Digital,Download,2011-01-01,0 +Other Digital,Download,2012-01-01,0 +Other Digital,Download,2013-01-01,0 +Other Digital,Download,2014-01-01,0 +Other Digital,Download,2015-01-01,0 +Other Digital,Download,2016-01-01,18.259409536 +Other Digital,Download,2017-01-01,17.610951916 +Other Digital,Download,2018-01-01,20.199063312 +Other Digital,Download,2019-01-01,21.517175006 +Other Tapes,Tape,1973-01-01,89.825432432 +Other Tapes,Tape,1974-01-01,68.970346856 +Other Tapes,Tape,1975-01-01,48.470286245 +Other Tapes,Tape,1976-01-01,22.914775044 +Other Tapes,Tape,1977-01-01,0 +Other Tapes,Tape,1978-01-01,0 +Other Tapes,Tape,1979-01-01,0 +Other Tapes,Tape,1980-01-01,0 +Other Tapes,Tape,1981-01-01,0 +Other Tapes,Tape,1982-01-01,0 +Other Tapes,Tape,1983-01-01,0 +Other Tapes,Tape,1984-01-01,0 +Other Tapes,Tape,1985-01-01,0 +Other Tapes,Tape,1986-01-01,0 +Other Tapes,Tape,1987-01-01,0 +Other Tapes,Tape,1988-01-01,0 +Other Tapes,Tape,1989-01-01,0 +Other Tapes,Tape,1990-01-01,0 +Other Tapes,Tape,1991-01-01,0 +Other Tapes,Tape,1992-01-01,0 +Other Tapes,Tape,1993-01-01,0 +Other Tapes,Tape,1994-01-01,0 +Other Tapes,Tape,1995-01-01,0 +Other Tapes,Tape,1996-01-01,0 +Other Tapes,Tape,1997-01-01,0 +Other Tapes,Tape,1998-01-01,0 +Other Tapes,Tape,1999-01-01,0 +Other Tapes,Tape,2000-01-01,0 +Other Tapes,Tape,2001-01-01,0 +Other Tapes,Tape,2002-01-01,0 +Other Tapes,Tape,2003-01-01,0 +Other Tapes,Tape,2004-01-01,0 +Other Tapes,Tape,2005-01-01,0 +Other Tapes,Tape,2006-01-01,0 +Other Tapes,Tape,2007-01-01,0 +Other Tapes,Tape,2008-01-01,0 +Other Tapes,Tape,2009-01-01,0 +Other Tapes,Tape,2010-01-01,0 +Other Tapes,Tape,2011-01-01,0 +Other Tapes,Tape,2012-01-01,0 +Other Tapes,Tape,2013-01-01,0 +Other Tapes,Tape,2014-01-01,0 +Other Tapes,Tape,2015-01-01,0 +Other Tapes,Tape,2016-01-01,0 +Other Tapes,Tape,2017-01-01,0 +Other Tapes,Tape,2018-01-01,0 +Other Tapes,Tape,2019-01-01,0 +Paid Subscription,Streaming,1973-01-01,0 +Paid Subscription,Streaming,1974-01-01,0 +Paid Subscription,Streaming,1975-01-01,0 +Paid Subscription,Streaming,1976-01-01,0 +Paid Subscription,Streaming,1977-01-01,0 +Paid Subscription,Streaming,1978-01-01,0 +Paid Subscription,Streaming,1979-01-01,0 +Paid Subscription,Streaming,1980-01-01,0 +Paid Subscription,Streaming,1981-01-01,0 +Paid Subscription,Streaming,1982-01-01,0 +Paid Subscription,Streaming,1983-01-01,0 +Paid Subscription,Streaming,1984-01-01,0 +Paid Subscription,Streaming,1985-01-01,0 +Paid Subscription,Streaming,1986-01-01,0 +Paid Subscription,Streaming,1987-01-01,0 +Paid Subscription,Streaming,1988-01-01,0 +Paid Subscription,Streaming,1989-01-01,0 +Paid Subscription,Streaming,1990-01-01,0 +Paid Subscription,Streaming,1991-01-01,0 +Paid Subscription,Streaming,1992-01-01,0 +Paid Subscription,Streaming,1993-01-01,0 +Paid Subscription,Streaming,1994-01-01,0 +Paid Subscription,Streaming,1995-01-01,0 +Paid Subscription,Streaming,1996-01-01,0 +Paid Subscription,Streaming,1997-01-01,0 +Paid Subscription,Streaming,1998-01-01,0 +Paid Subscription,Streaming,1999-01-01,0 +Paid Subscription,Streaming,2000-01-01,0 +Paid Subscription,Streaming,2001-01-01,0 +Paid Subscription,Streaming,2002-01-01,0 +Paid Subscription,Streaming,2003-01-01,0 +Paid Subscription,Streaming,2004-01-01,0 +Paid Subscription,Streaming,2005-01-01,195.309904762 +Paid Subscription,Streaming,2006-01-01,261.490443452 +Paid Subscription,Streaming,2007-01-01,288.585325615 +Paid Subscription,Streaming,2008-01-01,262.896753877 +Paid Subscription,Streaming,2009-01-01,245.722059132 +Paid Subscription,Streaming,2010-01-01,249.025694317 +Paid Subscription,Streaming,2011-01-01,281.639931715 +Paid Subscription,Streaming,2012-01-01,445.276306223 +Paid Subscription,Streaming,2013-01-01,706.011657475 +Paid Subscription,Streaming,2014-01-01,831.834027499 +Paid Subscription,Streaming,2015-01-01,1247.68 +Paid Subscription,Streaming,2016-01-01,2390.49 +Paid Subscription,Streaming,2017-01-01,3651.03 +Paid Subscription,Streaming,2018-01-01,4740.33 +Paid Subscription,Streaming,2019-01-01,5934.4 +Ringtones & Ringbacks,Download,1973-01-01,0 +Ringtones & Ringbacks,Download,1974-01-01,0 +Ringtones & Ringbacks,Download,1975-01-01,0 +Ringtones & Ringbacks,Download,1976-01-01,0 +Ringtones & Ringbacks,Download,1977-01-01,0 +Ringtones & Ringbacks,Download,1978-01-01,0 +Ringtones & Ringbacks,Download,1979-01-01,0 +Ringtones & Ringbacks,Download,1980-01-01,0 +Ringtones & Ringbacks,Download,1981-01-01,0 +Ringtones & Ringbacks,Download,1982-01-01,0 +Ringtones & Ringbacks,Download,1983-01-01,0 +Ringtones & Ringbacks,Download,1984-01-01,0 +Ringtones & Ringbacks,Download,1985-01-01,0 +Ringtones & Ringbacks,Download,1986-01-01,0 +Ringtones & Ringbacks,Download,1987-01-01,0 +Ringtones & Ringbacks,Download,1988-01-01,0 +Ringtones & Ringbacks,Download,1989-01-01,0 +Ringtones & Ringbacks,Download,1990-01-01,0 +Ringtones & Ringbacks,Download,1991-01-01,0 +Ringtones & Ringbacks,Download,1992-01-01,0 +Ringtones & Ringbacks,Download,1993-01-01,0 +Ringtones & Ringbacks,Download,1994-01-01,0 +Ringtones & Ringbacks,Download,1995-01-01,0 +Ringtones & Ringbacks,Download,1996-01-01,0 +Ringtones & Ringbacks,Download,1997-01-01,0 +Ringtones & Ringbacks,Download,1998-01-01,0 +Ringtones & Ringbacks,Download,1999-01-01,0 +Ringtones & Ringbacks,Download,2000-01-01,0 +Ringtones & Ringbacks,Download,2001-01-01,0 +Ringtones & Ringbacks,Download,2002-01-01,0 +Ringtones & Ringbacks,Download,2003-01-01,0 +Ringtones & Ringbacks,Download,2004-01-01,0 +Ringtones & Ringbacks,Download,2005-01-01,551.89447619 +Ringtones & Ringbacks,Download,2006-01-01,981.286639881 +Ringtones & Ringbacks,Download,2007-01-01,1302.09 +Ringtones & Ringbacks,Download,2008-01-01,1160.24 +Ringtones & Ringbacks,Download,2009-01-01,837.504670989 +Ringtones & Ringbacks,Download,2010-01-01,525.251935283 +Ringtones & Ringbacks,Download,2011-01-01,313.9182774 +Ringtones & Ringbacks,Download,2012-01-01,162.565728249 +Ringtones & Ringbacks,Download,2013-01-01,107.548976379 +Ringtones & Ringbacks,Download,2014-01-01,71.61127201 +Ringtones & Ringbacks,Download,2015-01-01,58.874581007 +Ringtones & Ringbacks,Download,2016-01-01,59.998070883 +Ringtones & Ringbacks,Download,2017-01-01,37.040368455 +Ringtones & Ringbacks,Download,2018-01-01,25.41009037 +Ringtones & Ringbacks,Download,2019-01-01,21.426736902 +SACD,Disc,1973-01-01,0 +SACD,Disc,1974-01-01,0 +SACD,Disc,1975-01-01,0 +SACD,Disc,1976-01-01,0 +SACD,Disc,1977-01-01,0 +SACD,Disc,1978-01-01,0 +SACD,Disc,1979-01-01,0 +SACD,Disc,1980-01-01,0 +SACD,Disc,1981-01-01,0 +SACD,Disc,1982-01-01,0 +SACD,Disc,1983-01-01,0 +SACD,Disc,1984-01-01,0 +SACD,Disc,1985-01-01,0 +SACD,Disc,1986-01-01,0 +SACD,Disc,1987-01-01,0 +SACD,Disc,1988-01-01,0 +SACD,Disc,1989-01-01,0 +SACD,Disc,1990-01-01,0 +SACD,Disc,1991-01-01,0 +SACD,Disc,1992-01-01,0 +SACD,Disc,1993-01-01,0 +SACD,Disc,1994-01-01,0 +SACD,Disc,1995-01-01,0 +SACD,Disc,1996-01-01,0 +SACD,Disc,1997-01-01,0 +SACD,Disc,1998-01-01,0 +SACD,Disc,1999-01-01,0 +SACD,Disc,2000-01-01,0 +SACD,Disc,2001-01-01,0 +SACD,Disc,2002-01-01,0 +SACD,Disc,2003-01-01,36.542277717 +SACD,Disc,2004-01-01,22.466417152 +SACD,Disc,2005-01-01,13.09047619 +SACD,Disc,2006-01-01,6.974769345 +SACD,Disc,2007-01-01,4.43977424 +SACD,Disc,2008-01-01,3.681029526 +SACD,Disc,2009-01-01,2.860004568 +SACD,Disc,2010-01-01,1.993143504 +SACD,Disc,2011-01-01,1.704842202 +SACD,Disc,2012-01-01,1.494897613 +SACD,Disc,2013-01-01,1.073719014 +SACD,Disc,2014-01-01,0.82446336 +SACD,Disc,2015-01-01,1.125529098 +SACD,Disc,2016-01-01,1.28555661 +SACD,Disc,2017-01-01,0.887142473 +SACD,Disc,2018-01-01,0.875277267 +SACD,Disc,2019-01-01,0.433302292 +SoundExchange Distributions,Streaming,1973-01-01,0 +SoundExchange Distributions,Streaming,1974-01-01,0 +SoundExchange Distributions,Streaming,1975-01-01,0 +SoundExchange Distributions,Streaming,1976-01-01,0 +SoundExchange Distributions,Streaming,1977-01-01,0 +SoundExchange Distributions,Streaming,1978-01-01,0 +SoundExchange Distributions,Streaming,1979-01-01,0 +SoundExchange Distributions,Streaming,1980-01-01,0 +SoundExchange Distributions,Streaming,1981-01-01,0 +SoundExchange Distributions,Streaming,1982-01-01,0 +SoundExchange Distributions,Streaming,1983-01-01,0 +SoundExchange Distributions,Streaming,1984-01-01,0 +SoundExchange Distributions,Streaming,1985-01-01,0 +SoundExchange Distributions,Streaming,1986-01-01,0 +SoundExchange Distributions,Streaming,1987-01-01,0 +SoundExchange Distributions,Streaming,1988-01-01,0 +SoundExchange Distributions,Streaming,1989-01-01,0 +SoundExchange Distributions,Streaming,1990-01-01,0 +SoundExchange Distributions,Streaming,1991-01-01,0 +SoundExchange Distributions,Streaming,1992-01-01,0 +SoundExchange Distributions,Streaming,1993-01-01,0 +SoundExchange Distributions,Streaming,1994-01-01,0 +SoundExchange Distributions,Streaming,1995-01-01,0 +SoundExchange Distributions,Streaming,1996-01-01,0 +SoundExchange Distributions,Streaming,1997-01-01,0 +SoundExchange Distributions,Streaming,1998-01-01,0 +SoundExchange Distributions,Streaming,1999-01-01,0 +SoundExchange Distributions,Streaming,2000-01-01,0 +SoundExchange Distributions,Streaming,2001-01-01,0 +SoundExchange Distributions,Streaming,2002-01-01,0 +SoundExchange Distributions,Streaming,2003-01-01,0 +SoundExchange Distributions,Streaming,2004-01-01,9.338450503 +SoundExchange Distributions,Streaming,2005-01-01,26.704571429 +SoundExchange Distributions,Streaming,2006-01-01,41.594988095 +SoundExchange Distributions,Streaming,2007-01-01,44.644396527 +SoundExchange Distributions,Streaming,2008-01-01,118.74288793 +SoundExchange Distributions,Streaming,2009-01-01,185.304462633 +SoundExchange Distributions,Streaming,2010-01-01,292.171389001 +SoundExchange Distributions,Streaming,2011-01-01,331.875948591 +SoundExchange Distributions,Streaming,2012-01-01,514.445211983 +SoundExchange Distributions,Streaming,2013-01-01,647.930273827 +SoundExchange Distributions,Streaming,2014-01-01,835.213587287 +SoundExchange Distributions,Streaming,2015-01-01,865.719793095 +SoundExchange Distributions,Streaming,2016-01-01,941.535964784 +SoundExchange Distributions,Streaming,2017-01-01,680.027594648 +SoundExchange Distributions,Streaming,2018-01-01,970.064512738 +SoundExchange Distributions,Streaming,2019-01-01,908.2 +Synchronization,Other,1973-01-01,0 +Synchronization,Other,1974-01-01,0 +Synchronization,Other,1975-01-01,0 +Synchronization,Other,1976-01-01,0 +Synchronization,Other,1977-01-01,0 +Synchronization,Other,1978-01-01,0 +Synchronization,Other,1979-01-01,0 +Synchronization,Other,1980-01-01,0 +Synchronization,Other,1981-01-01,0 +Synchronization,Other,1982-01-01,0 +Synchronization,Other,1983-01-01,0 +Synchronization,Other,1984-01-01,0 +Synchronization,Other,1985-01-01,0 +Synchronization,Other,1986-01-01,0 +Synchronization,Other,1987-01-01,0 +Synchronization,Other,1988-01-01,0 +Synchronization,Other,1989-01-01,0 +Synchronization,Other,1990-01-01,0 +Synchronization,Other,1991-01-01,0 +Synchronization,Other,1992-01-01,0 +Synchronization,Other,1993-01-01,0 +Synchronization,Other,1994-01-01,0 +Synchronization,Other,1995-01-01,0 +Synchronization,Other,1996-01-01,0 +Synchronization,Other,1997-01-01,0 +Synchronization,Other,1998-01-01,0 +Synchronization,Other,1999-01-01,0 +Synchronization,Other,2000-01-01,0 +Synchronization,Other,2001-01-01,0 +Synchronization,Other,2002-01-01,0 +Synchronization,Other,2003-01-01,0 +Synchronization,Other,2004-01-01,0 +Synchronization,Other,2005-01-01,0 +Synchronization,Other,2006-01-01,0 +Synchronization,Other,2007-01-01,0 +Synchronization,Other,2008-01-01,0 +Synchronization,Other,2009-01-01,239.763716282 +Synchronization,Other,2010-01-01,221.238928991 +Synchronization,Other,2011-01-01,223.334328418 +Synchronization,Other,2012-01-01,212.233985813 +Synchronization,Other,2013-01-01,208.162343515 +Synchronization,Other,2014-01-01,204.875818427 +Synchronization,Other,2015-01-01,218.894529344 +Synchronization,Other,2016-01-01,228.847859543 +Synchronization,Other,2017-01-01,242.063251407 +Synchronization,Other,2018-01-01,290.686928901 +Synchronization,Other,2019-01-01,276.262360199 +Vinyl Single,Vinyl,1973-01-01,1094.03 +Vinyl Single,Vinyl,1974-01-01,1006.03 +Vinyl Single,Vinyl,1975-01-01,1005.05 +Vinyl Single,Vinyl,1976-01-01,1101.26 +Vinyl Single,Vinyl,1977-01-01,1034.02 +Vinyl Single,Vinyl,1978-01-01,1020.67 +Vinyl Single,Vinyl,1979-01-01,1245.18 +Vinyl Single,Vinyl,1980-01-01,775.658373786 +Vinyl Single,Vinyl,1981-01-01,721.127115512 +Vinyl Single,Vinyl,1982-01-01,749.750580311 +Vinyl Single,Vinyl,1983-01-01,691.249298193 +Vinyl Single,Vinyl,1984-01-01,734.983117421 +Vinyl Single,Vinyl,1985-01-01,667.654433086 +Vinyl Single,Vinyl,1986-01-01,532.074468066 +Vinyl Single,Vinyl,1987-01-01,457.527007923 +Vinyl Single,Vinyl,1988-01-01,389.860716822 +Vinyl Single,Vinyl,1989-01-01,239.9877 +Vinyl Single,Vinyl,1990-01-01,184.652033665 +Vinyl Single,Vinyl,1991-01-01,119.944803965 +Vinyl Single,Vinyl,1992-01-01,120.995187455 +Vinyl Single,Vinyl,1993-01-01,90.585732872 +Vinyl Single,Vinyl,1994-01-01,81.423821862 +Vinyl Single,Vinyl,1995-01-01,78.341088583 +Vinyl Single,Vinyl,1996-01-01,77.397753346 +Vinyl Single,Vinyl,1997-01-01,56.706474766 +Vinyl Single,Vinyl,1998-01-01,40.309109816 +Vinyl Single,Vinyl,1999-01-01,42.814107443 +Vinyl Single,Vinyl,2000-01-01,39.046336237 +Vinyl Single,Vinyl,2001-01-01,45.328231508 +Vinyl Single,Vinyl,2002-01-01,35.385543635 +Vinyl Single,Vinyl,2003-01-01,29.872964674 +Vinyl Single,Vinyl,2004-01-01,26.93263261 +Vinyl Single,Vinyl,2005-01-01,17.279428571 +Vinyl Single,Vinyl,2006-01-01,12.554584821 +Vinyl Single,Vinyl,2007-01-01,4.933082489 +Vinyl Single,Vinyl,2008-01-01,3.44354375 +Vinyl Single,Vinyl,2009-01-01,2.979171425 +Vinyl Single,Vinyl,2010-01-01,2.696605918 +Vinyl Single,Vinyl,2011-01-01,5.228182752 +Vinyl Single,Vinyl,2012-01-01,5.281477044 +Vinyl Single,Vinyl,2013-01-01,3.269213385 +Vinyl Single,Vinyl,2014-01-01,5.938887283 +Vinyl Single,Vinyl,2015-01-01,6.205390253 +Vinyl Single,Vinyl,2016-01-01,5.198931395 +Vinyl Single,Vinyl,2017-01-01,6.33967756 +Vinyl Single,Vinyl,2018-01-01,5.386196747 +Vinyl Single,Vinyl,2019-01-01,6.795945687 diff --git a/docs/data/volcano.json b/docs/data/volcano.json new file mode 100644 index 00000000000000..270f6c9c14df0e --- /dev/null +++ b/docs/data/volcano.json @@ -0,0 +1 @@ +{"width":87,"height":61,"values":[103,104,104,105,105,106,106,106,107,107,106,106,105,105,104,104,104,104,105,107,107,106,105,105,107,108,109,110,110,110,110,110,110,109,109,109,109,109,109,108,107,107,107,107,106,106,105,104,104,104,104,104,104,104,103,103,103,103,102,102,101,101,100,100,100,100,100,99,98,97,97,96,96,96,96,96,96,96,95,95,95,94,94,94,94,94,94,104,104,105,105,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,108,108,108,106,106,108,109,110,110,112,112,113,112,111,110,110,110,110,109,109,109,108,107,107,107,107,106,106,105,104,104,104,104,104,104,104,103,103,103,103,102,102,101,101,100,100,100,100,99,99,98,97,97,96,96,96,96,96,96,96,95,95,95,94,94,94,94,94,104,105,105,106,106,107,107,108,108,108,108,108,108,108,108,108,108,108,108,108,110,110,110,110,110,110,110,111,113,115,116,115,113,112,110,110,110,110,110,110,109,108,108,108,108,107,106,105,105,105,105,105,105,104,104,104,104,103,103,103,102,102,102,101,100,100,100,99,99,98,97,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,105,105,106,106,107,107,108,108,109,109,109,109,109,110,110,110,110,110,110,110,111,112,115,115,115,115,115,116,116,117,119,118,117,116,114,113,112,110,110,110,110,110,110,109,109,108,107,106,106,106,106,106,105,105,105,104,104,104,103,103,103,102,102,102,101,100,100,99,99,98,97,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,105,106,106,107,107,108,108,109,109,110,110,110,110,111,110,110,110,110,111,114,115,116,121,121,121,121,121,122,123,124,124,123,121,119,118,117,115,114,112,111,110,110,110,110,110,110,109,109,108,109,107,107,106,106,105,105,104,104,104,104,103,103,102,102,102,101,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,106,106,107,107,107,108,109,109,110,110,111,111,112,113,112,111,111,112,115,118,118,119,126,128,128,127,128,128,129,130,129,128,127,125,122,120,118,117,115,114,112,110,110,110,110,110,111,110,110,110,109,109,108,107,106,105,105,105,104,104,104,103,103,102,102,102,101,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,106,107,107,108,108,108,109,110,110,111,112,113,114,115,114,115,116,116,119,123,125,130,133,134,134,134,134,135,135,136,135,134,132,130,128,124,121,119,118,116,114,112,111,111,111,112,112,111,110,110,110,109,108,108,107,108,107,106,105,104,104,104,103,103,103,102,101,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,94,107,107,108,108,109,109,110,110,112,113,114,115,116,117,117,120,120,121,123,129,134,136,138,139,139,139,140,142,142,141,141,140,137,134,131,127,124,122,120,118,117,115,113,114,113,114,114,113,112,111,110,110,109,108,107,106,105,105,105,104,104,104,103,103,103,101,100,100,99,99,98,97,96,96,96,96,96,96,96,96,96,95,95,94,94,94,94,107,108,108,109,109,110,111,112,114,115,116,117,118,119,121,125,125,127,131,136,140,141,142,144,144,145,148,149,148,147,146,144,140,138,136,130,127,125,123,121,119,118,117,117,116,116,116,115,114,113,113,111,110,109,108,107,106,105,105,103,103,102,102,102,103,101,100,100,100,99,98,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,107,108,109,109,110,110,110,113,115,117,118,119,120,123,126,129,131,134,139,142,144,145,147,148,150,152,154,154,153,154,151,149,146,143,140,136,130,128,126,124,122,121,120,119,118,117,117,117,116,116,115,113,112,110,109,108,107,106,106,105,104,103,102,101,101,100,100,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,107,108,109,109,110,110,110,112,115,117,119,122,125,127,130,133,137,141,143,145,148,149,152,155,157,159,160,160,161,162,159,156,153,149,146,142,139,134,130,128,126,125,122,120,120,120,119,119,119,118,117,115,113,111,110,110,109,108,107,106,106,105,104,104,103,102,100,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,95,94,94,108,108,109,109,110,110,110,112,115,118,121,125,128,131,134,138,141,145,147,149,152,157,160,161,163,166,169,170,170,171,168,162,158,155,152,148,144,140,136,132,129,127,124,122,121,120,120,120,120,120,119,117,115,113,110,110,110,110,109,108,108,107,107,106,105,104,102,100,100,100,99,98,97,96,96,96,96,96,96,96,96,96,95,95,95,94,94,108,109,109,110,110,111,112,114,117,120,124,128,131,135,138,142,145,149,152,155,158,163,166,167,170,173,175,175,175,173,171,169,164,160,156,153,149,144,140,136,131,129,126,124,123,123,122,121,120,120,120,119,117,115,111,110,110,110,110,110,109,109,110,109,108,106,103,101,100,100,100,98,97,96,96,96,96,96,96,96,96,96,95,95,95,95,94,108,109,110,110,110,113,114,116,119,122,126,131,134,138,141,145,149,152,156,160,164,169,171,174,177,175,178,179,177,175,174,172,168,163,160,157,151,147,143,138,133,130,128,125,125,124,123,122,121,121,120,120,118,116,115,111,110,110,110,110,113,114,113,112,110,107,105,102,100,100,100,98,97,96,96,96,96,96,96,96,96,96,96,95,95,95,94,108,109,110,110,112,115,116,118,122,125,129,133,137,140,144,149,152,157,161,165,169,173,176,179,179,180,180,180,178,178,176,175,171,165,163,160,153,148,143,139,135,132,129,128,127,125,124,124,123,123,122,122,120,118,117,118,115,117,118,118,119,117,116,115,112,109,107,105,100,100,100,100,97,96,96,96,96,96,96,96,96,96,96,95,95,95,95,108,109,110,111,114,116,118,122,127,130,133,136,140,144,148,153,157,161,165,169,173,177,180,180,180,180,181,180,180,180,179,178,173,168,165,161,156,149,143,139,136,133,130,129,128,126,126,125,125,125,125,124,122,121,120,120,120,120,121,122,123,122,120,117,114,111,108,106,105,100,100,100,100,96,96,96,96,96,96,96,96,96,96,96,95,95,95,107,108,110,113,115,118,121,126,131,134,137,140,143,148,152,157,162,165,169,173,177,181,181,181,180,181,181,181,180,180,180,178,176,170,167,163,158,152,145,140,137,134,132,130,129,127,127,126,127,128,128,126,125,125,125,123,126,128,129,130,130,125,124,119,116,114,112,110,107,106,105,100,100,100,96,96,96,96,96,96,96,96,96,96,96,95,95,107,109,111,116,119,122,125,130,135,137,140,144,148,152,156,161,165,168,172,177,181,184,181,181,181,180,180,180,180,180,180,178,178,173,168,163,158,152,146,141,138,136,134,132,130,129,128,128,130,130,130,129,128,129,129,130,132,133,133,134,134,132,128,122,119,116,114,112,108,106,105,105,100,100,100,97,97,97,97,97,97,97,96,96,96,96,95,108,110,112,117,122,126,129,135,139,141,144,149,153,156,160,165,168,171,177,181,184,185,182,180,180,179,178,178,180,179,179,178,176,173,168,163,157,152,148,143,139,137,135,133,131,130,130,131,132,132,132,131,132,132,133,134,136,137,137,137,136,134,131,124,121,118,116,114,111,109,107,106,105,100,100,100,97,97,97,97,97,97,97,96,96,96,96,108,110,114,120,126,129,134,139,142,144,146,152,158,161,164,168,171,175,181,184,186,186,183,179,178,178,177,175,178,177,177,176,175,173,168,162,156,153,149,145,142,140,138,136,133,132,132,132,134,134,134,134,135,136,137,138,140,140,140,140,139,137,133,127,123,120,118,115,112,108,108,106,106,105,100,100,100,98,98,98,98,98,98,97,96,96,96,108,110,116,122,128,133,137,141,143,146,149,154,161,165,168,172,175,180,184,188,189,187,182,178,176,176,175,173,174,173,175,174,173,171,168,161,157,154,150,148,145,143,141,138,135,135,134,135,135,136,136,137,138,139,140,140,140,140,140,140,140,139,135,130,126,123,120,117,114,111,109,108,107,106,105,100,100,100,99,99,98,98,98,98,97,97,96,110,112,118,124,130,135,139,142,145,148,151,157,163,169,172,176,179,183,187,190,190,186,180,177,175,173,170,169,169,170,171,172,170,170,167,163,160,157,154,152,149,147,144,140,137,137,136,137,138,138,139,140,141,140,140,140,140,140,140,140,140,138,134,131,128,124,121,118,115,112,110,109,108,107,106,105,100,100,100,99,99,99,98,98,98,97,97,110,114,120,126,131,136,140,143,146,149,154,159,166,171,177,180,182,186,190,190,190,185,179,174,171,168,166,163,164,163,166,169,170,170,168,164,162,161,158,155,153,150,147,143,139,139,139,139,140,141,141,142,142,141,140,140,140,140,140,140,140,137,134,131,128,125,122,119,116,114,112,110,109,109,108,107,105,100,100,100,99,99,99,98,98,97,97,110,115,121,127,132,136,140,144,148,151,157,162,169,174,178,181,186,188,190,191,190,184,177,172,168,165,162,159,158,158,159,161,166,167,169,166,164,163,161,159,156,153,149,146,142,142,141,142,143,143,143,143,144,142,141,140,140,140,140,140,140,138,134,131,128,125,123,120,117,116,114,112,110,109,108,107,106,105,102,101,100,99,99,99,98,98,97,110,116,121,127,132,136,140,144,148,154,160,166,171,176,180,184,189,190,191,191,191,183,176,170,166,163,159,156,154,155,155,158,161,165,170,167,166,165,163,161,158,155,152,150,146,145,145,145,146,146,144,145,145,144,142,141,140,140,140,140,138,136,134,131,128,125,123,121,119,117,115,113,112,111,111,110,108,106,105,102,100,100,99,99,99,98,98,110,114,119,126,131,135,140,144,149,158,164,168,172,176,183,184,189,190,191,191,190,183,174,169,165,161,158,154,150,151,152,155,159,164,168,168,168,167,165,163,160,158,155,153,150,148,148,148,148,148,147,146,146,145,143,142,141,140,139,138,136,134,132,131,128,126,124,122,120,118,116,114,113,113,112,111,108,107,106,105,104,102,100,99,99,99,99,110,113,119,125,131,136,141,145,150,158,164,168,172,177,183,187,189,191,192,191,190,183,174,168,164,160,157,153,150,149,150,154,158,162,166,170,170,168,166,164,162,160,158,155,152,151,151,151,151,151,149,148,147,146,145,143,142,140,139,137,135,134,132,131,129,127,125,123,121,119,117,116,114,114,113,112,110,108,107,105,103,100,100,100,100,99,99,110,112,118,124,130,136,142,146,151,157,163,168,174,178,183,187,189,190,191,192,189,182,174,168,164,160,157,153,149,148,149,153,157,161,167,170,170,170,168,166,165,163,159,156,154,153,155,155,155,155,152,150,149,147,145,143,141,140,139,138,136,134,133,131,130,128,126,124,122,120,119,117,116,115,114,113,111,110,107,106,105,105,102,101,100,100,100,110,111,116,122,129,137,142,146,151,158,164,168,172,179,183,186,189,190,192,193,188,182,174,168,164,161,157,154,151,149,151,154,158,161,167,170,170,170,170,169,168,166,160,157,156,156,157,158,159,159,156,153,150,148,146,144,141,140,140,138,136,135,134,133,131,129,127,125,123,122,120,118,117,116,115,114,112,111,110,108,107,106,105,104,102,100,100,108,110,115,121,131,137,142,147,152,159,163,167,170,177,182,184,187,189,192,194,189,183,174,169,165,161,158,156,154,153,154,157,160,164,167,171,172,174,174,173,171,168,161,159,158,158,159,161,161,160,158,155,151,149,147,144,142,141,140,138,137,136,135,134,132,130,128,126,125,123,121,119,118,117,116,115,113,112,112,111,110,109,108,107,105,101,100,108,110,114,120,128,134,140,146,152,158,162,166,169,175,180,183,186,189,193,195,190,184,176,171,167,163,160,158,157,156,157,159,163,166,170,174,176,178,178,176,172,167,164,161,161,160,161,163,163,163,160,157,153,150,148,146,144,142,141,140,139,138,136,135,134,133,129,127,126,124,122,121,119,118,117,116,114,113,112,111,110,110,109,109,107,104,100,107,110,115,119,123,129,135,141,146,156,161,165,168,173,179,182,186,189,193,194,191,184,179,175,170,166,162,161,160,160,161,162,165,169,172,176,178,179,179,176,172,168,165,163,163,163,163,165,166,164,161,158,155,152,150,147,146,144,143,142,141,139,139,138,137,135,131,128,127,125,124,122,121,119,118,116,115,113,112,111,111,110,110,109,109,105,100,107,110,114,117,121,126,130,135,142,151,159,163,167,171,177,182,185,189,192,193,191,187,183,179,174,169,167,166,164,164,165,166,169,171,174,178,179,180,180,178,173,169,166,165,165,166,165,168,169,166,163,159,157,154,152,149,148,147,146,145,143,142,141,140,139,138,133,130,128,127,125,124,122,120,118,117,115,112,111,111,111,111,110,109,108,106,100,107,109,113,118,122,126,129,134,139,150,156,160,165,170,175,181,184,188,191,192,192,189,185,181,177,173,171,169,168,167,169,170,172,174,176,178,179,180,180,179,175,170,168,166,166,168,168,170,170,168,164,160,158,155,152,151,150,149,149,148,147,145,144,143,142,141,136,133,130,129,127,125,123,120,119,118,115,112,111,111,111,110,109,109,109,105,100,105,107,111,117,121,124,127,131,137,148,154,159,164,168,174,181,184,187,190,191,191,190,187,184,180,178,175,174,172,171,173,173,173,176,178,179,180,180,180,179,175,170,168,166,168,169,170,170,170,170,166,161,158,156,154,153,151,150,150,150,150,148,147,146,145,143,139,135,133,131,129,126,124,121,120,118,114,111,111,111,110,110,109,107,106,104,100,104,106,110,114,118,121,125,129,135,142,150,157,162,167,173,180,183,186,188,190,190,190,189,184,183,181,180,179,179,176,177,176,176,177,178,179,180,180,179,177,173,169,167,166,167,169,170,170,170,170,167,161,159,157,155,153,151,150,150,150,150,150,150,149,147,145,141,138,135,133,130,127,125,123,121,118,113,111,110,110,109,109,107,106,105,103,100,104,106,108,111,115,119,123,128,134,141,148,154,161,166,172,179,182,184,186,189,190,190,190,187,185,183,180,180,180,179,179,177,176,177,178,178,178,177,176,174,171,168,166,164,166,168,170,170,170,170,168,162,159,157,155,153,151,150,150,150,150,150,150,150,150,148,144,140,137,134,132,129,127,125,122,117,111,110,107,107,106,105,104,103,102,101,100,103,105,107,110,114,118,122,127,132,140,146,153,159,165,171,176,180,183,185,186,189,190,188,187,184,182,180,180,180,179,178,176,176,176,176,174,174,173,172,170,168,167,165,163,164,165,169,170,170,170,166,162,159,157,155,153,151,150,150,150,150,150,150,150,150,150,146,142,139,136,133,131,128,125,122,117,110,108,106,105,104,103,103,101,101,101,101,102,103,106,108,112,116,121,125,130,138,145,151,157,163,170,174,178,181,181,184,186,186,187,186,184,181,180,180,180,179,178,174,173,173,171,170,170,169,168,167,166,164,163,162,161,164,167,169,170,168,164,160,158,157,155,153,151,150,150,150,150,150,150,150,150,150,147,144,141,138,135,133,128,125,122,116,109,107,104,104,103,102,101,101,101,101,101,101,102,105,107,110,115,120,124,129,136,143,149,155,162,168,170,174,176,178,179,181,182,184,184,183,181,180,180,179,177,174,172,170,168,166,165,164,164,164,164,162,160,159,159,158,160,162,164,166,166,163,159,157,156,155,153,151,150,150,150,150,150,150,150,150,150,149,146,143,140,137,133,129,124,119,112,108,105,103,103,102,101,101,101,101,100,100,101,102,104,106,109,113,118,122,127,133,141,149,155,161,165,168,170,172,175,176,177,179,181,181,181,180,180,179,177,174,171,167,165,163,161,160,160,160,160,160,157,155,155,154,154,155,157,159,161,161,161,159,156,154,154,153,151,150,150,150,150,150,150,150,150,150,149,147,144,141,137,133,129,123,116,110,107,104,102,102,101,101,101,100,100,100,100,102,103,104,106,108,112,116,120,125,129,137,146,154,161,163,165,166,169,172,173,174,175,177,178,178,178,178,177,174,171,168,164,160,158,157,157,156,156,156,155,152,151,150,150,151,151,152,154,156,157,157,156,155,153,152,152,151,150,150,150,150,150,150,150,150,150,150,147,144,141,138,133,127,120,113,109,106,103,101,101,101,100,100,100,100,100,100,103,104,105,106,108,110,114,118,123,127,133,143,150,156,160,160,161,162,167,170,171,172,173,175,175,174,174,173,171,168,164,160,156,155,154,153,153,152,152,150,149,148,148,148,148,148,149,149,150,152,152,152,152,151,150,150,150,150,150,150,150,150,150,150,150,150,149,147,144,141,138,132,125,118,111,108,105,103,102,101,101,101,100,100,100,100,100,104,105,106,107,108,110,113,117,120,125,129,138,145,151,156,156,157,158,160,164,166,168,170,171,172,171,171,169,166,163,160,156,153,151,150,150,149,149,149,148,146,146,146,146,146,146,146,147,148,148,149,149,149,148,148,148,148,149,149,150,150,150,150,150,150,150,148,146,143,141,136,129,123,117,110,108,105,104,103,102,102,101,101,100,100,100,100,103,104,105,106,107,109,111,115,118,122,127,133,140,143,150,152,153,155,157,159,162,164,167,168,168,168,167,166,163,160,157,153,150,148,148,147,147,147,145,145,144,143,143,143,144,144,144,144,145,145,145,145,146,146,146,146,146,147,147,148,149,150,150,150,150,149,147,145,143,141,134,127,123,117,111,108,105,105,104,104,103,103,102,101,100,100,100,102,103,104,105,106,107,109,113,116,120,125,129,133,137,143,147,149,151,152,154,158,161,164,165,164,164,163,163,160,157,154,151,149,147,145,145,144,143,141,140,141,141,141,141,141,142,142,142,142,142,142,142,143,143,143,144,144,145,146,146,146,147,148,148,148,148,145,143,142,140,134,128,123,117,112,108,106,105,105,104,104,103,102,101,100,100,99,102,103,104,105,105,106,108,110,113,118,123,127,129,132,137,141,142,142,145,150,154,157,161,161,160,160,160,159,157,154,151,148,146,145,143,142,142,139,137,136,137,137,138,138,139,139,139,139,139,139,139,139,140,140,141,142,142,143,144,144,144,145,145,145,145,145,144,142,140,139,136,129,124,119,113,109,106,106,105,104,103,102,101,101,100,99,99,102,103,104,104,105,106,107,108,111,116,121,124,126,128,131,134,135,137,139,143,147,152,156,157,157,157,156,155,153,151,148,146,143,142,141,140,138,135,133,132,132,133,133,133,134,135,135,135,135,136,136,137,137,138,138,139,140,141,141,142,142,143,142,142,141,141,140,139,137,134,133,129,125,121,114,110,107,106,106,104,103,102,101,100,99,99,99,102,103,104,104,105,105,106,108,110,113,118,121,124,126,128,130,132,134,136,139,143,147,150,154,154,154,153,151,149,148,146,143,141,139,137,136,132,130,128,128,128,129,129,130,130,131,132,132,132,133,134,134,135,135,136,137,138,139,139,140,140,140,139,139,138,137,137,135,132,130,129,127,124,120,116,112,109,106,105,103,102,101,101,100,99,99,99,101,102,103,104,104,105,106,107,108,110,114,119,121,124,126,128,129,132,134,137,140,143,147,149,151,151,151,149,147,145,143,141,138,136,134,131,128,126,124,125,125,126,126,127,128,128,129,129,130,130,131,131,132,132,133,134,135,135,136,136,137,137,136,136,135,134,133,131,129,128,127,126,123,119,115,111,109,107,105,104,103,102,101,100,100,100,99,101,102,103,103,104,104,105,106,108,110,112,116,119,121,124,125,127,130,132,135,137,140,143,147,149,149,149,147,145,143,141,139,136,133,131,128,125,122,121,122,122,122,123,125,125,126,127,127,127,128,128,128,129,129,130,131,131,132,132,133,133,133,132,132,131,131,130,129,128,126,125,124,121,117,111,109,108,106,105,104,103,102,101,101,100,100,100,100,101,102,103,103,104,105,106,107,108,110,114,117,119,121,123,126,128,130,133,136,139,141,144,146,147,146,145,143,141,138,136,133,130,127,124,121,120,120,120,120,120,121,122,123,124,124,125,125,126,126,125,126,126,126,125,126,127,128,128,129,129,128,128,128,128,128,128,126,125,123,122,119,114,109,108,107,106,105,104,103,103,102,102,101,100,100,100,101,102,103,104,105,106,107,108,109,110,112,115,117,120,122,125,127,130,132,135,137,139,142,144,144,144,142,140,138,136,132,129,126,123,120,120,119,119,118,119,119,120,120,120,121,122,122,123,123,123,123,122,123,122,122,121,122,122,122,123,123,123,124,125,125,126,126,125,124,122,120,116,113,109,107,106,105,104,104,103,102,102,101,101,100,100,100,101,102,103,104,105,106,107,108,109,110,112,114,117,119,122,124,127,129,131,134,136,138,140,142,142,142,140,138,136,133,129,125,122,120,119,118,118,117,116,117,117,118,119,119,120,120,120,121,121,121,122,121,120,120,120,119,119,120,120,120,120,120,120,123,123,124,124,124,123,121,119,114,112,108,106,106,104,104,103,102,102,101,101,100,100,99,101,102,103,104,105,106,107,108,109,110,111,113,114,116,119,121,124,126,128,130,133,135,137,138,140,140,139,137,135,133,131,127,122,120,118,118,117,117,116,115,116,116,117,118,118,118,119,119,120,120,121,121,120,119,119,118,117,117,118,119,118,118,118,119,120,122,123,123,123,122,120,117,113,110,108,106,105,104,103,103,102,101,101,100,100,99,99,101,102,103,104,105,106,107,108,109,110,111,111,113,115,118,121,123,125,127,129,131,133,135,137,138,138,137,134,132,130,127,122,120,118,116,116,116,116,115,113,114,115,116,117,117,118,118,119,119,119,120,120,119,118,117,117,116,116,117,117,117,118,119,119,119,120,121,121,121,121,119,116,113,110,107,105,105,103,103,103,102,101,100,100,99,99,99,101,102,103,104,105,106,107,108,109,110,111,112,114,116,117,120,122,124,126,129,130,132,133,135,136,136,134,132,129,126,122,120,118,116,114,114,114,114,114,113,113,114,115,116,116,117,117,117,118,118,119,119,118,117,116,116,115,115,116,116,116,117,117,118,118,119,120,120,120,120,119,116,113,109,106,104,104,103,102,102,101,101,100,99,99,99,98,101,102,103,104,105,106,107,108,109,110,111,113,115,117,117,118,121,123,126,128,130,130,131,132,133,134,131,129,125,122,120,118,116,114,113,112,112,113,112,112,111,112,113,113,114,115,116,116,117,117,118,118,116,116,115,115,115,114,114,115,116,116,117,117,118,118,119,119,120,120,117,115,112,108,106,104,103,102,102,102,101,100,99,99,99,98,98,101,102,103,104,105,105,106,107,108,109,110,111,113,115,117,118,120,122,125,126,127,128,129,130,131,131,128,125,121,120,118,116,114,113,113,111,111,111,111,110,109,110,111,112,113,113,114,115,115,116,117,117,116,115,114,114,113,113,114,114,115,115,116,116,117,118,118,119,119,118,116,114,112,108,105,103,103,102,101,101,100,100,99,99,98,98,97,100,101,102,103,104,105,106,107,108,109,110,110,111,113,115,118,120,121,122,124,125,125,126,127,128,127,124,121,120,118,116,114,113,112,112,110,109,109,108,108,108,109,110,111,112,112,113,114,114,115,116,116,115,114,113,112,112,113,113,114,114,115,115,116,116,117,117,118,118,117,115,113,111,107,105,103,102,101,101,100,100,100,99,99,98,98,97,100,101,102,103,104,105,105,106,107,108,109,110,110,111,114,116,118,120,120,121,122,122,123,124,123,123,120,118,117,115,114,115,113,111,110,109,108,108,107,107,107,108,109,110,111,111,112,113,113,114,115,115,114,113,112,111,111,112,112,112,113,114,114,115,115,116,116,117,117,116,114,112,109,106,104,102,101,100,100,99,99,99,99,98,98,97,97]} diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 00000000000000..7e000baedebc88 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,306 @@ + + +# Getting started + +D3 supports a variety of environments. + +## Try D3 online + +The fastest way to get started (and get help) with D3 is on [Observable](https://observablehq.com)! D3 is available by default in notebooks as part of Observable’s standard library. To create something with D3, return the generated DOM element from a cell. Here is a blank chart to get you started: + + + +```js +{ + // Declare the chart dimensions and margins. + const width = 640; + const height = 400; + const marginTop = 20; + const marginRight = 20; + const marginBottom = 30; + const marginLeft = 40; + + // Declare the x (horizontal position) scale. + const x = d3.scaleUtc() + .domain([new Date("2023-01-01"), new Date("2024-01-01")]) + .range([marginLeft, width - marginRight]); + + // Declare the y (vertical position) scale. + const y = d3.scaleLinear() + .domain([0, 100]) + .range([height - marginBottom, marginTop]); + + // Create the SVG container. + const svg = d3.create("svg") + .attr("width", width) + .attr("height", height); + + // Add the x-axis. + svg.append("g") + .attr("transform", `translate(0,${height - marginBottom})`) + .call(d3.axisBottom(x)); + + // Add the y-axis. + svg.append("g") + .attr("transform", `translate(${marginLeft},0)`) + .call(d3.axisLeft(y)); + + // Return the SVG element. + return svg.node(); +} +``` + +As a more complete example, try one of these starter templates: + +* [Area chart](https://observablehq.com/@d3/area-chart/2?intent=fork) +* [Bar chart](https://observablehq.com/@d3/bar-chart/2?intent=fork) +* [Donut chart](https://observablehq.com/@d3/donut-chart/2?intent=fork) +* [Histogram](https://observablehq.com/@d3/histogram/2?intent=fork) +* [Line chart](https://observablehq.com/@d3/line-chart/2?intent=fork) + +See the [D3 gallery](https://observablehq.com/@d3/gallery) for more forkable examples. + +Observable includes a few D3 snippets when you click **+** to add a cell (type “d3” when the cell menu is open to filter), as well as convenient [sample datasets](https://observablehq.com/@observablehq/sample-datasets) to try out D3 features. Or upload a CSV or JSON file to start playing with your data. You can also fork any of the [hundreds of notebooks](https://observablehq.com/@d3?tab=notebooks) we’ve published for a head start. + +Observable is free for public use. Sign up for a [Pro account](https://observablehq.com/pricing) to connect to private databases, collaborate on private notebooks, and more. + +## D3 in vanilla HTML + +In vanilla HTML, you can load D3 from a CDN such as jsDelivr or you can download it locally. We recommend using the CDN-hosted ES module bundle. But for those who need it, we also provide a UMD bundle that exports the `d3` global when loaded as a plain script. + +:::code-group +```html [ESM + CDN] + +
+ +``` + +```html [UMD + CDN] + +
+ + +``` + +```html [UMD + local] + +
+ + +``` +::: + +If you’d prefer to run D3 locally (or offline), you can download the UMD bundles of D3 here: + +- d3.v7.js +- d3.v7.min.js + +Then, create an `index.html` file as shown above in the **UMD + local** tab. Use the non-minified bundle for debugging, and the minified bundle for faster performance in production. + +## Installing from npm + +If you’re developing a web application using Node, you can install D3 via yarn, npm, pnpm, or your preferred package manager. + +:::code-group + +```bash [yarn] +yarn add d3 +``` + +```bash [npm] +npm install d3 +``` + +```bash [pnpm] +pnpm add d3 +``` + +::: + +You can then load D3 into your app as: + +```js +import * as d3 from "d3"; +``` + +You can instead import specific symbols if you prefer: + +```js +import {select, selectAll} from "d3"; +``` + +Alternatively you can install and import from D3 submodules: + +```js +import {mean, median} from "d3-array"; +``` + +TypeScript declarations are available via DefinitelyTyped. + +## D3 in React + +Most D3 modules (including d3-scale, d3-array, d3-interpolate, and d3-format) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as this one-dimensional dot plot of numbers: + +```jsx +import {scaleLinear, extent} from "d3"; + +function DotPlot({data, width}) { + const x = scaleLinear(extent(data), [5, width - 5]).nice(true); + return ( + + {data.map((d, i) => ( + + ))} + + ); +} +``` + +Some D3 modules (d3-selection, d3-transition, d3-axis, d3-brush, d3-zoom) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. For example, to add an axis to the example above: + +```jsx +import {scaleLinear, extent, select, axisBottom} from "d3"; +import {useRef, useEffect} from "react"; + +function DotPlot({data, width}) { + const x = scaleLinear(extent(data), [5, width - 5]).nice(true); + const ref = useRef(); + + useEffect(() => { + const g = select(ref.current).append("g") + .attr("transform", "translate(0,4)") + .call(axisBottom(x).ticks(5)); + return () => g.remove(); + }, [x]); + + return ( + + {data.map((d, i) => ( + + ))} + + ); +} +``` + +For more guidance using D3 in React, see [Amelia Wattenberger’s post](https://2019.wattenberger.com/blog/react-and-d3). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000000000..871eda69bd94b0 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,98 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home +titleTemplate: "The JavaScript library for bespoke data visualization" + +head: + - - link + - rel: canonical + href: https://d3js.org + - - meta + - name: title + content: D3 + - - meta + - name: description + content: The JavaScript library for bespoke data visualization + +hero: + name: "D3" + text: "The JavaScript library for bespoke data visualization" + tagline: Bring your data to life with web standards + image: + src: /logo.svg + alt: D3 + actions: + - theme: brand + text: Get started + link: /getting-started + - theme: alt + text: What is D3? + link: /what-is-d3 + - theme: alt + text: Examples + link: https://observablehq.com/@d3/gallery + +features: + - title: Selections and transitions + details: Create, update, and animate the DOM based on data, without the overhead of a virtual DOM. + link: /d3-selection + - title: Scales and axes + details: Transform and encode abstract data as visual values using scales, and then document the encodings with axes. + link: /d3-scale + - title: Shapes + details: Arcs, areas, curves, lines, links, pies, stacks, symbols… + link: /d3-shape + - title: Interactions + details: Panning, zooming, brushing, dragging, event handling… + link: /d3-brush + - title: Layouts + details: Treemaps, trees, force-directed graphs, Voronoi, contours, density estimation, chord diagrams, circle-packing… + link: /d3-hierarchy + - title: Geographic maps + details: More projections than you can shake a stick at, with arbitrary aspects, adaptive sampling, and flexible clipping. + link: /d3-geo + - title: … and more! + details: Parsing, colors, dates, data, math, and whatever else you might need to visualize data. + link: /d3-array + - title: Powering Observable Plot + details: The D3 team also builds Observable Plot, a high-level API for quick charts built on top of D3. + link: https://observablehq.com/plot + linkText: Try Observable Plot + - title: Built by Observable + details: D3 is developed by Observable, the platform for collaborative data analysis. + link: https://observablehq.com + linkText: Visit Observable +--- + + + + + + diff --git a/docs/logo.svg b/docs/logo.svg new file mode 100644 index 00000000000000..afc516e64d2edd --- /dev/null +++ b/docs/logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/what-is-d3.md b/docs/what-is-d3.md new file mode 100644 index 00000000000000..706332f4e550eb --- /dev/null +++ b/docs/what-is-d3.md @@ -0,0 +1,3 @@ +# What is D3? + +Coming soon. diff --git a/docs/why-d3.md b/docs/why-d3.md new file mode 100644 index 00000000000000..459e09c75be467 --- /dev/null +++ b/docs/why-d3.md @@ -0,0 +1,3 @@ +# Why D3? + +Coming soon. diff --git a/package.json b/package.json index 434d74c1584aae..273df57cb1b102 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ }, "type": "module", "files": [ - "dist/**/*.js", + "dist/d3.js", + "dist/d3.min.js", "src/**/*.js" ], "module": "src/index.js", @@ -66,17 +67,22 @@ "d3-zoom": "3" }, "devDependencies": { + "@observablehq/plot": "^0.6.7", "@rollup/plugin-json": "6", "@rollup/plugin-node-resolve": "15", + "@rollup/plugin-terser": "^0.4.0", "eslint": "8", "mocha": "10", "rollup": "3", - "rollup-plugin-terser": "7" + "vitepress": "^1.0.0-alpha.65" }, "scripts": { "test": "mocha 'test/**/*-test.js' && eslint src test", "prepublishOnly": "rm -rf dist && rollup -c", - "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd -" + "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd -", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" }, "engines": { "node": ">=12" diff --git a/rollup.config.js b/rollup.config.js index 88a983ac45c900..6e9fb376569c09 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,7 @@ import {readFileSync} from "fs"; import json from "@rollup/plugin-json"; import nodeResolve from "@rollup/plugin-node-resolve"; -import {terser} from "rollup-plugin-terser"; +import terser from "@rollup/plugin-terser"; import meta from "./package.json" assert {type: "json"}; // Extract copyrights from the LICENSE. @@ -33,6 +33,14 @@ const config = { export default [ config, + { + ...config, + output: { + ...config.output, + file: `dist/${meta.name}.mjs`, + format: "esm" + } + }, { ...config, output: { diff --git a/yarn.lock b/yarn.lock index d5fcf176f0e4f9..f63c14f07a0c85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,26 +2,266 @@ # yarn lockfile v1 -"@babel/code-frame@^7.10.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" +"@algolia/autocomplete-core@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.8.2.tgz#8d758c8652742e2761450d2b615a841fca24e10e" + integrity sha512-mTeshsyFhAqw/ebqNsQpMtbnjr+qVOSKXArEj4K0d7sqc8It1XD0gkASwecm9mF/jlOQ4Z9RNg1HbdA8JPdRwQ== + dependencies: + "@algolia/autocomplete-shared" "1.8.2" -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@algolia/autocomplete-preset-algolia@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.8.2.tgz#706e87f94c5f198c0e90502b97af09adeeddcc79" + integrity sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA== + dependencies: + "@algolia/autocomplete-shared" "1.8.2" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" +"@algolia/autocomplete-shared@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.8.2.tgz#e6972df5c6935a241f16e4909aa82902338e029d" + integrity sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g== + +"@algolia/cache-browser-local-storage@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.17.1.tgz#b2f204a436893b4856165670ec4dda12cdc055b8" + integrity sha512-e91Jpu93X3t3mVdQwF3ZDjSFMFIfzSc+I76G4EX8nl9RYXgqcjframoL05VTjcD2YCsI18RIHAWVCBoCXVZnrw== + dependencies: + "@algolia/cache-common" "4.17.1" + +"@algolia/cache-common@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.17.1.tgz#f4877f6fdc594a29ce6d032fae96f0517bf80b1d" + integrity sha512-fvi1WT8aSiGAKrcTw8Qg3RYgcwW8GZMHcqEm4AyDBEy72JZlFBSY80cTQ75MslINjCHXLDT+9EN8AGI9WVY7uA== + +"@algolia/cache-in-memory@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.17.1.tgz#7b3ab5f6de897677d92db549f8228966c62966d5" + integrity sha512-NbBt6eBWlsXc5geSpfPRC5dkIB/0Ptthw8r0yM5Z7D3sPlYdnTZSO9y9XWXIptRMwmZe4cM8iBMN8y0tzbcBkA== + dependencies: + "@algolia/cache-common" "4.17.1" + +"@algolia/client-account@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.17.1.tgz#81747c0828d2688af4a98bbed3d3b0aa7daa25f6" + integrity sha512-3rL/6ofJvyL+q8TiWM3qoM9tig+SY4gB1Vbsj+UeJPnJm8Khm+7OS+r+mFraqR6pTehYqN8yGYoE7x4diEn4aA== + dependencies: + "@algolia/client-common" "4.17.1" + "@algolia/client-search" "4.17.1" + "@algolia/transporter" "4.17.1" + +"@algolia/client-analytics@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.17.1.tgz#d6ecc75fd792fb1dee67c01497098ce175f1c4c9" + integrity sha512-Bepr2w249vODqeBtM7i++tPmUsQ9B81aupUGbDWmjA/FX+jzQqOdhW8w1CFO5kWViNKTbz2WBIJ9U3x8hOa4bA== + dependencies: + "@algolia/client-common" "4.17.1" + "@algolia/client-search" "4.17.1" + "@algolia/requester-common" "4.17.1" + "@algolia/transporter" "4.17.1" + +"@algolia/client-common@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.17.1.tgz#a8b561c1e3a19cce2c24e9a49bd822477c2f56d9" + integrity sha512-+r7kg4EgbFnGsDnoGSVNtXZO8xvZ0vzf1WAOV7sqV9PMf1bp6cpJP/3IuPrSk4t5w2KVl+pC8jfTM7HcFlfBEQ== + dependencies: + "@algolia/requester-common" "4.17.1" + "@algolia/transporter" "4.17.1" + +"@algolia/client-personalization@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.17.1.tgz#26b2c8e13e9b69afd4e2c17879f538d408b708f3" + integrity sha512-gJku9DG/THJpfsSlG/az0a3QIn+VVff9kKh8PG8+7ZfxOHS+C+Y5YSeZVsC+c2cfoKLPo3CuHIiJ/p86erR3bA== + dependencies: + "@algolia/client-common" "4.17.1" + "@algolia/requester-common" "4.17.1" + "@algolia/transporter" "4.17.1" + +"@algolia/client-search@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.17.1.tgz#defaf56083e613fb593a9a49837b6aa551ed38eb" + integrity sha512-Q5YfT5gVkx60PZDQBqp/zH9aUbBdC7HVvxupiHUgnCKqRQsRZjOhLest7AI6FahepuZLBZS62COrO7v+JvKY7w== + dependencies: + "@algolia/client-common" "4.17.1" + "@algolia/requester-common" "4.17.1" + "@algolia/transporter" "4.17.1" + +"@algolia/logger-common@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.17.1.tgz#fe50f67a86276cebdfd8337bc5d925f7a3bf9e43" + integrity sha512-Us28Ot+fLEmX9M96sa65VZ8EyEEzhYPxfhV9aQyKDjfXbUdJlJxKt6wZpoEg9RAPSdO8IjK9nmuW2P8au3rRsg== + +"@algolia/logger-console@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.17.1.tgz#d9d6dc0bb6ad1321b66163491cc4618d27beb73d" + integrity sha512-iKGQTpOjHiE64W3JIOu6dmDvn+AfYIElI9jf/Nt6umRPmP/JI9rK+OHUoW4pKrBtdG0DPd62ppeNXzSnLxY6/g== + dependencies: + "@algolia/logger-common" "4.17.1" + +"@algolia/requester-browser-xhr@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.17.1.tgz#8be50e4196cd9d1ec311970845a42f2aee35860e" + integrity sha512-W5mGfGDsyfVR+r4pUFrYLGBEM18gs38+GNt5PE5uPULy4uVTSnnVSkJkWeRkmLBk9zEZ/Nld8m4zavK6dtEuYg== + dependencies: + "@algolia/requester-common" "4.17.1" + +"@algolia/requester-common@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.17.1.tgz#3b3912c8df1e05f0fd49f4c9a7caa3fe45d2d995" + integrity sha512-HggXdjvVFQR0I5l7hM5WdHgQ1tqcRWeyXZz8apQ7zPWZhirmY2E9D6LVhDh/UnWQNEm7nBtM+eMFONJ3bZccIQ== + +"@algolia/requester-node-http@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.17.1.tgz#f4eeee985833ad2b51ac9ff757be5c1a786ff80a" + integrity sha512-NzFWecXT6d0PPsQY9L+/qoK2deF74OLcpvqCH+Vh3mh+QzPsFafcBExdguAjZsAWDn1R6JEeFW7/fo/p0SE57w== + dependencies: + "@algolia/requester-common" "4.17.1" + +"@algolia/transporter@4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.17.1.tgz#9508e08e984e110603ec66a19362017c1df59e05" + integrity sha512-ZM+qhX47Vh46mWH8/U9ihvy98HdTYpYQDSlqBD7IbiUbbyoCMke+qmdSX2MGhR2FCcXBSxejsJKKVAfbpaLVgg== + dependencies: + "@algolia/cache-common" "4.17.1" + "@algolia/logger-common" "4.17.1" + "@algolia/requester-common" "4.17.1" + +"@babel/parser@^7.20.15", "@babel/parser@^7.21.3": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32" + integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA== + +"@docsearch/css@3.4.0", "@docsearch/css@^3.3.5": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.4.0.tgz#4d4fc36352b06b512e97412c37c005f07c9a968b" + integrity sha512-Hg8Xfma+rFwRi6Y/pfei4FJoQ1hdVURmmNs/XPoMTCPAImU+d5yxj+M+qdLtNjWRpfWziU4dQcqY94xgFBn2dg== + +"@docsearch/js@^3.3.5": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.4.0.tgz#aac1048fb80e567f369f5d7fe1f7bd5cd7e81948" + integrity sha512-uOtOHZJv+5PQmL68+srVzlGhLejnEBJgZl1bR87Zh/uK5RUI7p6el1R8hGTl2F8K2tCloNRxTMtXyYUNbMV+qw== + dependencies: + "@docsearch/react" "3.4.0" + preact "^10.0.0" + +"@docsearch/react@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.4.0.tgz#12ef4977064f7f8d02ea35706d60e172c101395a" + integrity sha512-ufrp5879XYGojgS30ZAp8H4qIMbahRHB9M85VDBP36Xgz5QjYM54i1URKj5e219F7gqTtOivfztFTij6itc0MQ== + dependencies: + "@algolia/autocomplete-core" "1.8.2" + "@algolia/autocomplete-preset-algolia" "1.8.2" + "@docsearch/css" "3.4.0" + algoliasearch "^4.0.0" + +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + +"@esbuild/darwin-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== + +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -106,7 +346,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -140,6 +380,15 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@observablehq/plot@^0.6.7": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@observablehq/plot/-/plot-0.6.8.tgz#cb4a1f744a087e00119e68bb9a84d24c12294cde" + integrity sha512-P8+ThM1fF5TyXov5fgDBy877N38WiJpFDwuqjXKK0ln80HC4x8hSuRCLaB+JjpKjQm7ERHbgvVldws7YwWC9Qw== + dependencies: + d3 "^7.8.0" + interval-tree-1d "^1.0.0" + isoformat "^0.2.0" + "@rollup/plugin-json@6": version "6.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" @@ -159,6 +408,15 @@ is-module "^1.0.0" resolve "^1.22.1" +"@rollup/plugin-terser@^0.4.0": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz#c2bde2fe3a85e45fa68a454d48f4e73e57f98b30" + integrity sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA== + dependencies: + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" + "@rollup/pluginutils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" @@ -173,16 +431,147 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@*": - version "20.2.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.5.tgz#26d295f3570323b2837d322180dfbf1ba156fefb" - integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ== - "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== +"@types/web-bluetooth@^0.0.17": + version "0.0.17" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" + integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== + +"@vitejs/plugin-vue@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6" + integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw== + +"@vue/compiler-core@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" + integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== + dependencies: + "@babel/parser" "^7.21.3" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" + integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== + dependencies: + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/compiler-sfc@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" + integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-ssr" "3.3.4" + "@vue/reactivity-transform" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + postcss "^8.1.10" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" + integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/devtools-api@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" + integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + +"@vue/reactivity-transform@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929" + integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + +"@vue/reactivity@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" + integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== + dependencies: + "@vue/shared" "3.3.4" + +"@vue/runtime-core@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" + integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== + dependencies: + "@vue/reactivity" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/runtime-dom@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" + integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== + dependencies: + "@vue/runtime-core" "3.3.4" + "@vue/shared" "3.3.4" + csstype "^3.1.1" + +"@vue/server-renderer@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" + integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== + dependencies: + "@vue/compiler-ssr" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/shared@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" + integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== + +"@vueuse/core@10.1.2", "@vueuse/core@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.1.2.tgz#2499eadec36c5d7109338e3a2b73725040ae8011" + integrity sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA== + dependencies: + "@types/web-bluetooth" "^0.0.17" + "@vueuse/metadata" "10.1.2" + "@vueuse/shared" "10.1.2" + vue-demi ">=0.14.0" + +"@vueuse/integrations@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.1.2.tgz#e318ed2cec87711b2a110dceca2150d7fe1452d0" + integrity sha512-wUpG3Wv6LiWerOwCzOAM0iGhNQ4vfFUTkhj/xQy7TLXduh2M3D8N08aS0KqlxsejY6R8NLxydDIM+68QfHZZ8Q== + dependencies: + "@vueuse/core" "10.1.2" + "@vueuse/shared" "10.1.2" + vue-demi ">=0.14.0" + +"@vueuse/metadata@10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.1.2.tgz#d8ffe557b1042efd03a0aa88540a00c25d193ee3" + integrity sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ== + +"@vueuse/shared@10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.1.2.tgz#31d8733a217a6396eb67706319133bf62cdd8baa" + integrity sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA== + dependencies: + vue-demi ">=0.14.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -203,6 +592,26 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +algoliasearch@^4.0.0: + version "4.17.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.17.1.tgz#23926448b815bbf9a921bc6077abc1ce8d3224b2" + integrity sha512-4GDQ1RhP2qUR3x8PevFRbEdqZqIARNViZYjgTJmA1T7wRNtFA3W4Aqc/RsODqa1J8IO/QDla5x4tWuUS8NV8wA== + dependencies: + "@algolia/cache-browser-local-storage" "4.17.1" + "@algolia/cache-common" "4.17.1" + "@algolia/cache-in-memory" "4.17.1" + "@algolia/client-account" "4.17.1" + "@algolia/client-analytics" "4.17.1" + "@algolia/client-common" "4.17.1" + "@algolia/client-personalization" "4.17.1" + "@algolia/client-search" "4.17.1" + "@algolia/logger-common" "4.17.1" + "@algolia/logger-console" "4.17.1" + "@algolia/requester-browser-xhr" "4.17.1" + "@algolia/requester-common" "4.17.1" + "@algolia/requester-node-http" "4.17.1" + "@algolia/transporter" "4.17.1" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -213,12 +622,10 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" +ansi-sequence-parser@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz#4d790f31236ac20366b23b3916b789e1bde39aed" + integrity sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -250,6 +657,16 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +binary-search-bounds@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz#125e5bd399882f71e6660d4bf1186384e989fba7" + integrity sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA== + +body-scroll-lock@4.0.0-beta.0: + version "4.0.0-beta.0" + resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz#4f78789d10e6388115c0460cd6d7d4dd2bbc4f7e" + integrity sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -297,15 +714,6 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -338,13 +746,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -352,11 +753,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -386,6 +782,11 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +csstype@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" @@ -594,6 +995,42 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" +d3@^7.8.0: + version "7.8.5" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.5.tgz#fde4b760d4486cdb6f0cc8e2cbff318af844635c" + integrity sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + debug@4.3.4, debug@^4.1.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -640,6 +1077,34 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +esbuild@^0.17.5: + version "0.17.19" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== + optionalDependencies: + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -650,11 +1115,6 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - eslint-scope@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" @@ -813,6 +1273,13 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +focus-trap@^7.4.2: + version "7.4.3" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.4.3.tgz#a3dae73d44df359eb92bbf37b18e173e813b16c5" + integrity sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg== + dependencies: + tabbable "^6.1.2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -883,11 +1350,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -948,6 +1410,13 @@ inherits@2: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== +interval-tree-1d@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/interval-tree-1d/-/interval-tree-1d-1.0.4.tgz#b44f657de7ddae69ea3f98e0a9ad4bb046b07d11" + integrity sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ== + dependencies: + binary-search-bounds "^2.0.0" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1016,19 +1485,10 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +isoformat@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/isoformat/-/isoformat-0.2.1.tgz#2526344a4276a101b2881848dc337d1d2ae74494" + integrity sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" @@ -1047,6 +1507,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -1075,10 +1540,17 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +magic-string@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" + integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +mark.js@8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== minimatch@5.0.1: version "5.0.1" @@ -1094,6 +1566,11 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minisearch@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.1.0.tgz#6e74e743dbd0e88fa5ca52fef2391e0aa7055252" + integrity sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg== + mocha@10: version "10.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" @@ -1136,6 +1613,11 @@ nanoid@3.3.3: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -1206,11 +1688,30 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +postcss@^8.1.10, postcss@^8.4.23: + version "8.4.24" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" + integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.0.0: + version "10.15.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.15.1.tgz#a1de60c9fc0c79a522d969c65dcaddc5d994eede" + integrity sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1276,17 +1777,7 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rollup-plugin-terser@7: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup@3: +rollup@3, rollup@^3.21.0: version "3.23.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564" integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== @@ -1322,10 +1813,10 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" @@ -1341,6 +1832,26 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shiki@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.2.tgz#d51440800b701392b31ce2336036058e338247a1" + integrity sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A== + dependencies: + ansi-sequence-parser "^1.1.0" + jsonc-parser "^3.2.0" + vscode-oniguruma "^1.7.0" + vscode-textmate "^8.0.0" + +smob@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.0.tgz#ac9751fe54b1fc1fc8286a628d4e7f824273b95a" + integrity sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -1382,14 +1893,7 @@ supports-color@8.1.1: dependencies: has-flag "^4.0.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -1401,7 +1905,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -terser@^5.0.0: +tabbable@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.1.2.tgz#b0d3ca81d582d48a80f71b267d1434b1469a3703" + integrity sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ== + +terser@^5.17.4: version "5.17.7" resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.7.tgz#2a8b134826fe179b711969fd9d9a0c2479b2a8c3" integrity sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ== @@ -1442,6 +1951,62 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +vite@^4.3.8: + version "4.3.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" + integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== + dependencies: + esbuild "^0.17.5" + postcss "^8.4.23" + rollup "^3.21.0" + optionalDependencies: + fsevents "~2.3.2" + +vitepress@^1.0.0-alpha.65: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.0.0-beta.1.tgz#ecd50d72260ca33b7b4d9522594f5bba46579ccc" + integrity sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ== + dependencies: + "@docsearch/css" "^3.3.5" + "@docsearch/js" "^3.3.5" + "@vitejs/plugin-vue" "^4.2.3" + "@vue/devtools-api" "^6.5.0" + "@vueuse/core" "^10.1.2" + "@vueuse/integrations" "^10.1.2" + body-scroll-lock "4.0.0-beta.0" + focus-trap "^7.4.2" + mark.js "8.11.1" + minisearch "^6.1.0" + shiki "^0.14.2" + vite "^4.3.8" + vue "^3.3.4" + +vscode-oniguruma@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" + integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== + +vscode-textmate@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" + integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== + +vue-demi@>=0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9" + integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA== + +vue@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" + integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-sfc" "3.3.4" + "@vue/runtime-dom" "3.3.4" + "@vue/server-renderer" "3.3.4" + "@vue/shared" "3.3.4" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From baed795cbac6ae02fc0c616909d640c087e95155 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 18:39:12 -0700 Subject: [PATCH 161/311] fix base url --- docs/.vitepress/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 63f9ac836414e6..a801a15fab9fe8 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -5,6 +5,7 @@ import {defineConfig} from "vitepress"; export default defineConfig({ title: "D3 by Observable", description: "The JavaScript library for bespoke data visualization", + base: "/d3/", // temporary cleanUrls: true, vite: { resolve: { From 2792cb3d94cbbd3d47ae5bd40237c25beee1821c Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 18:45:03 -0700 Subject: [PATCH 162/311] fix static assets --- docs/{ => public}/data/riaa-us-revenue.csv | 0 docs/{ => public}/data/volcano.json | 0 docs/{ => public}/logo.svg | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename docs/{ => public}/data/riaa-us-revenue.csv (100%) rename docs/{ => public}/data/volcano.json (100%) rename docs/{ => public}/logo.svg (100%) diff --git a/docs/data/riaa-us-revenue.csv b/docs/public/data/riaa-us-revenue.csv similarity index 100% rename from docs/data/riaa-us-revenue.csv rename to docs/public/data/riaa-us-revenue.csv diff --git a/docs/data/volcano.json b/docs/public/data/volcano.json similarity index 100% rename from docs/data/volcano.json rename to docs/public/data/volcano.json diff --git a/docs/logo.svg b/docs/public/logo.svg similarity index 100% rename from docs/logo.svg rename to docs/public/logo.svg From d11a58aaa4b31409dd1f3e6bcf3219f18408b4c6 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 19:13:14 -0700 Subject: [PATCH 163/311] plot link --- docs/community.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community.md b/docs/community.md index d98be7638ef291..0810a98263308f 100644 --- a/docs/community.md +++ b/docs/community.md @@ -6,7 +6,7 @@ Learning D3? Love data visualization? Don’t go it alone! Join our community to If you like D3, please star ⭐️ our [GitHub repo](https://github.com/d3/d3) to show appreciation and to see updates on your GitHub dashboard. -For email updates, sign up for the [Observable Plot Twist](https://observablehq.com/@observablehq/plot-twist-newsletter-signup) newsletter. (See our [back issues](https://observablehq.com/collection/@observablehq/newsletters/2) and [blog](https://observablehq.com/blog), too.) This monthly newsletter will let you know about new features in D3 and Observable Plot, inspiring work by the community, upcoming workshops and community events, and more. +For email updates, sign up for the [Observable Plot Twist](https://observablehq.com/@observablehq/plot-twist-newsletter-signup) newsletter. (See our [back issues](https://observablehq.com/collection/@observablehq/newsletters/2) and [blog](https://observablehq.com/blog), too.) This monthly newsletter will let you know about new features in D3 and [Observable Plot](https://observablehq.com/plot), inspiring work by the community, upcoming workshops and community events, and more. And of course, follow us on [Observable](https://observablehq.com/@observablehq?tab=profile), [Mastodon](https://vis.social/@observablehq), [Twitter](https://twitter.com/observablehq), and [LinkedIn](https://www.linkedin.com/company/observable)! From 74e9169ecb24fe0bb457bb24d8b3757cc8303cc5 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 20:47:43 -0700 Subject: [PATCH 164/311] get started with svelte --- docs/getting-started.md | 113 +++++++++++++++++++++++++++++++++------- 1 file changed, 95 insertions(+), 18 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 7e000baedebc88..f192f3ccad7ac6 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -261,10 +261,11 @@ TypeScript declarations are available via DefinitelyTyped. Most D3 modules (including d3-scale, d3-array, d3-interpolate, and d3-format) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as this one-dimensional dot plot of numbers: -```jsx +:::code-group +```jsx [DotPlot.jsx] import {scaleLinear, extent} from "d3"; -function DotPlot({data, width}) { +export default function DotPlot({data, width}) { const x = scaleLinear(extent(data), [5, width - 5]).nice(true); return ( @@ -275,32 +276,108 @@ function DotPlot({data, width}) { ); } ``` +::: Some D3 modules (d3-selection, d3-transition, d3-axis, d3-brush, d3-zoom) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. For example, to add an axis to the example above: -```jsx -import {scaleLinear, extent, select, axisBottom} from "d3"; +:::code-group +```jsx [DotPlot.jsx] +import * as d3 from "d3"; import {useRef, useEffect} from "react"; -function DotPlot({data, width}) { - const x = scaleLinear(extent(data), [5, width - 5]).nice(true); +export default function DotPlot({data, width}) { const ref = useRef(); useEffect(() => { - const g = select(ref.current).append("g") - .attr("transform", "translate(0,4)") - .call(axisBottom(x).ticks(5)); - return () => g.remove(); - }, [x]); + const x = d3.scaleLinear() + .domain(d3.extent(data)).nice(true) + .range([5, width - 5]); - return ( - - {data.map((d, i) => ( - - ))} - - ); + const svg = d3.select(ref.current).append("svg") + .attr("width", width) + .attr("height", 4); + + svg.selectAll() + .data(data) + .join("circle") + .attr("cx", (d) => x(d)) + .attr("cy", 2) + .attr("r", 2); + + return () => svg.remove(); + }, [data, width]); + + return
; } ``` +::: For more guidance using D3 in React, see [Amelia Wattenberger’s post](https://2019.wattenberger.com/blog/react-and-d3). + +## D3 in Svelte + +As [with React](#d3-in-react), you can use Svelte exclusively for rendering if you like, and only use D3 modules that don’t manipulate the DOM. Here is a line plot of an array of numbers that uses [d3-shape](./d3-shape.md) and [d3-scale](./d3-scale-chromatic.md). (See [repl](https://svelte.dev/repl/ece91c0d8b204d5ea970dbbc0d6783aa?version=3.59.1).) + +:::code-group +```svelte [LinePlot.svelte] + + + + + {#each data as d, i} + + {/each} + + +``` +::: + +Svelte’s reactive statements (`$:`) pair nicely with D3 [data joins](./d3-selection/joining.md) for efficient updates. Below, we use them to render dynamic axes as the data changes. (See [repl](https://svelte.dev/repl/ff3bf3c7ca454d53913c0c33af0c1250?version=3.59.1).) + +:::code-group +```svelte [LinePlot.svelte] + + + + + + + {#each data as d, i} + + {/each} + + +::: From 0982b75585aa22a256e3f33c3a07a92fe4e62e4f Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 20:59:31 -0700 Subject: [PATCH 165/311] update react examples --- docs/getting-started.md | 80 ++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 33 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index f192f3ccad7ac6..9b39af42bc31ca 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -259,55 +259,69 @@ TypeScript declarations are available via DefinitelyTyped. ## D3 in React -Most D3 modules (including d3-scale, d3-array, d3-interpolate, and d3-format) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as this one-dimensional dot plot of numbers: +Most D3 modules (including d3-scale, d3-array, d3-interpolate, and d3-format) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as the line plot below. (See [sandbox](https://codesandbox.io/s/d3-react-ssr-5g1bm0?file=/src/LinePlot.jsx).) :::code-group -```jsx [DotPlot.jsx] -import {scaleLinear, extent} from "d3"; +```jsx [LinePlot.jsx] +import * as d3 from "d3"; -export default function DotPlot({data, width}) { - const x = scaleLinear(extent(data), [5, width - 5]).nice(true); +export default function LinePlot({ + data, + width = 640, + height = 400, + marginTop = 20, + marginRight = 20, + marginBottom = 20, + marginLeft = 20 +}) { + const x = d3.scaleLinear([0, data.length - 1], [marginLeft, width - marginRight]); + const y = d3.scaleLinear(d3.extent(data), [height - marginBottom, marginTop]); + const line = d3.line((d, i) => x(i), y); return ( - - {data.map((d, i) => ( - - ))} + + + + {data.map((d, i) => ())} + ); } ``` ::: -Some D3 modules (d3-selection, d3-transition, d3-axis, d3-brush, d3-zoom) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. For example, to add an axis to the example above: +Some D3 modules (d3-selection, d3-transition, d3-axis, d3-brush, d3-zoom) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. (See [sandbox](https://codesandbox.io/s/d3-react-useeffect-5lp0x6?file=/src/LinePlot.jsx).) :::code-group ```jsx [DotPlot.jsx] import * as d3 from "d3"; import {useRef, useEffect} from "react"; -export default function DotPlot({data, width}) { - const ref = useRef(); - - useEffect(() => { - const x = d3.scaleLinear() - .domain(d3.extent(data)).nice(true) - .range([5, width - 5]); - - const svg = d3.select(ref.current).append("svg") - .attr("width", width) - .attr("height", 4); - - svg.selectAll() - .data(data) - .join("circle") - .attr("cx", (d) => x(d)) - .attr("cy", 2) - .attr("r", 2); - - return () => svg.remove(); - }, [data, width]); - - return
; +export default function LinePlot({ + data, + width = 640, + height = 400, + marginTop = 20, + marginRight = 20, + marginBottom = 30, + marginLeft = 40 +}) { + const gx = useRef(); + const gy = useRef(); + const x = d3.scaleLinear([0, data.length - 1], [marginLeft, width - marginRight]); + const y = d3.scaleLinear(d3.extent(data), [height - marginBottom, marginTop]); + const line = d3.line((d, i) => x(i), y); + useEffect(() => void d3.select(gx.current).call(d3.axisBottom(x)), [gx, x]); + useEffect(() => void d3.select(gy.current).call(d3.axisLeft(y)), [gy, y]); + return ( + + + + + + {data.map((d, i) => ())} + + + ); } ``` ::: From 16d12353c3ba402d614309abb148ef07e621efc8 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 21:37:26 -0700 Subject: [PATCH 166/311] getting started edits --- docs/getting-started.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 9b39af42bc31ca..7a30d7f9e1f61d 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -259,7 +259,7 @@ TypeScript declarations are available via DefinitelyTyped. ## D3 in React -Most D3 modules (including d3-scale, d3-array, d3-interpolate, and d3-format) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as the line plot below. (See [sandbox](https://codesandbox.io/s/d3-react-ssr-5g1bm0?file=/src/LinePlot.jsx).) +Most D3 modules (including [d3-scale](./d3-scale.md), [d3-array](./d3-array.md), [d3-interpolate](./d3-interpolate.md), and [d3-format](./d3-format.md)) don’t interact with the DOM, so there is no difference when using them in React. You can use them in JSX for purely declarative visualization, such as the line plot below. (See [sandbox](https://codesandbox.io/s/d3-react-ssr-5g1bm0?file=/src/LinePlot.jsx).) :::code-group ```jsx [LinePlot.jsx] @@ -289,10 +289,10 @@ export default function LinePlot({ ``` ::: -Some D3 modules (d3-selection, d3-transition, d3-axis, d3-brush, d3-zoom) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. (See [sandbox](https://codesandbox.io/s/d3-react-useeffect-5lp0x6?file=/src/LinePlot.jsx).) +Some D3 modules (including [d3-selection](./d3-selection.md), [d3-transition](./d3-transition.md), and [d3-axis](./d3-axis.md)) do manipulate the DOM, which competes with React’s virtual DOM. In those cases, you can attach a ref to an element and pass it to D3 in a useEffect hook. (See [sandbox](https://codesandbox.io/s/d3-react-useeffect-5lp0x6?file=/src/LinePlot.jsx).) :::code-group -```jsx [DotPlot.jsx] +```jsx [LinePlot.jsx] import * as d3 from "d3"; import {useRef, useEffect} from "react"; @@ -387,10 +387,10 @@ Svelte’s reactive statements (`$:`) pair nicely with D3 [data joins](./d3-sele - - + + {#each data as d, i} - + {/each} From 35307cda8d5700fda4434f35108e4322ff4e21ee Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 22:09:26 -0700 Subject: [PATCH 167/311] dist files --- .github/workflows/deploy.yml | 4 + .gitignore | 686 ++++++++++++++++++++++++++++++++++ package.json | 4 +- prebuild.sh | 690 +++++++++++++++++++++++++++++++++++ 4 files changed, 1382 insertions(+), 2 deletions(-) create mode 100755 prebuild.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 298730b987cef3..8c0607a25e8aff 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -16,6 +16,10 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: d3/d3.github.com + path: build/d3.github.com - uses: actions/setup-node@v3 with: node-version: 16 diff --git a/.gitignore b/.gitignore index 3d27711c892352..d9b76639bd7240 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,689 @@ docs/.vitepress/cache docs/.vitepress/dist node_modules npm-debug.log +docs/public/colorbrewer.v1.css +docs/public/colorbrewer.v1.js +docs/public/colorbrewer.v1.min.js +docs/public/d3-array.v0.6.js +docs/public/d3-array.v0.6.min.js +docs/public/d3-array.v0.7.js +docs/public/d3-array.v0.7.min.js +docs/public/d3-array.v0.8.js +docs/public/d3-array.v0.8.min.js +docs/public/d3-array.v1.js +docs/public/d3-array.v1.min.js +docs/public/d3-array.v2.js +docs/public/d3-array.v2.min.js +docs/public/d3-array.v3.js +docs/public/d3-array.v3.js +docs/public/d3-array.v3.min.js +docs/public/d3-array.v3.min.js +docs/public/d3-axis.v0.1.js +docs/public/d3-axis.v0.1.min.js +docs/public/d3-axis.v0.2.js +docs/public/d3-axis.v0.2.min.js +docs/public/d3-axis.v0.3.js +docs/public/d3-axis.v0.3.min.js +docs/public/d3-axis.v0.4.js +docs/public/d3-axis.v0.4.min.js +docs/public/d3-axis.v1.js +docs/public/d3-axis.v1.min.js +docs/public/d3-axis.v2.js +docs/public/d3-axis.v2.min.js +docs/public/d3-axis.v3.js +docs/public/d3-axis.v3.js +docs/public/d3-axis.v3.min.js +docs/public/d3-axis.v3.min.js +docs/public/d3-brush.v0.1.js +docs/public/d3-brush.v0.1.min.js +docs/public/d3-brush.v0.2.js +docs/public/d3-brush.v0.2.min.js +docs/public/d3-brush.v1.js +docs/public/d3-brush.v1.min.js +docs/public/d3-brush.v2.js +docs/public/d3-brush.v2.min.js +docs/public/d3-brush.v3.js +docs/public/d3-brush.v3.js +docs/public/d3-brush.v3.min.js +docs/public/d3-brush.v3.min.js +docs/public/d3-chord.v0.0.js +docs/public/d3-chord.v0.0.min.js +docs/public/d3-chord.v1.js +docs/public/d3-chord.v1.min.js +docs/public/d3-chord.v2.js +docs/public/d3-chord.v2.min.js +docs/public/d3-chord.v3.js +docs/public/d3-chord.v3.js +docs/public/d3-chord.v3.min.js +docs/public/d3-chord.v3.min.js +docs/public/d3-collection.v0.1.js +docs/public/d3-collection.v0.1.min.js +docs/public/d3-collection.v0.2.js +docs/public/d3-collection.v0.2.min.js +docs/public/d3-collection.v0.3.js +docs/public/d3-collection.v0.3.min.js +docs/public/d3-collection.v1.js +docs/public/d3-collection.v1.min.js +docs/public/d3-color.v0.3.js +docs/public/d3-color.v0.3.min.js +docs/public/d3-color.v0.4.js +docs/public/d3-color.v0.4.min.js +docs/public/d3-color.v0.5.js +docs/public/d3-color.v0.5.min.js +docs/public/d3-color.v1.js +docs/public/d3-color.v1.min.js +docs/public/d3-color.v2.js +docs/public/d3-color.v2.min.js +docs/public/d3-color.v3.js +docs/public/d3-color.v3.js +docs/public/d3-color.v3.min.js +docs/public/d3-color.v3.min.js +docs/public/d3-contour.v0.0.js +docs/public/d3-contour.v0.0.min.js +docs/public/d3-contour.v1.js +docs/public/d3-contour.v1.min.js +docs/public/d3-contour.v2.js +docs/public/d3-contour.v2.min.js +docs/public/d3-contour.v3.js +docs/public/d3-contour.v3.min.js +docs/public/d3-contour.v4.js +docs/public/d3-contour.v4.js +docs/public/d3-contour.v4.min.js +docs/public/d3-contour.v4.min.js +docs/public/d3-delaunay.v6.js +docs/public/d3-delaunay.v6.min.js +docs/public/d3-dispatch.v0.2.js +docs/public/d3-dispatch.v0.2.min.js +docs/public/d3-dispatch.v0.3.js +docs/public/d3-dispatch.v0.3.min.js +docs/public/d3-dispatch.v0.4.js +docs/public/d3-dispatch.v0.4.min.js +docs/public/d3-dispatch.v0.5.js +docs/public/d3-dispatch.v0.5.min.js +docs/public/d3-dispatch.v1.js +docs/public/d3-dispatch.v1.min.js +docs/public/d3-dispatch.v2.js +docs/public/d3-dispatch.v2.min.js +docs/public/d3-dispatch.v3.js +docs/public/d3-dispatch.v3.js +docs/public/d3-dispatch.v3.min.js +docs/public/d3-dispatch.v3.min.js +docs/public/d3-drag.v0.0.js +docs/public/d3-drag.v0.0.min.js +docs/public/d3-drag.v0.1.js +docs/public/d3-drag.v0.1.min.js +docs/public/d3-drag.v0.2.js +docs/public/d3-drag.v0.2.min.js +docs/public/d3-drag.v0.3.js +docs/public/d3-drag.v0.3.min.js +docs/public/d3-drag.v1.js +docs/public/d3-drag.v1.min.js +docs/public/d3-drag.v2.js +docs/public/d3-drag.v2.min.js +docs/public/d3-drag.v3.js +docs/public/d3-drag.v3.js +docs/public/d3-drag.v3.min.js +docs/public/d3-drag.v3.min.js +docs/public/d3-dsv.v0.1.js +docs/public/d3-dsv.v0.1.min.js +docs/public/d3-dsv.v0.2.js +docs/public/d3-dsv.v0.2.min.js +docs/public/d3-dsv.v0.3.js +docs/public/d3-dsv.v0.3.min.js +docs/public/d3-dsv.v0.4.js +docs/public/d3-dsv.v0.4.min.js +docs/public/d3-dsv.v1.js +docs/public/d3-dsv.v1.min.js +docs/public/d3-dsv.v2.js +docs/public/d3-dsv.v2.min.js +docs/public/d3-dsv.v3.js +docs/public/d3-dsv.v3.js +docs/public/d3-dsv.v3.min.js +docs/public/d3-dsv.v3.min.js +docs/public/d3-ease.v0.3.js +docs/public/d3-ease.v0.3.min.js +docs/public/d3-ease.v0.4.js +docs/public/d3-ease.v0.4.min.js +docs/public/d3-ease.v0.5.js +docs/public/d3-ease.v0.5.min.js +docs/public/d3-ease.v0.6.js +docs/public/d3-ease.v0.6.min.js +docs/public/d3-ease.v0.7.js +docs/public/d3-ease.v0.7.min.js +docs/public/d3-ease.v0.8.js +docs/public/d3-ease.v0.8.min.js +docs/public/d3-ease.v1.js +docs/public/d3-ease.v1.min.js +docs/public/d3-ease.v2.js +docs/public/d3-ease.v2.min.js +docs/public/d3-ease.v3.js +docs/public/d3-ease.v3.js +docs/public/d3-ease.v3.min.js +docs/public/d3-ease.v3.min.js +docs/public/d3-fetch.v0.js +docs/public/d3-fetch.v0.min.js +docs/public/d3-fetch.v1.js +docs/public/d3-fetch.v1.min.js +docs/public/d3-fetch.v2.js +docs/public/d3-fetch.v2.min.js +docs/public/d3-fetch.v3.js +docs/public/d3-fetch.v3.js +docs/public/d3-fetch.v3.min.js +docs/public/d3-fetch.v3.min.js +docs/public/d3-force.v0.0.js +docs/public/d3-force.v0.0.min.js +docs/public/d3-force.v0.1.js +docs/public/d3-force.v0.1.min.js +docs/public/d3-force.v0.2.js +docs/public/d3-force.v0.2.min.js +docs/public/d3-force.v0.3.js +docs/public/d3-force.v0.3.min.js +docs/public/d3-force.v0.4.js +docs/public/d3-force.v0.4.min.js +docs/public/d3-force.v0.5.js +docs/public/d3-force.v0.5.min.js +docs/public/d3-force.v0.6.js +docs/public/d3-force.v0.6.min.js +docs/public/d3-force.v0.7.js +docs/public/d3-force.v0.7.min.js +docs/public/d3-force.v1.js +docs/public/d3-force.v1.min.js +docs/public/d3-force.v2.js +docs/public/d3-force.v2.min.js +docs/public/d3-force.v3.js +docs/public/d3-force.v3.js +docs/public/d3-force.v3.min.js +docs/public/d3-force.v3.min.js +docs/public/d3-format.v0.4.js +docs/public/d3-format.v0.4.min.js +docs/public/d3-format.v0.5.js +docs/public/d3-format.v0.5.min.js +docs/public/d3-format.v0.6.js +docs/public/d3-format.v0.6.min.js +docs/public/d3-format.v1.js +docs/public/d3-format.v1.min.js +docs/public/d3-format.v2.js +docs/public/d3-format.v2.min.js +docs/public/d3-format.v3.js +docs/public/d3-format.v3.js +docs/public/d3-format.v3.min.js +docs/public/d3-format.v3.min.js +docs/public/d3-geo-projection.v1.js +docs/public/d3-geo-projection.v1.min.js +docs/public/d3-geo-projection.v2.js +docs/public/d3-geo-projection.v2.min.js +docs/public/d3-geo-projection.v3.js +docs/public/d3-geo-projection.v3.min.js +docs/public/d3-geo-projection.v4.js +docs/public/d3-geo-projection.v4.min.js +docs/public/d3-geo.v0.0.js +docs/public/d3-geo.v0.0.min.js +docs/public/d3-geo.v0.1.js +docs/public/d3-geo.v0.1.min.js +docs/public/d3-geo.v1.js +docs/public/d3-geo.v1.min.js +docs/public/d3-geo.v2.js +docs/public/d3-geo.v2.min.js +docs/public/d3-geo.v3.js +docs/public/d3-geo.v3.js +docs/public/d3-geo.v3.min.js +docs/public/d3-geo.v3.min.js +docs/public/d3-hexbin.v0.2.js +docs/public/d3-hexbin.v0.2.min.js +docs/public/d3-hexbin.v1.js +docs/public/d3-hexbin.v1.min.js +docs/public/d3-hierarchy.v0.1.js +docs/public/d3-hierarchy.v0.1.min.js +docs/public/d3-hierarchy.v0.2.js +docs/public/d3-hierarchy.v0.2.min.js +docs/public/d3-hierarchy.v0.3.js +docs/public/d3-hierarchy.v0.3.min.js +docs/public/d3-hierarchy.v1.js +docs/public/d3-hierarchy.v1.min.js +docs/public/d3-hierarchy.v2.js +docs/public/d3-hierarchy.v2.min.js +docs/public/d3-hierarchy.v3.js +docs/public/d3-hierarchy.v3.js +docs/public/d3-hierarchy.v3.min.js +docs/public/d3-hierarchy.v3.min.js +docs/public/d3-hsv.v0.0.js +docs/public/d3-hsv.v0.0.min.js +docs/public/d3-hsv.v0.1.js +docs/public/d3-hsv.v0.1.min.js +docs/public/d3-interpolate.v0.2.js +docs/public/d3-interpolate.v0.2.min.js +docs/public/d3-interpolate.v0.3.js +docs/public/d3-interpolate.v0.3.min.js +docs/public/d3-interpolate.v0.4.js +docs/public/d3-interpolate.v0.4.min.js +docs/public/d3-interpolate.v0.5.js +docs/public/d3-interpolate.v0.5.min.js +docs/public/d3-interpolate.v0.6.js +docs/public/d3-interpolate.v0.6.min.js +docs/public/d3-interpolate.v0.7.js +docs/public/d3-interpolate.v0.7.min.js +docs/public/d3-interpolate.v0.8.js +docs/public/d3-interpolate.v0.8.min.js +docs/public/d3-interpolate.v0.9.js +docs/public/d3-interpolate.v0.9.min.js +docs/public/d3-interpolate.v1.js +docs/public/d3-interpolate.v1.min.js +docs/public/d3-interpolate.v2.js +docs/public/d3-interpolate.v2.min.js +docs/public/d3-interpolate.v3.js +docs/public/d3-interpolate.v3.js +docs/public/d3-interpolate.v3.min.js +docs/public/d3-interpolate.v3.min.js +docs/public/d3-path.v0.1.js +docs/public/d3-path.v0.1.min.js +docs/public/d3-path.v0.2.js +docs/public/d3-path.v0.2.min.js +docs/public/d3-path.v1.js +docs/public/d3-path.v1.min.js +docs/public/d3-path.v2.js +docs/public/d3-path.v2.min.js +docs/public/d3-path.v3.js +docs/public/d3-path.v3.js +docs/public/d3-path.v3.min.js +docs/public/d3-path.v3.min.js +docs/public/d3-polygon.v0.1.js +docs/public/d3-polygon.v0.1.min.js +docs/public/d3-polygon.v0.2.js +docs/public/d3-polygon.v0.2.min.js +docs/public/d3-polygon.v0.3.js +docs/public/d3-polygon.v0.3.min.js +docs/public/d3-polygon.v1.js +docs/public/d3-polygon.v1.min.js +docs/public/d3-polygon.v2.js +docs/public/d3-polygon.v2.min.js +docs/public/d3-polygon.v3.js +docs/public/d3-polygon.v3.js +docs/public/d3-polygon.v3.min.js +docs/public/d3-polygon.v3.min.js +docs/public/d3-quadtree.v0.1.js +docs/public/d3-quadtree.v0.1.min.js +docs/public/d3-quadtree.v0.2.js +docs/public/d3-quadtree.v0.2.min.js +docs/public/d3-quadtree.v0.3.js +docs/public/d3-quadtree.v0.3.min.js +docs/public/d3-quadtree.v0.4.js +docs/public/d3-quadtree.v0.4.min.js +docs/public/d3-quadtree.v0.5.js +docs/public/d3-quadtree.v0.5.min.js +docs/public/d3-quadtree.v0.6.js +docs/public/d3-quadtree.v0.6.min.js +docs/public/d3-quadtree.v0.7.js +docs/public/d3-quadtree.v0.7.min.js +docs/public/d3-quadtree.v0.8.js +docs/public/d3-quadtree.v0.8.min.js +docs/public/d3-quadtree.v1.js +docs/public/d3-quadtree.v1.min.js +docs/public/d3-quadtree.v2.js +docs/public/d3-quadtree.v2.min.js +docs/public/d3-quadtree.v3.js +docs/public/d3-quadtree.v3.js +docs/public/d3-quadtree.v3.min.js +docs/public/d3-quadtree.v3.min.js +docs/public/d3-queue.v1.js +docs/public/d3-queue.v1.min.js +docs/public/d3-queue.v2.js +docs/public/d3-queue.v2.min.js +docs/public/d3-queue.v3.js +docs/public/d3-queue.v3.min.js +docs/public/d3-random.v0.1.js +docs/public/d3-random.v0.1.min.js +docs/public/d3-random.v0.2.js +docs/public/d3-random.v0.2.min.js +docs/public/d3-random.v0.3.js +docs/public/d3-random.v0.3.min.js +docs/public/d3-random.v1.js +docs/public/d3-random.v1.min.js +docs/public/d3-random.v2.js +docs/public/d3-random.v2.min.js +docs/public/d3-random.v3.js +docs/public/d3-random.v3.js +docs/public/d3-random.v3.min.js +docs/public/d3-random.v3.min.js +docs/public/d3-request.v0.2.js +docs/public/d3-request.v0.2.min.js +docs/public/d3-request.v0.3.js +docs/public/d3-request.v0.3.min.js +docs/public/d3-request.v0.4.js +docs/public/d3-request.v0.4.min.js +docs/public/d3-request.v0.5.js +docs/public/d3-request.v0.5.min.js +docs/public/d3-request.v1.js +docs/public/d3-request.v1.min.js +docs/public/d3-scale-chromatic.v0.0.js +docs/public/d3-scale-chromatic.v0.0.min.js +docs/public/d3-scale-chromatic.v0.1.js +docs/public/d3-scale-chromatic.v0.1.min.js +docs/public/d3-scale-chromatic.v0.2.js +docs/public/d3-scale-chromatic.v0.2.min.js +docs/public/d3-scale-chromatic.v0.3.js +docs/public/d3-scale-chromatic.v0.3.min.js +docs/public/d3-scale-chromatic.v1.js +docs/public/d3-scale-chromatic.v1.min.js +docs/public/d3-scale-chromatic.v2.js +docs/public/d3-scale-chromatic.v2.min.js +docs/public/d3-scale-chromatic.v3.js +docs/public/d3-scale-chromatic.v3.js +docs/public/d3-scale-chromatic.v3.min.js +docs/public/d3-scale-chromatic.v3.min.js +docs/public/d3-scale.v0.3.js +docs/public/d3-scale.v0.3.min.js +docs/public/d3-scale.v0.4.js +docs/public/d3-scale.v0.4.min.js +docs/public/d3-scale.v0.5.js +docs/public/d3-scale.v0.5.min.js +docs/public/d3-scale.v0.6.js +docs/public/d3-scale.v0.6.min.js +docs/public/d3-scale.v0.7.js +docs/public/d3-scale.v0.7.min.js +docs/public/d3-scale.v0.8.js +docs/public/d3-scale.v0.8.min.js +docs/public/d3-scale.v0.9.js +docs/public/d3-scale.v0.9.min.js +docs/public/d3-scale.v1.js +docs/public/d3-scale.v1.min.js +docs/public/d3-scale.v2.js +docs/public/d3-scale.v2.min.js +docs/public/d3-scale.v3.js +docs/public/d3-scale.v3.min.js +docs/public/d3-scale.v4.js +docs/public/d3-scale.v4.js +docs/public/d3-scale.v4.min.js +docs/public/d3-scale.v4.min.js +docs/public/d3-selection-multi.v0.2.js +docs/public/d3-selection-multi.v0.2.min.js +docs/public/d3-selection-multi.v0.3.js +docs/public/d3-selection-multi.v0.3.min.js +docs/public/d3-selection-multi.v0.4.js +docs/public/d3-selection-multi.v0.4.min.js +docs/public/d3-selection-multi.v1.js +docs/public/d3-selection-multi.v1.min.js +docs/public/d3-selection.v0.5.js +docs/public/d3-selection.v0.5.min.js +docs/public/d3-selection.v0.6.js +docs/public/d3-selection.v0.6.min.js +docs/public/d3-selection.v0.7.js +docs/public/d3-selection.v0.7.min.js +docs/public/d3-selection.v0.8.js +docs/public/d3-selection.v0.8.min.js +docs/public/d3-selection.v0.9.js +docs/public/d3-selection.v0.9.min.js +docs/public/d3-selection.v1.js +docs/public/d3-selection.v1.min.js +docs/public/d3-selection.v2.js +docs/public/d3-selection.v2.min.js +docs/public/d3-selection.v3.js +docs/public/d3-selection.v3.js +docs/public/d3-selection.v3.min.js +docs/public/d3-selection.v3.min.js +docs/public/d3-shape.v0.2.js +docs/public/d3-shape.v0.2.min.js +docs/public/d3-shape.v0.3.js +docs/public/d3-shape.v0.3.min.js +docs/public/d3-shape.v0.4.js +docs/public/d3-shape.v0.4.min.js +docs/public/d3-shape.v0.5.js +docs/public/d3-shape.v0.5.min.js +docs/public/d3-shape.v0.6.js +docs/public/d3-shape.v0.6.min.js +docs/public/d3-shape.v0.7.js +docs/public/d3-shape.v0.7.min.js +docs/public/d3-shape.v1.js +docs/public/d3-shape.v1.min.js +docs/public/d3-shape.v2.js +docs/public/d3-shape.v2.min.js +docs/public/d3-shape.v3.js +docs/public/d3-shape.v3.js +docs/public/d3-shape.v3.min.js +docs/public/d3-shape.v3.min.js +docs/public/d3-tile.v0.0.js +docs/public/d3-tile.v0.0.min.js +docs/public/d3-time-format.v0.2.js +docs/public/d3-time-format.v0.2.min.js +docs/public/d3-time-format.v0.3.js +docs/public/d3-time-format.v0.3.min.js +docs/public/d3-time-format.v0.4.js +docs/public/d3-time-format.v0.4.min.js +docs/public/d3-time-format.v1.js +docs/public/d3-time-format.v1.min.js +docs/public/d3-time-format.v2.js +docs/public/d3-time-format.v2.min.js +docs/public/d3-time-format.v3.js +docs/public/d3-time-format.v3.min.js +docs/public/d3-time-format.v4.js +docs/public/d3-time-format.v4.js +docs/public/d3-time-format.v4.min.js +docs/public/d3-time-format.v4.min.js +docs/public/d3-time.v0.1.js +docs/public/d3-time.v0.1.min.js +docs/public/d3-time.v0.2.js +docs/public/d3-time.v0.2.min.js +docs/public/d3-time.v0.3.js +docs/public/d3-time.v0.3.min.js +docs/public/d3-time.v1.js +docs/public/d3-time.v1.min.js +docs/public/d3-time.v2.js +docs/public/d3-time.v2.min.js +docs/public/d3-time.v3.js +docs/public/d3-time.v3.js +docs/public/d3-time.v3.min.js +docs/public/d3-time.v3.min.js +docs/public/d3-timer.v0.1.js +docs/public/d3-timer.v0.1.min.js +docs/public/d3-timer.v0.2.js +docs/public/d3-timer.v0.2.min.js +docs/public/d3-timer.v0.3.js +docs/public/d3-timer.v0.3.min.js +docs/public/d3-timer.v0.4.js +docs/public/d3-timer.v0.4.min.js +docs/public/d3-timer.v0.5.js +docs/public/d3-timer.v0.5.min.js +docs/public/d3-timer.v1.js +docs/public/d3-timer.v1.min.js +docs/public/d3-timer.v2.js +docs/public/d3-timer.v2.min.js +docs/public/d3-timer.v3.js +docs/public/d3-timer.v3.js +docs/public/d3-timer.v3.min.js +docs/public/d3-timer.v3.min.js +docs/public/d3-transition.v0.0.js +docs/public/d3-transition.v0.0.min.js +docs/public/d3-transition.v0.1.js +docs/public/d3-transition.v0.1.min.js +docs/public/d3-transition.v0.2.js +docs/public/d3-transition.v0.2.min.js +docs/public/d3-transition.v0.3.js +docs/public/d3-transition.v0.3.min.js +docs/public/d3-transition.v1.js +docs/public/d3-transition.v1.min.js +docs/public/d3-transition.v2.js +docs/public/d3-transition.v2.min.js +docs/public/d3-transition.v3.js +docs/public/d3-transition.v3.js +docs/public/d3-transition.v3.min.js +docs/public/d3-transition.v3.min.js +docs/public/d3-voronoi.v0.1.js +docs/public/d3-voronoi.v0.1.min.js +docs/public/d3-voronoi.v0.2.js +docs/public/d3-voronoi.v0.2.min.js +docs/public/d3-voronoi.v0.3.js +docs/public/d3-voronoi.v0.3.min.js +docs/public/d3-voronoi.v0.4.js +docs/public/d3-voronoi.v0.4.min.js +docs/public/d3-voronoi.v1.js +docs/public/d3-voronoi.v1.min.js +docs/public/d3-zoom.v0.0.js +docs/public/d3-zoom.v0.0.min.js +docs/public/d3-zoom.v0.1.js +docs/public/d3-zoom.v0.1.min.js +docs/public/d3-zoom.v0.2.js +docs/public/d3-zoom.v0.2.min.js +docs/public/d3-zoom.v0.3.js +docs/public/d3-zoom.v0.3.min.js +docs/public/d3-zoom.v1.js +docs/public/d3-zoom.v1.min.js +docs/public/d3-zoom.v2.js +docs/public/d3-zoom.v2.min.js +docs/public/d3-zoom.v3.js +docs/public/d3-zoom.v3.js +docs/public/d3-zoom.v3.min.js +docs/public/d3-zoom.v3.min.js +docs/public/d3.geo.polyhedron.v0.js +docs/public/d3.geo.polyhedron.v0.min.js +docs/public/d3.geo.projection.v0.js +docs/public/d3.geo.projection.v0.min.js +docs/public/d3.geo.tile.v0.js +docs/public/d3.geo.tile.v0.min.js +docs/public/d3.geodesic.v0.js +docs/public/d3.geodesic.v0.min.js +docs/public/d3.geom.contour.v0.js +docs/public/d3.geom.contour.v0.min.js +docs/public/d3.hexbin.v0.js +docs/public/d3.hexbin.v0.min.js +docs/public/d3.hive.v0.js +docs/public/d3.hive.v0.min.js +docs/public/d3.interpolate-zoom.v0.js +docs/public/d3.interpolate-zoom.v0.min.js +docs/public/d3.qq.v0.js +docs/public/d3.qq.v0.min.js +docs/public/d3.rollup.v0.js +docs/public/d3.rollup.v0.min.js +docs/public/d3.superformula.v0.js +docs/public/d3.superformula.v0.min.js +docs/public/d3.v2.js +docs/public/d3.v2.min.js +docs/public/d3.v3.js +docs/public/d3.v3.min.js +docs/public/d3.v4.0.0-alpha.1.js +docs/public/d3.v4.0.0-alpha.1.min.js +docs/public/d3.v4.0.0-alpha.10.js +docs/public/d3.v4.0.0-alpha.10.min.js +docs/public/d3.v4.0.0-alpha.11.js +docs/public/d3.v4.0.0-alpha.11.min.js +docs/public/d3.v4.0.0-alpha.12.js +docs/public/d3.v4.0.0-alpha.12.min.js +docs/public/d3.v4.0.0-alpha.13.js +docs/public/d3.v4.0.0-alpha.13.min.js +docs/public/d3.v4.0.0-alpha.14.js +docs/public/d3.v4.0.0-alpha.14.min.js +docs/public/d3.v4.0.0-alpha.15.js +docs/public/d3.v4.0.0-alpha.15.min.js +docs/public/d3.v4.0.0-alpha.16.js +docs/public/d3.v4.0.0-alpha.16.min.js +docs/public/d3.v4.0.0-alpha.17.js +docs/public/d3.v4.0.0-alpha.17.min.js +docs/public/d3.v4.0.0-alpha.18.js +docs/public/d3.v4.0.0-alpha.18.min.js +docs/public/d3.v4.0.0-alpha.19.js +docs/public/d3.v4.0.0-alpha.19.min.js +docs/public/d3.v4.0.0-alpha.2.js +docs/public/d3.v4.0.0-alpha.2.min.js +docs/public/d3.v4.0.0-alpha.20.js +docs/public/d3.v4.0.0-alpha.20.min.js +docs/public/d3.v4.0.0-alpha.21.js +docs/public/d3.v4.0.0-alpha.21.min.js +docs/public/d3.v4.0.0-alpha.22.js +docs/public/d3.v4.0.0-alpha.22.min.js +docs/public/d3.v4.0.0-alpha.23.js +docs/public/d3.v4.0.0-alpha.23.min.js +docs/public/d3.v4.0.0-alpha.24.js +docs/public/d3.v4.0.0-alpha.24.min.js +docs/public/d3.v4.0.0-alpha.26.js +docs/public/d3.v4.0.0-alpha.26.min.js +docs/public/d3.v4.0.0-alpha.27.js +docs/public/d3.v4.0.0-alpha.27.min.js +docs/public/d3.v4.0.0-alpha.28.js +docs/public/d3.v4.0.0-alpha.28.min.js +docs/public/d3.v4.0.0-alpha.29.js +docs/public/d3.v4.0.0-alpha.29.min.js +docs/public/d3.v4.0.0-alpha.3.js +docs/public/d3.v4.0.0-alpha.3.min.js +docs/public/d3.v4.0.0-alpha.30.js +docs/public/d3.v4.0.0-alpha.30.min.js +docs/public/d3.v4.0.0-alpha.31.js +docs/public/d3.v4.0.0-alpha.31.min.js +docs/public/d3.v4.0.0-alpha.32.js +docs/public/d3.v4.0.0-alpha.32.min.js +docs/public/d3.v4.0.0-alpha.33.js +docs/public/d3.v4.0.0-alpha.33.min.js +docs/public/d3.v4.0.0-alpha.34.js +docs/public/d3.v4.0.0-alpha.34.min.js +docs/public/d3.v4.0.0-alpha.35.js +docs/public/d3.v4.0.0-alpha.35.min.js +docs/public/d3.v4.0.0-alpha.36.js +docs/public/d3.v4.0.0-alpha.36.min.js +docs/public/d3.v4.0.0-alpha.37.js +docs/public/d3.v4.0.0-alpha.37.min.js +docs/public/d3.v4.0.0-alpha.38.js +docs/public/d3.v4.0.0-alpha.38.min.js +docs/public/d3.v4.0.0-alpha.39.js +docs/public/d3.v4.0.0-alpha.39.min.js +docs/public/d3.v4.0.0-alpha.4.js +docs/public/d3.v4.0.0-alpha.4.min.js +docs/public/d3.v4.0.0-alpha.40.js +docs/public/d3.v4.0.0-alpha.40.min.js +docs/public/d3.v4.0.0-alpha.41.js +docs/public/d3.v4.0.0-alpha.41.min.js +docs/public/d3.v4.0.0-alpha.42.js +docs/public/d3.v4.0.0-alpha.42.min.js +docs/public/d3.v4.0.0-alpha.43.js +docs/public/d3.v4.0.0-alpha.43.min.js +docs/public/d3.v4.0.0-alpha.44.js +docs/public/d3.v4.0.0-alpha.44.min.js +docs/public/d3.v4.0.0-alpha.45.js +docs/public/d3.v4.0.0-alpha.45.min.js +docs/public/d3.v4.0.0-alpha.46.js +docs/public/d3.v4.0.0-alpha.46.min.js +docs/public/d3.v4.0.0-alpha.47.js +docs/public/d3.v4.0.0-alpha.47.min.js +docs/public/d3.v4.0.0-alpha.48.js +docs/public/d3.v4.0.0-alpha.48.min.js +docs/public/d3.v4.0.0-alpha.49.js +docs/public/d3.v4.0.0-alpha.49.min.js +docs/public/d3.v4.0.0-alpha.5.js +docs/public/d3.v4.0.0-alpha.5.min.js +docs/public/d3.v4.0.0-alpha.50.js +docs/public/d3.v4.0.0-alpha.50.min.js +docs/public/d3.v4.0.0-alpha.6.js +docs/public/d3.v4.0.0-alpha.6.min.js +docs/public/d3.v4.0.0-alpha.7.js +docs/public/d3.v4.0.0-alpha.7.min.js +docs/public/d3.v4.0.0-alpha.8.js +docs/public/d3.v4.0.0-alpha.8.min.js +docs/public/d3.v4.0.0-alpha.9.js +docs/public/d3.v4.0.0-alpha.9.min.js +docs/public/d3.v4.0.0-rc.1.js +docs/public/d3.v4.0.0-rc.1.min.js +docs/public/d3.v4.0.0-rc.2.js +docs/public/d3.v4.0.0-rc.2.min.js +docs/public/d3.v4.js +docs/public/d3.v4.min.js +docs/public/d3.v5.js +docs/public/d3.v5.min.js +docs/public/d3.v6.js +docs/public/d3.v6.min.js +docs/public/d3.v7.js +docs/public/d3.v7.min.js +docs/public/highlight.v0.min.js +docs/public/highlight.v9.min.js +docs/public/queue.v1.js +docs/public/queue.v1.min.js +docs/public/topojson.v0.js +docs/public/topojson.v0.min.js +docs/public/topojson.v1.js +docs/public/topojson.v1.min.js +docs/public/topojson.v2.js +docs/public/topojson.v2.min.js +docs/public/topojson.v3.js +docs/public/topojson.v3.min.js +docs/public/us-10m.v0.json +docs/public/us-10m.v1.json +docs/public/us-10m.v2.json +docs/public/world-110m.v1.json +docs/public/world-110m.v1.tsv +docs/public/world-50m.v1.json +docs/public/world-50m.v1.tsv diff --git a/package.json b/package.json index 273df57cb1b102..760355596c3d19 100644 --- a/package.json +++ b/package.json @@ -79,9 +79,9 @@ "scripts": { "test": "mocha 'test/**/*-test.js' && eslint src test", "prepublishOnly": "rm -rf dist && rollup -c", - "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \"d3 ${npm_package_version}\" && git push && cd -", + "postpublish": "git push && git push --tags", "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", + "docs:build": "./prebuild.sh && vitepress build docs", "docs:preview": "vitepress preview docs" }, "engines": { diff --git a/prebuild.sh b/prebuild.sh new file mode 100755 index 00000000000000..254833baae26d5 --- /dev/null +++ b/prebuild.sh @@ -0,0 +1,690 @@ +#!/usr/bin/env bash + +cp -v ./build/d3.github.com/colorbrewer.v1.css docs/public/colorbrewer.v1.css +cp -v ./build/d3.github.com/colorbrewer.v1.js docs/public/colorbrewer.v1.js +cp -v ./build/d3.github.com/colorbrewer.v1.min.js docs/public/colorbrewer.v1.min.js +cp -v ./build/d3.github.com/d3-array.v0.6.js docs/public/d3-array.v0.6.js +cp -v ./build/d3.github.com/d3-array.v0.6.min.js docs/public/d3-array.v0.6.min.js +cp -v ./build/d3.github.com/d3-array.v0.7.js docs/public/d3-array.v0.7.js +cp -v ./build/d3.github.com/d3-array.v0.7.min.js docs/public/d3-array.v0.7.min.js +cp -v ./build/d3.github.com/d3-array.v0.8.js docs/public/d3-array.v0.8.js +cp -v ./build/d3.github.com/d3-array.v0.8.min.js docs/public/d3-array.v0.8.min.js +cp -v ./build/d3.github.com/d3-array.v1.js docs/public/d3-array.v1.js +cp -v ./build/d3.github.com/d3-array.v1.min.js docs/public/d3-array.v1.min.js +cp -v ./build/d3.github.com/d3-array.v2.js docs/public/d3-array.v2.js +cp -v ./build/d3.github.com/d3-array.v2.min.js docs/public/d3-array.v2.min.js +cp -v ./build/d3.github.com/d3-array.v3.js docs/public/d3-array.v3.js +cp -v ./build/d3.github.com/d3-array.v3.min.js docs/public/d3-array.v3.min.js +cp -v ./build/d3.github.com/d3-axis.v0.1.js docs/public/d3-axis.v0.1.js +cp -v ./build/d3.github.com/d3-axis.v0.1.min.js docs/public/d3-axis.v0.1.min.js +cp -v ./build/d3.github.com/d3-axis.v0.2.js docs/public/d3-axis.v0.2.js +cp -v ./build/d3.github.com/d3-axis.v0.2.min.js docs/public/d3-axis.v0.2.min.js +cp -v ./build/d3.github.com/d3-axis.v0.3.js docs/public/d3-axis.v0.3.js +cp -v ./build/d3.github.com/d3-axis.v0.3.min.js docs/public/d3-axis.v0.3.min.js +cp -v ./build/d3.github.com/d3-axis.v0.4.js docs/public/d3-axis.v0.4.js +cp -v ./build/d3.github.com/d3-axis.v0.4.min.js docs/public/d3-axis.v0.4.min.js +cp -v ./build/d3.github.com/d3-axis.v1.js docs/public/d3-axis.v1.js +cp -v ./build/d3.github.com/d3-axis.v1.min.js docs/public/d3-axis.v1.min.js +cp -v ./build/d3.github.com/d3-axis.v2.js docs/public/d3-axis.v2.js +cp -v ./build/d3.github.com/d3-axis.v2.min.js docs/public/d3-axis.v2.min.js +cp -v ./build/d3.github.com/d3-axis.v3.js docs/public/d3-axis.v3.js +cp -v ./build/d3.github.com/d3-axis.v3.min.js docs/public/d3-axis.v3.min.js +cp -v ./build/d3.github.com/d3-brush.v0.1.js docs/public/d3-brush.v0.1.js +cp -v ./build/d3.github.com/d3-brush.v0.1.min.js docs/public/d3-brush.v0.1.min.js +cp -v ./build/d3.github.com/d3-brush.v0.2.js docs/public/d3-brush.v0.2.js +cp -v ./build/d3.github.com/d3-brush.v0.2.min.js docs/public/d3-brush.v0.2.min.js +cp -v ./build/d3.github.com/d3-brush.v1.js docs/public/d3-brush.v1.js +cp -v ./build/d3.github.com/d3-brush.v1.min.js docs/public/d3-brush.v1.min.js +cp -v ./build/d3.github.com/d3-brush.v2.js docs/public/d3-brush.v2.js +cp -v ./build/d3.github.com/d3-brush.v2.min.js docs/public/d3-brush.v2.min.js +cp -v ./build/d3.github.com/d3-brush.v3.js docs/public/d3-brush.v3.js +cp -v ./build/d3.github.com/d3-brush.v3.min.js docs/public/d3-brush.v3.min.js +cp -v ./build/d3.github.com/d3-chord.v0.0.js docs/public/d3-chord.v0.0.js +cp -v ./build/d3.github.com/d3-chord.v0.0.min.js docs/public/d3-chord.v0.0.min.js +cp -v ./build/d3.github.com/d3-chord.v1.js docs/public/d3-chord.v1.js +cp -v ./build/d3.github.com/d3-chord.v1.min.js docs/public/d3-chord.v1.min.js +cp -v ./build/d3.github.com/d3-chord.v2.js docs/public/d3-chord.v2.js +cp -v ./build/d3.github.com/d3-chord.v2.min.js docs/public/d3-chord.v2.min.js +cp -v ./build/d3.github.com/d3-chord.v3.js docs/public/d3-chord.v3.js +cp -v ./build/d3.github.com/d3-chord.v3.min.js docs/public/d3-chord.v3.min.js +cp -v ./build/d3.github.com/d3-collection.v0.1.js docs/public/d3-collection.v0.1.js +cp -v ./build/d3.github.com/d3-collection.v0.1.min.js docs/public/d3-collection.v0.1.min.js +cp -v ./build/d3.github.com/d3-collection.v0.2.js docs/public/d3-collection.v0.2.js +cp -v ./build/d3.github.com/d3-collection.v0.2.min.js docs/public/d3-collection.v0.2.min.js +cp -v ./build/d3.github.com/d3-collection.v0.3.js docs/public/d3-collection.v0.3.js +cp -v ./build/d3.github.com/d3-collection.v0.3.min.js docs/public/d3-collection.v0.3.min.js +cp -v ./build/d3.github.com/d3-collection.v1.js docs/public/d3-collection.v1.js +cp -v ./build/d3.github.com/d3-collection.v1.min.js docs/public/d3-collection.v1.min.js +cp -v ./build/d3.github.com/d3-color.v0.3.js docs/public/d3-color.v0.3.js +cp -v ./build/d3.github.com/d3-color.v0.3.min.js docs/public/d3-color.v0.3.min.js +cp -v ./build/d3.github.com/d3-color.v0.4.js docs/public/d3-color.v0.4.js +cp -v ./build/d3.github.com/d3-color.v0.4.min.js docs/public/d3-color.v0.4.min.js +cp -v ./build/d3.github.com/d3-color.v0.5.js docs/public/d3-color.v0.5.js +cp -v ./build/d3.github.com/d3-color.v0.5.min.js docs/public/d3-color.v0.5.min.js +cp -v ./build/d3.github.com/d3-color.v1.js docs/public/d3-color.v1.js +cp -v ./build/d3.github.com/d3-color.v1.min.js docs/public/d3-color.v1.min.js +cp -v ./build/d3.github.com/d3-color.v2.js docs/public/d3-color.v2.js +cp -v ./build/d3.github.com/d3-color.v2.min.js docs/public/d3-color.v2.min.js +cp -v ./build/d3.github.com/d3-color.v3.js docs/public/d3-color.v3.js +cp -v ./build/d3.github.com/d3-color.v3.min.js docs/public/d3-color.v3.min.js +cp -v ./build/d3.github.com/d3-contour.v0.0.js docs/public/d3-contour.v0.0.js +cp -v ./build/d3.github.com/d3-contour.v0.0.min.js docs/public/d3-contour.v0.0.min.js +cp -v ./build/d3.github.com/d3-contour.v1.js docs/public/d3-contour.v1.js +cp -v ./build/d3.github.com/d3-contour.v1.min.js docs/public/d3-contour.v1.min.js +cp -v ./build/d3.github.com/d3-contour.v2.js docs/public/d3-contour.v2.js +cp -v ./build/d3.github.com/d3-contour.v2.min.js docs/public/d3-contour.v2.min.js +cp -v ./build/d3.github.com/d3-contour.v3.js docs/public/d3-contour.v3.js +cp -v ./build/d3.github.com/d3-contour.v3.min.js docs/public/d3-contour.v3.min.js +cp -v ./build/d3.github.com/d3-contour.v4.js docs/public/d3-contour.v4.js +cp -v ./build/d3.github.com/d3-contour.v4.min.js docs/public/d3-contour.v4.min.js +cp -v ./build/d3.github.com/d3-dispatch.v0.2.js docs/public/d3-dispatch.v0.2.js +cp -v ./build/d3.github.com/d3-dispatch.v0.2.min.js docs/public/d3-dispatch.v0.2.min.js +cp -v ./build/d3.github.com/d3-dispatch.v0.3.js docs/public/d3-dispatch.v0.3.js +cp -v ./build/d3.github.com/d3-dispatch.v0.3.min.js docs/public/d3-dispatch.v0.3.min.js +cp -v ./build/d3.github.com/d3-dispatch.v0.4.js docs/public/d3-dispatch.v0.4.js +cp -v ./build/d3.github.com/d3-dispatch.v0.4.min.js docs/public/d3-dispatch.v0.4.min.js +cp -v ./build/d3.github.com/d3-dispatch.v0.5.js docs/public/d3-dispatch.v0.5.js +cp -v ./build/d3.github.com/d3-dispatch.v0.5.min.js docs/public/d3-dispatch.v0.5.min.js +cp -v ./build/d3.github.com/d3-dispatch.v1.js docs/public/d3-dispatch.v1.js +cp -v ./build/d3.github.com/d3-dispatch.v1.min.js docs/public/d3-dispatch.v1.min.js +cp -v ./build/d3.github.com/d3-dispatch.v2.js docs/public/d3-dispatch.v2.js +cp -v ./build/d3.github.com/d3-dispatch.v2.min.js docs/public/d3-dispatch.v2.min.js +cp -v ./build/d3.github.com/d3-dispatch.v3.js docs/public/d3-dispatch.v3.js +cp -v ./build/d3.github.com/d3-dispatch.v3.min.js docs/public/d3-dispatch.v3.min.js +cp -v ./build/d3.github.com/d3-drag.v0.0.js docs/public/d3-drag.v0.0.js +cp -v ./build/d3.github.com/d3-drag.v0.0.min.js docs/public/d3-drag.v0.0.min.js +cp -v ./build/d3.github.com/d3-drag.v0.1.js docs/public/d3-drag.v0.1.js +cp -v ./build/d3.github.com/d3-drag.v0.1.min.js docs/public/d3-drag.v0.1.min.js +cp -v ./build/d3.github.com/d3-drag.v0.2.js docs/public/d3-drag.v0.2.js +cp -v ./build/d3.github.com/d3-drag.v0.2.min.js docs/public/d3-drag.v0.2.min.js +cp -v ./build/d3.github.com/d3-drag.v0.3.js docs/public/d3-drag.v0.3.js +cp -v ./build/d3.github.com/d3-drag.v0.3.min.js docs/public/d3-drag.v0.3.min.js +cp -v ./build/d3.github.com/d3-drag.v1.js docs/public/d3-drag.v1.js +cp -v ./build/d3.github.com/d3-drag.v1.min.js docs/public/d3-drag.v1.min.js +cp -v ./build/d3.github.com/d3-drag.v2.js docs/public/d3-drag.v2.js +cp -v ./build/d3.github.com/d3-drag.v2.min.js docs/public/d3-drag.v2.min.js +cp -v ./build/d3.github.com/d3-drag.v3.js docs/public/d3-drag.v3.js +cp -v ./build/d3.github.com/d3-drag.v3.min.js docs/public/d3-drag.v3.min.js +cp -v ./build/d3.github.com/d3-dsv.v0.1.js docs/public/d3-dsv.v0.1.js +cp -v ./build/d3.github.com/d3-dsv.v0.1.min.js docs/public/d3-dsv.v0.1.min.js +cp -v ./build/d3.github.com/d3-dsv.v0.2.js docs/public/d3-dsv.v0.2.js +cp -v ./build/d3.github.com/d3-dsv.v0.2.min.js docs/public/d3-dsv.v0.2.min.js +cp -v ./build/d3.github.com/d3-dsv.v0.3.js docs/public/d3-dsv.v0.3.js +cp -v ./build/d3.github.com/d3-dsv.v0.3.min.js docs/public/d3-dsv.v0.3.min.js +cp -v ./build/d3.github.com/d3-dsv.v0.4.js docs/public/d3-dsv.v0.4.js +cp -v ./build/d3.github.com/d3-dsv.v0.4.min.js docs/public/d3-dsv.v0.4.min.js +cp -v ./build/d3.github.com/d3-dsv.v1.js docs/public/d3-dsv.v1.js +cp -v ./build/d3.github.com/d3-dsv.v1.min.js docs/public/d3-dsv.v1.min.js +cp -v ./build/d3.github.com/d3-dsv.v2.js docs/public/d3-dsv.v2.js +cp -v ./build/d3.github.com/d3-dsv.v2.min.js docs/public/d3-dsv.v2.min.js +cp -v ./build/d3.github.com/d3-dsv.v3.js docs/public/d3-dsv.v3.js +cp -v ./build/d3.github.com/d3-dsv.v3.min.js docs/public/d3-dsv.v3.min.js +cp -v ./build/d3.github.com/d3-ease.v0.3.js docs/public/d3-ease.v0.3.js +cp -v ./build/d3.github.com/d3-ease.v0.3.min.js docs/public/d3-ease.v0.3.min.js +cp -v ./build/d3.github.com/d3-ease.v0.4.js docs/public/d3-ease.v0.4.js +cp -v ./build/d3.github.com/d3-ease.v0.4.min.js docs/public/d3-ease.v0.4.min.js +cp -v ./build/d3.github.com/d3-ease.v0.5.js docs/public/d3-ease.v0.5.js +cp -v ./build/d3.github.com/d3-ease.v0.5.min.js docs/public/d3-ease.v0.5.min.js +cp -v ./build/d3.github.com/d3-ease.v0.6.js docs/public/d3-ease.v0.6.js +cp -v ./build/d3.github.com/d3-ease.v0.6.min.js docs/public/d3-ease.v0.6.min.js +cp -v ./build/d3.github.com/d3-ease.v0.7.js docs/public/d3-ease.v0.7.js +cp -v ./build/d3.github.com/d3-ease.v0.7.min.js docs/public/d3-ease.v0.7.min.js +cp -v ./build/d3.github.com/d3-ease.v0.8.js docs/public/d3-ease.v0.8.js +cp -v ./build/d3.github.com/d3-ease.v0.8.min.js docs/public/d3-ease.v0.8.min.js +cp -v ./build/d3.github.com/d3-ease.v1.js docs/public/d3-ease.v1.js +cp -v ./build/d3.github.com/d3-ease.v1.min.js docs/public/d3-ease.v1.min.js +cp -v ./build/d3.github.com/d3-ease.v2.js docs/public/d3-ease.v2.js +cp -v ./build/d3.github.com/d3-ease.v2.min.js docs/public/d3-ease.v2.min.js +cp -v ./build/d3.github.com/d3-ease.v3.js docs/public/d3-ease.v3.js +cp -v ./build/d3.github.com/d3-ease.v3.min.js docs/public/d3-ease.v3.min.js +cp -v ./build/d3.github.com/d3-fetch.v0.js docs/public/d3-fetch.v0.js +cp -v ./build/d3.github.com/d3-fetch.v0.min.js docs/public/d3-fetch.v0.min.js +cp -v ./build/d3.github.com/d3-fetch.v1.js docs/public/d3-fetch.v1.js +cp -v ./build/d3.github.com/d3-fetch.v1.min.js docs/public/d3-fetch.v1.min.js +cp -v ./build/d3.github.com/d3-fetch.v2.js docs/public/d3-fetch.v2.js +cp -v ./build/d3.github.com/d3-fetch.v2.min.js docs/public/d3-fetch.v2.min.js +cp -v ./build/d3.github.com/d3-fetch.v3.js docs/public/d3-fetch.v3.js +cp -v ./build/d3.github.com/d3-fetch.v3.min.js docs/public/d3-fetch.v3.min.js +cp -v ./build/d3.github.com/d3-force.v0.0.js docs/public/d3-force.v0.0.js +cp -v ./build/d3.github.com/d3-force.v0.0.min.js docs/public/d3-force.v0.0.min.js +cp -v ./build/d3.github.com/d3-force.v0.1.js docs/public/d3-force.v0.1.js +cp -v ./build/d3.github.com/d3-force.v0.1.min.js docs/public/d3-force.v0.1.min.js +cp -v ./build/d3.github.com/d3-force.v0.2.js docs/public/d3-force.v0.2.js +cp -v ./build/d3.github.com/d3-force.v0.2.min.js docs/public/d3-force.v0.2.min.js +cp -v ./build/d3.github.com/d3-force.v0.3.js docs/public/d3-force.v0.3.js +cp -v ./build/d3.github.com/d3-force.v0.3.min.js docs/public/d3-force.v0.3.min.js +cp -v ./build/d3.github.com/d3-force.v0.4.js docs/public/d3-force.v0.4.js +cp -v ./build/d3.github.com/d3-force.v0.4.min.js docs/public/d3-force.v0.4.min.js +cp -v ./build/d3.github.com/d3-force.v0.5.js docs/public/d3-force.v0.5.js +cp -v ./build/d3.github.com/d3-force.v0.5.min.js docs/public/d3-force.v0.5.min.js +cp -v ./build/d3.github.com/d3-force.v0.6.js docs/public/d3-force.v0.6.js +cp -v ./build/d3.github.com/d3-force.v0.6.min.js docs/public/d3-force.v0.6.min.js +cp -v ./build/d3.github.com/d3-force.v0.7.js docs/public/d3-force.v0.7.js +cp -v ./build/d3.github.com/d3-force.v0.7.min.js docs/public/d3-force.v0.7.min.js +cp -v ./build/d3.github.com/d3-force.v1.js docs/public/d3-force.v1.js +cp -v ./build/d3.github.com/d3-force.v1.min.js docs/public/d3-force.v1.min.js +cp -v ./build/d3.github.com/d3-force.v2.js docs/public/d3-force.v2.js +cp -v ./build/d3.github.com/d3-force.v2.min.js docs/public/d3-force.v2.min.js +cp -v ./build/d3.github.com/d3-force.v3.js docs/public/d3-force.v3.js +cp -v ./build/d3.github.com/d3-force.v3.min.js docs/public/d3-force.v3.min.js +cp -v ./build/d3.github.com/d3-format.v0.4.js docs/public/d3-format.v0.4.js +cp -v ./build/d3.github.com/d3-format.v0.4.min.js docs/public/d3-format.v0.4.min.js +cp -v ./build/d3.github.com/d3-format.v0.5.js docs/public/d3-format.v0.5.js +cp -v ./build/d3.github.com/d3-format.v0.5.min.js docs/public/d3-format.v0.5.min.js +cp -v ./build/d3.github.com/d3-format.v0.6.js docs/public/d3-format.v0.6.js +cp -v ./build/d3.github.com/d3-format.v0.6.min.js docs/public/d3-format.v0.6.min.js +cp -v ./build/d3.github.com/d3-format.v1.js docs/public/d3-format.v1.js +cp -v ./build/d3.github.com/d3-format.v1.min.js docs/public/d3-format.v1.min.js +cp -v ./build/d3.github.com/d3-format.v2.js docs/public/d3-format.v2.js +cp -v ./build/d3.github.com/d3-format.v2.min.js docs/public/d3-format.v2.min.js +cp -v ./build/d3.github.com/d3-format.v3.js docs/public/d3-format.v3.js +cp -v ./build/d3.github.com/d3-format.v3.min.js docs/public/d3-format.v3.min.js +cp -v ./build/d3.github.com/d3-geo-projection.v1.js docs/public/d3-geo-projection.v1.js +cp -v ./build/d3.github.com/d3-geo-projection.v1.min.js docs/public/d3-geo-projection.v1.min.js +cp -v ./build/d3.github.com/d3-geo-projection.v2.js docs/public/d3-geo-projection.v2.js +cp -v ./build/d3.github.com/d3-geo-projection.v2.min.js docs/public/d3-geo-projection.v2.min.js +cp -v ./build/d3.github.com/d3-geo-projection.v3.js docs/public/d3-geo-projection.v3.js +cp -v ./build/d3.github.com/d3-geo-projection.v3.min.js docs/public/d3-geo-projection.v3.min.js +cp -v ./build/d3.github.com/d3-geo-projection.v4.js docs/public/d3-geo-projection.v4.js +cp -v ./build/d3.github.com/d3-geo-projection.v4.min.js docs/public/d3-geo-projection.v4.min.js +cp -v ./build/d3.github.com/d3-geo.v0.0.js docs/public/d3-geo.v0.0.js +cp -v ./build/d3.github.com/d3-geo.v0.0.min.js docs/public/d3-geo.v0.0.min.js +cp -v ./build/d3.github.com/d3-geo.v0.1.js docs/public/d3-geo.v0.1.js +cp -v ./build/d3.github.com/d3-geo.v0.1.min.js docs/public/d3-geo.v0.1.min.js +cp -v ./build/d3.github.com/d3-geo.v1.js docs/public/d3-geo.v1.js +cp -v ./build/d3.github.com/d3-geo.v1.min.js docs/public/d3-geo.v1.min.js +cp -v ./build/d3.github.com/d3-geo.v2.js docs/public/d3-geo.v2.js +cp -v ./build/d3.github.com/d3-geo.v2.min.js docs/public/d3-geo.v2.min.js +cp -v ./build/d3.github.com/d3-geo.v3.js docs/public/d3-geo.v3.js +cp -v ./build/d3.github.com/d3-geo.v3.min.js docs/public/d3-geo.v3.min.js +cp -v ./build/d3.github.com/d3-hexbin.v0.2.js docs/public/d3-hexbin.v0.2.js +cp -v ./build/d3.github.com/d3-hexbin.v0.2.min.js docs/public/d3-hexbin.v0.2.min.js +cp -v ./build/d3.github.com/d3-hexbin.v1.js docs/public/d3-hexbin.v1.js +cp -v ./build/d3.github.com/d3-hexbin.v1.min.js docs/public/d3-hexbin.v1.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.1.js docs/public/d3-hierarchy.v0.1.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.1.min.js docs/public/d3-hierarchy.v0.1.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.2.js docs/public/d3-hierarchy.v0.2.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.2.min.js docs/public/d3-hierarchy.v0.2.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.3.js docs/public/d3-hierarchy.v0.3.js +cp -v ./build/d3.github.com/d3-hierarchy.v0.3.min.js docs/public/d3-hierarchy.v0.3.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v1.js docs/public/d3-hierarchy.v1.js +cp -v ./build/d3.github.com/d3-hierarchy.v1.min.js docs/public/d3-hierarchy.v1.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v2.js docs/public/d3-hierarchy.v2.js +cp -v ./build/d3.github.com/d3-hierarchy.v2.min.js docs/public/d3-hierarchy.v2.min.js +cp -v ./build/d3.github.com/d3-hierarchy.v3.js docs/public/d3-hierarchy.v3.js +cp -v ./build/d3.github.com/d3-hierarchy.v3.min.js docs/public/d3-hierarchy.v3.min.js +cp -v ./build/d3.github.com/d3-hsv.v0.0.js docs/public/d3-hsv.v0.0.js +cp -v ./build/d3.github.com/d3-hsv.v0.0.min.js docs/public/d3-hsv.v0.0.min.js +cp -v ./build/d3.github.com/d3-hsv.v0.1.js docs/public/d3-hsv.v0.1.js +cp -v ./build/d3.github.com/d3-hsv.v0.1.min.js docs/public/d3-hsv.v0.1.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.2.js docs/public/d3-interpolate.v0.2.js +cp -v ./build/d3.github.com/d3-interpolate.v0.2.min.js docs/public/d3-interpolate.v0.2.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.3.js docs/public/d3-interpolate.v0.3.js +cp -v ./build/d3.github.com/d3-interpolate.v0.3.min.js docs/public/d3-interpolate.v0.3.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.4.js docs/public/d3-interpolate.v0.4.js +cp -v ./build/d3.github.com/d3-interpolate.v0.4.min.js docs/public/d3-interpolate.v0.4.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.5.js docs/public/d3-interpolate.v0.5.js +cp -v ./build/d3.github.com/d3-interpolate.v0.5.min.js docs/public/d3-interpolate.v0.5.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.6.js docs/public/d3-interpolate.v0.6.js +cp -v ./build/d3.github.com/d3-interpolate.v0.6.min.js docs/public/d3-interpolate.v0.6.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.7.js docs/public/d3-interpolate.v0.7.js +cp -v ./build/d3.github.com/d3-interpolate.v0.7.min.js docs/public/d3-interpolate.v0.7.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.8.js docs/public/d3-interpolate.v0.8.js +cp -v ./build/d3.github.com/d3-interpolate.v0.8.min.js docs/public/d3-interpolate.v0.8.min.js +cp -v ./build/d3.github.com/d3-interpolate.v0.9.js docs/public/d3-interpolate.v0.9.js +cp -v ./build/d3.github.com/d3-interpolate.v0.9.min.js docs/public/d3-interpolate.v0.9.min.js +cp -v ./build/d3.github.com/d3-interpolate.v1.js docs/public/d3-interpolate.v1.js +cp -v ./build/d3.github.com/d3-interpolate.v1.min.js docs/public/d3-interpolate.v1.min.js +cp -v ./build/d3.github.com/d3-interpolate.v2.js docs/public/d3-interpolate.v2.js +cp -v ./build/d3.github.com/d3-interpolate.v2.min.js docs/public/d3-interpolate.v2.min.js +cp -v ./build/d3.github.com/d3-interpolate.v3.js docs/public/d3-interpolate.v3.js +cp -v ./build/d3.github.com/d3-interpolate.v3.min.js docs/public/d3-interpolate.v3.min.js +cp -v ./build/d3.github.com/d3-path.v0.1.js docs/public/d3-path.v0.1.js +cp -v ./build/d3.github.com/d3-path.v0.1.min.js docs/public/d3-path.v0.1.min.js +cp -v ./build/d3.github.com/d3-path.v0.2.js docs/public/d3-path.v0.2.js +cp -v ./build/d3.github.com/d3-path.v0.2.min.js docs/public/d3-path.v0.2.min.js +cp -v ./build/d3.github.com/d3-path.v1.js docs/public/d3-path.v1.js +cp -v ./build/d3.github.com/d3-path.v1.min.js docs/public/d3-path.v1.min.js +cp -v ./build/d3.github.com/d3-path.v2.js docs/public/d3-path.v2.js +cp -v ./build/d3.github.com/d3-path.v2.min.js docs/public/d3-path.v2.min.js +cp -v ./build/d3.github.com/d3-path.v3.js docs/public/d3-path.v3.js +cp -v ./build/d3.github.com/d3-path.v3.min.js docs/public/d3-path.v3.min.js +cp -v ./build/d3.github.com/d3-polygon.v0.1.js docs/public/d3-polygon.v0.1.js +cp -v ./build/d3.github.com/d3-polygon.v0.1.min.js docs/public/d3-polygon.v0.1.min.js +cp -v ./build/d3.github.com/d3-polygon.v0.2.js docs/public/d3-polygon.v0.2.js +cp -v ./build/d3.github.com/d3-polygon.v0.2.min.js docs/public/d3-polygon.v0.2.min.js +cp -v ./build/d3.github.com/d3-polygon.v0.3.js docs/public/d3-polygon.v0.3.js +cp -v ./build/d3.github.com/d3-polygon.v0.3.min.js docs/public/d3-polygon.v0.3.min.js +cp -v ./build/d3.github.com/d3-polygon.v1.js docs/public/d3-polygon.v1.js +cp -v ./build/d3.github.com/d3-polygon.v1.min.js docs/public/d3-polygon.v1.min.js +cp -v ./build/d3.github.com/d3-polygon.v2.js docs/public/d3-polygon.v2.js +cp -v ./build/d3.github.com/d3-polygon.v2.min.js docs/public/d3-polygon.v2.min.js +cp -v ./build/d3.github.com/d3-polygon.v3.js docs/public/d3-polygon.v3.js +cp -v ./build/d3.github.com/d3-polygon.v3.min.js docs/public/d3-polygon.v3.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.1.js docs/public/d3-quadtree.v0.1.js +cp -v ./build/d3.github.com/d3-quadtree.v0.1.min.js docs/public/d3-quadtree.v0.1.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.2.js docs/public/d3-quadtree.v0.2.js +cp -v ./build/d3.github.com/d3-quadtree.v0.2.min.js docs/public/d3-quadtree.v0.2.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.3.js docs/public/d3-quadtree.v0.3.js +cp -v ./build/d3.github.com/d3-quadtree.v0.3.min.js docs/public/d3-quadtree.v0.3.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.4.js docs/public/d3-quadtree.v0.4.js +cp -v ./build/d3.github.com/d3-quadtree.v0.4.min.js docs/public/d3-quadtree.v0.4.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.5.js docs/public/d3-quadtree.v0.5.js +cp -v ./build/d3.github.com/d3-quadtree.v0.5.min.js docs/public/d3-quadtree.v0.5.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.6.js docs/public/d3-quadtree.v0.6.js +cp -v ./build/d3.github.com/d3-quadtree.v0.6.min.js docs/public/d3-quadtree.v0.6.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.7.js docs/public/d3-quadtree.v0.7.js +cp -v ./build/d3.github.com/d3-quadtree.v0.7.min.js docs/public/d3-quadtree.v0.7.min.js +cp -v ./build/d3.github.com/d3-quadtree.v0.8.js docs/public/d3-quadtree.v0.8.js +cp -v ./build/d3.github.com/d3-quadtree.v0.8.min.js docs/public/d3-quadtree.v0.8.min.js +cp -v ./build/d3.github.com/d3-quadtree.v1.js docs/public/d3-quadtree.v1.js +cp -v ./build/d3.github.com/d3-quadtree.v1.min.js docs/public/d3-quadtree.v1.min.js +cp -v ./build/d3.github.com/d3-quadtree.v2.js docs/public/d3-quadtree.v2.js +cp -v ./build/d3.github.com/d3-quadtree.v2.min.js docs/public/d3-quadtree.v2.min.js +cp -v ./build/d3.github.com/d3-quadtree.v3.js docs/public/d3-quadtree.v3.js +cp -v ./build/d3.github.com/d3-quadtree.v3.min.js docs/public/d3-quadtree.v3.min.js +cp -v ./build/d3.github.com/d3-queue.v1.js docs/public/d3-queue.v1.js +cp -v ./build/d3.github.com/d3-queue.v1.min.js docs/public/d3-queue.v1.min.js +cp -v ./build/d3.github.com/d3-queue.v2.js docs/public/d3-queue.v2.js +cp -v ./build/d3.github.com/d3-queue.v2.min.js docs/public/d3-queue.v2.min.js +cp -v ./build/d3.github.com/d3-queue.v3.js docs/public/d3-queue.v3.js +cp -v ./build/d3.github.com/d3-queue.v3.min.js docs/public/d3-queue.v3.min.js +cp -v ./build/d3.github.com/d3-random.v0.1.js docs/public/d3-random.v0.1.js +cp -v ./build/d3.github.com/d3-random.v0.1.min.js docs/public/d3-random.v0.1.min.js +cp -v ./build/d3.github.com/d3-random.v0.2.js docs/public/d3-random.v0.2.js +cp -v ./build/d3.github.com/d3-random.v0.2.min.js docs/public/d3-random.v0.2.min.js +cp -v ./build/d3.github.com/d3-random.v0.3.js docs/public/d3-random.v0.3.js +cp -v ./build/d3.github.com/d3-random.v0.3.min.js docs/public/d3-random.v0.3.min.js +cp -v ./build/d3.github.com/d3-random.v1.js docs/public/d3-random.v1.js +cp -v ./build/d3.github.com/d3-random.v1.min.js docs/public/d3-random.v1.min.js +cp -v ./build/d3.github.com/d3-random.v2.js docs/public/d3-random.v2.js +cp -v ./build/d3.github.com/d3-random.v2.min.js docs/public/d3-random.v2.min.js +cp -v ./build/d3.github.com/d3-random.v3.js docs/public/d3-random.v3.js +cp -v ./build/d3.github.com/d3-random.v3.min.js docs/public/d3-random.v3.min.js +cp -v ./build/d3.github.com/d3-request.v0.2.js docs/public/d3-request.v0.2.js +cp -v ./build/d3.github.com/d3-request.v0.2.min.js docs/public/d3-request.v0.2.min.js +cp -v ./build/d3.github.com/d3-request.v0.3.js docs/public/d3-request.v0.3.js +cp -v ./build/d3.github.com/d3-request.v0.3.min.js docs/public/d3-request.v0.3.min.js +cp -v ./build/d3.github.com/d3-request.v0.4.js docs/public/d3-request.v0.4.js +cp -v ./build/d3.github.com/d3-request.v0.4.min.js docs/public/d3-request.v0.4.min.js +cp -v ./build/d3.github.com/d3-request.v0.5.js docs/public/d3-request.v0.5.js +cp -v ./build/d3.github.com/d3-request.v0.5.min.js docs/public/d3-request.v0.5.min.js +cp -v ./build/d3.github.com/d3-request.v1.js docs/public/d3-request.v1.js +cp -v ./build/d3.github.com/d3-request.v1.min.js docs/public/d3-request.v1.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.0.js docs/public/d3-scale-chromatic.v0.0.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.0.min.js docs/public/d3-scale-chromatic.v0.0.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.1.js docs/public/d3-scale-chromatic.v0.1.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.1.min.js docs/public/d3-scale-chromatic.v0.1.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.2.js docs/public/d3-scale-chromatic.v0.2.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.2.min.js docs/public/d3-scale-chromatic.v0.2.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.3.js docs/public/d3-scale-chromatic.v0.3.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v0.3.min.js docs/public/d3-scale-chromatic.v0.3.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v1.js docs/public/d3-scale-chromatic.v1.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v1.min.js docs/public/d3-scale-chromatic.v1.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v2.js docs/public/d3-scale-chromatic.v2.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v2.min.js docs/public/d3-scale-chromatic.v2.min.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v3.js docs/public/d3-scale-chromatic.v3.js +cp -v ./build/d3.github.com/d3-scale-chromatic.v3.min.js docs/public/d3-scale-chromatic.v3.min.js +cp -v ./build/d3.github.com/d3-scale.v0.3.js docs/public/d3-scale.v0.3.js +cp -v ./build/d3.github.com/d3-scale.v0.3.min.js docs/public/d3-scale.v0.3.min.js +cp -v ./build/d3.github.com/d3-scale.v0.4.js docs/public/d3-scale.v0.4.js +cp -v ./build/d3.github.com/d3-scale.v0.4.min.js docs/public/d3-scale.v0.4.min.js +cp -v ./build/d3.github.com/d3-scale.v0.5.js docs/public/d3-scale.v0.5.js +cp -v ./build/d3.github.com/d3-scale.v0.5.min.js docs/public/d3-scale.v0.5.min.js +cp -v ./build/d3.github.com/d3-scale.v0.6.js docs/public/d3-scale.v0.6.js +cp -v ./build/d3.github.com/d3-scale.v0.6.min.js docs/public/d3-scale.v0.6.min.js +cp -v ./build/d3.github.com/d3-scale.v0.7.js docs/public/d3-scale.v0.7.js +cp -v ./build/d3.github.com/d3-scale.v0.7.min.js docs/public/d3-scale.v0.7.min.js +cp -v ./build/d3.github.com/d3-scale.v0.8.js docs/public/d3-scale.v0.8.js +cp -v ./build/d3.github.com/d3-scale.v0.8.min.js docs/public/d3-scale.v0.8.min.js +cp -v ./build/d3.github.com/d3-scale.v0.9.js docs/public/d3-scale.v0.9.js +cp -v ./build/d3.github.com/d3-scale.v0.9.min.js docs/public/d3-scale.v0.9.min.js +cp -v ./build/d3.github.com/d3-scale.v1.js docs/public/d3-scale.v1.js +cp -v ./build/d3.github.com/d3-scale.v1.min.js docs/public/d3-scale.v1.min.js +cp -v ./build/d3.github.com/d3-scale.v2.js docs/public/d3-scale.v2.js +cp -v ./build/d3.github.com/d3-scale.v2.min.js docs/public/d3-scale.v2.min.js +cp -v ./build/d3.github.com/d3-scale.v3.js docs/public/d3-scale.v3.js +cp -v ./build/d3.github.com/d3-scale.v3.min.js docs/public/d3-scale.v3.min.js +cp -v ./build/d3.github.com/d3-scale.v4.js docs/public/d3-scale.v4.js +cp -v ./build/d3.github.com/d3-scale.v4.min.js docs/public/d3-scale.v4.min.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.2.js docs/public/d3-selection-multi.v0.2.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.2.min.js docs/public/d3-selection-multi.v0.2.min.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.3.js docs/public/d3-selection-multi.v0.3.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.3.min.js docs/public/d3-selection-multi.v0.3.min.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.4.js docs/public/d3-selection-multi.v0.4.js +cp -v ./build/d3.github.com/d3-selection-multi.v0.4.min.js docs/public/d3-selection-multi.v0.4.min.js +cp -v ./build/d3.github.com/d3-selection-multi.v1.js docs/public/d3-selection-multi.v1.js +cp -v ./build/d3.github.com/d3-selection-multi.v1.min.js docs/public/d3-selection-multi.v1.min.js +cp -v ./build/d3.github.com/d3-selection.v0.5.js docs/public/d3-selection.v0.5.js +cp -v ./build/d3.github.com/d3-selection.v0.5.min.js docs/public/d3-selection.v0.5.min.js +cp -v ./build/d3.github.com/d3-selection.v0.6.js docs/public/d3-selection.v0.6.js +cp -v ./build/d3.github.com/d3-selection.v0.6.min.js docs/public/d3-selection.v0.6.min.js +cp -v ./build/d3.github.com/d3-selection.v0.7.js docs/public/d3-selection.v0.7.js +cp -v ./build/d3.github.com/d3-selection.v0.7.min.js docs/public/d3-selection.v0.7.min.js +cp -v ./build/d3.github.com/d3-selection.v0.8.js docs/public/d3-selection.v0.8.js +cp -v ./build/d3.github.com/d3-selection.v0.8.min.js docs/public/d3-selection.v0.8.min.js +cp -v ./build/d3.github.com/d3-selection.v0.9.js docs/public/d3-selection.v0.9.js +cp -v ./build/d3.github.com/d3-selection.v0.9.min.js docs/public/d3-selection.v0.9.min.js +cp -v ./build/d3.github.com/d3-selection.v1.js docs/public/d3-selection.v1.js +cp -v ./build/d3.github.com/d3-selection.v1.min.js docs/public/d3-selection.v1.min.js +cp -v ./build/d3.github.com/d3-selection.v2.js docs/public/d3-selection.v2.js +cp -v ./build/d3.github.com/d3-selection.v2.min.js docs/public/d3-selection.v2.min.js +cp -v ./build/d3.github.com/d3-selection.v3.js docs/public/d3-selection.v3.js +cp -v ./build/d3.github.com/d3-selection.v3.min.js docs/public/d3-selection.v3.min.js +cp -v ./build/d3.github.com/d3-shape.v0.2.js docs/public/d3-shape.v0.2.js +cp -v ./build/d3.github.com/d3-shape.v0.2.min.js docs/public/d3-shape.v0.2.min.js +cp -v ./build/d3.github.com/d3-shape.v0.3.js docs/public/d3-shape.v0.3.js +cp -v ./build/d3.github.com/d3-shape.v0.3.min.js docs/public/d3-shape.v0.3.min.js +cp -v ./build/d3.github.com/d3-shape.v0.4.js docs/public/d3-shape.v0.4.js +cp -v ./build/d3.github.com/d3-shape.v0.4.min.js docs/public/d3-shape.v0.4.min.js +cp -v ./build/d3.github.com/d3-shape.v0.5.js docs/public/d3-shape.v0.5.js +cp -v ./build/d3.github.com/d3-shape.v0.5.min.js docs/public/d3-shape.v0.5.min.js +cp -v ./build/d3.github.com/d3-shape.v0.6.js docs/public/d3-shape.v0.6.js +cp -v ./build/d3.github.com/d3-shape.v0.6.min.js docs/public/d3-shape.v0.6.min.js +cp -v ./build/d3.github.com/d3-shape.v0.7.js docs/public/d3-shape.v0.7.js +cp -v ./build/d3.github.com/d3-shape.v0.7.min.js docs/public/d3-shape.v0.7.min.js +cp -v ./build/d3.github.com/d3-shape.v1.js docs/public/d3-shape.v1.js +cp -v ./build/d3.github.com/d3-shape.v1.min.js docs/public/d3-shape.v1.min.js +cp -v ./build/d3.github.com/d3-shape.v2.js docs/public/d3-shape.v2.js +cp -v ./build/d3.github.com/d3-shape.v2.min.js docs/public/d3-shape.v2.min.js +cp -v ./build/d3.github.com/d3-shape.v3.js docs/public/d3-shape.v3.js +cp -v ./build/d3.github.com/d3-shape.v3.min.js docs/public/d3-shape.v3.min.js +cp -v ./build/d3.github.com/d3-tile.v0.0.js docs/public/d3-tile.v0.0.js +cp -v ./build/d3.github.com/d3-tile.v0.0.min.js docs/public/d3-tile.v0.0.min.js +cp -v ./build/d3.github.com/d3-time-format.v0.2.js docs/public/d3-time-format.v0.2.js +cp -v ./build/d3.github.com/d3-time-format.v0.2.min.js docs/public/d3-time-format.v0.2.min.js +cp -v ./build/d3.github.com/d3-time-format.v0.3.js docs/public/d3-time-format.v0.3.js +cp -v ./build/d3.github.com/d3-time-format.v0.3.min.js docs/public/d3-time-format.v0.3.min.js +cp -v ./build/d3.github.com/d3-time-format.v0.4.js docs/public/d3-time-format.v0.4.js +cp -v ./build/d3.github.com/d3-time-format.v0.4.min.js docs/public/d3-time-format.v0.4.min.js +cp -v ./build/d3.github.com/d3-time-format.v1.js docs/public/d3-time-format.v1.js +cp -v ./build/d3.github.com/d3-time-format.v1.min.js docs/public/d3-time-format.v1.min.js +cp -v ./build/d3.github.com/d3-time-format.v2.js docs/public/d3-time-format.v2.js +cp -v ./build/d3.github.com/d3-time-format.v2.min.js docs/public/d3-time-format.v2.min.js +cp -v ./build/d3.github.com/d3-time-format.v3.js docs/public/d3-time-format.v3.js +cp -v ./build/d3.github.com/d3-time-format.v3.min.js docs/public/d3-time-format.v3.min.js +cp -v ./build/d3.github.com/d3-time-format.v4.js docs/public/d3-time-format.v4.js +cp -v ./build/d3.github.com/d3-time-format.v4.min.js docs/public/d3-time-format.v4.min.js +cp -v ./build/d3.github.com/d3-time.v0.1.js docs/public/d3-time.v0.1.js +cp -v ./build/d3.github.com/d3-time.v0.1.min.js docs/public/d3-time.v0.1.min.js +cp -v ./build/d3.github.com/d3-time.v0.2.js docs/public/d3-time.v0.2.js +cp -v ./build/d3.github.com/d3-time.v0.2.min.js docs/public/d3-time.v0.2.min.js +cp -v ./build/d3.github.com/d3-time.v0.3.js docs/public/d3-time.v0.3.js +cp -v ./build/d3.github.com/d3-time.v0.3.min.js docs/public/d3-time.v0.3.min.js +cp -v ./build/d3.github.com/d3-time.v1.js docs/public/d3-time.v1.js +cp -v ./build/d3.github.com/d3-time.v1.min.js docs/public/d3-time.v1.min.js +cp -v ./build/d3.github.com/d3-time.v2.js docs/public/d3-time.v2.js +cp -v ./build/d3.github.com/d3-time.v2.min.js docs/public/d3-time.v2.min.js +cp -v ./build/d3.github.com/d3-time.v3.js docs/public/d3-time.v3.js +cp -v ./build/d3.github.com/d3-time.v3.min.js docs/public/d3-time.v3.min.js +cp -v ./build/d3.github.com/d3-timer.v0.1.js docs/public/d3-timer.v0.1.js +cp -v ./build/d3.github.com/d3-timer.v0.1.min.js docs/public/d3-timer.v0.1.min.js +cp -v ./build/d3.github.com/d3-timer.v0.2.js docs/public/d3-timer.v0.2.js +cp -v ./build/d3.github.com/d3-timer.v0.2.min.js docs/public/d3-timer.v0.2.min.js +cp -v ./build/d3.github.com/d3-timer.v0.3.js docs/public/d3-timer.v0.3.js +cp -v ./build/d3.github.com/d3-timer.v0.3.min.js docs/public/d3-timer.v0.3.min.js +cp -v ./build/d3.github.com/d3-timer.v0.4.js docs/public/d3-timer.v0.4.js +cp -v ./build/d3.github.com/d3-timer.v0.4.min.js docs/public/d3-timer.v0.4.min.js +cp -v ./build/d3.github.com/d3-timer.v0.5.js docs/public/d3-timer.v0.5.js +cp -v ./build/d3.github.com/d3-timer.v0.5.min.js docs/public/d3-timer.v0.5.min.js +cp -v ./build/d3.github.com/d3-timer.v1.js docs/public/d3-timer.v1.js +cp -v ./build/d3.github.com/d3-timer.v1.min.js docs/public/d3-timer.v1.min.js +cp -v ./build/d3.github.com/d3-timer.v2.js docs/public/d3-timer.v2.js +cp -v ./build/d3.github.com/d3-timer.v2.min.js docs/public/d3-timer.v2.min.js +cp -v ./build/d3.github.com/d3-timer.v3.js docs/public/d3-timer.v3.js +cp -v ./build/d3.github.com/d3-timer.v3.min.js docs/public/d3-timer.v3.min.js +cp -v ./build/d3.github.com/d3-transition.v0.0.js docs/public/d3-transition.v0.0.js +cp -v ./build/d3.github.com/d3-transition.v0.0.min.js docs/public/d3-transition.v0.0.min.js +cp -v ./build/d3.github.com/d3-transition.v0.1.js docs/public/d3-transition.v0.1.js +cp -v ./build/d3.github.com/d3-transition.v0.1.min.js docs/public/d3-transition.v0.1.min.js +cp -v ./build/d3.github.com/d3-transition.v0.2.js docs/public/d3-transition.v0.2.js +cp -v ./build/d3.github.com/d3-transition.v0.2.min.js docs/public/d3-transition.v0.2.min.js +cp -v ./build/d3.github.com/d3-transition.v0.3.js docs/public/d3-transition.v0.3.js +cp -v ./build/d3.github.com/d3-transition.v0.3.min.js docs/public/d3-transition.v0.3.min.js +cp -v ./build/d3.github.com/d3-transition.v1.js docs/public/d3-transition.v1.js +cp -v ./build/d3.github.com/d3-transition.v1.min.js docs/public/d3-transition.v1.min.js +cp -v ./build/d3.github.com/d3-transition.v2.js docs/public/d3-transition.v2.js +cp -v ./build/d3.github.com/d3-transition.v2.min.js docs/public/d3-transition.v2.min.js +cp -v ./build/d3.github.com/d3-transition.v3.js docs/public/d3-transition.v3.js +cp -v ./build/d3.github.com/d3-transition.v3.min.js docs/public/d3-transition.v3.min.js +cp -v ./build/d3.github.com/d3-voronoi.v0.1.js docs/public/d3-voronoi.v0.1.js +cp -v ./build/d3.github.com/d3-voronoi.v0.1.min.js docs/public/d3-voronoi.v0.1.min.js +cp -v ./build/d3.github.com/d3-voronoi.v0.2.js docs/public/d3-voronoi.v0.2.js +cp -v ./build/d3.github.com/d3-voronoi.v0.2.min.js docs/public/d3-voronoi.v0.2.min.js +cp -v ./build/d3.github.com/d3-voronoi.v0.3.js docs/public/d3-voronoi.v0.3.js +cp -v ./build/d3.github.com/d3-voronoi.v0.3.min.js docs/public/d3-voronoi.v0.3.min.js +cp -v ./build/d3.github.com/d3-voronoi.v0.4.js docs/public/d3-voronoi.v0.4.js +cp -v ./build/d3.github.com/d3-voronoi.v0.4.min.js docs/public/d3-voronoi.v0.4.min.js +cp -v ./build/d3.github.com/d3-voronoi.v1.js docs/public/d3-voronoi.v1.js +cp -v ./build/d3.github.com/d3-voronoi.v1.min.js docs/public/d3-voronoi.v1.min.js +cp -v ./build/d3.github.com/d3-zoom.v0.0.js docs/public/d3-zoom.v0.0.js +cp -v ./build/d3.github.com/d3-zoom.v0.0.min.js docs/public/d3-zoom.v0.0.min.js +cp -v ./build/d3.github.com/d3-zoom.v0.1.js docs/public/d3-zoom.v0.1.js +cp -v ./build/d3.github.com/d3-zoom.v0.1.min.js docs/public/d3-zoom.v0.1.min.js +cp -v ./build/d3.github.com/d3-zoom.v0.2.js docs/public/d3-zoom.v0.2.js +cp -v ./build/d3.github.com/d3-zoom.v0.2.min.js docs/public/d3-zoom.v0.2.min.js +cp -v ./build/d3.github.com/d3-zoom.v0.3.js docs/public/d3-zoom.v0.3.js +cp -v ./build/d3.github.com/d3-zoom.v0.3.min.js docs/public/d3-zoom.v0.3.min.js +cp -v ./build/d3.github.com/d3-zoom.v1.js docs/public/d3-zoom.v1.js +cp -v ./build/d3.github.com/d3-zoom.v1.min.js docs/public/d3-zoom.v1.min.js +cp -v ./build/d3.github.com/d3-zoom.v2.js docs/public/d3-zoom.v2.js +cp -v ./build/d3.github.com/d3-zoom.v2.min.js docs/public/d3-zoom.v2.min.js +cp -v ./build/d3.github.com/d3-zoom.v3.js docs/public/d3-zoom.v3.js +cp -v ./build/d3.github.com/d3-zoom.v3.min.js docs/public/d3-zoom.v3.min.js +cp -v ./build/d3.github.com/d3.geo.polyhedron.v0.js docs/public/d3.geo.polyhedron.v0.js +cp -v ./build/d3.github.com/d3.geo.polyhedron.v0.min.js docs/public/d3.geo.polyhedron.v0.min.js +cp -v ./build/d3.github.com/d3.geo.projection.v0.js docs/public/d3.geo.projection.v0.js +cp -v ./build/d3.github.com/d3.geo.projection.v0.min.js docs/public/d3.geo.projection.v0.min.js +cp -v ./build/d3.github.com/d3.geo.tile.v0.js docs/public/d3.geo.tile.v0.js +cp -v ./build/d3.github.com/d3.geo.tile.v0.min.js docs/public/d3.geo.tile.v0.min.js +cp -v ./build/d3.github.com/d3.geodesic.v0.js docs/public/d3.geodesic.v0.js +cp -v ./build/d3.github.com/d3.geodesic.v0.min.js docs/public/d3.geodesic.v0.min.js +cp -v ./build/d3.github.com/d3.geom.contour.v0.js docs/public/d3.geom.contour.v0.js +cp -v ./build/d3.github.com/d3.geom.contour.v0.min.js docs/public/d3.geom.contour.v0.min.js +cp -v ./build/d3.github.com/d3.hexbin.v0.js docs/public/d3.hexbin.v0.js +cp -v ./build/d3.github.com/d3.hexbin.v0.min.js docs/public/d3.hexbin.v0.min.js +cp -v ./build/d3.github.com/d3.hive.v0.js docs/public/d3.hive.v0.js +cp -v ./build/d3.github.com/d3.hive.v0.min.js docs/public/d3.hive.v0.min.js +cp -v ./build/d3.github.com/d3.interpolate-zoom.v0.js docs/public/d3.interpolate-zoom.v0.js +cp -v ./build/d3.github.com/d3.interpolate-zoom.v0.min.js docs/public/d3.interpolate-zoom.v0.min.js +cp -v ./build/d3.github.com/d3.qq.v0.js docs/public/d3.qq.v0.js +cp -v ./build/d3.github.com/d3.qq.v0.min.js docs/public/d3.qq.v0.min.js +cp -v ./build/d3.github.com/d3.rollup.v0.js docs/public/d3.rollup.v0.js +cp -v ./build/d3.github.com/d3.rollup.v0.min.js docs/public/d3.rollup.v0.min.js +cp -v ./build/d3.github.com/d3.superformula.v0.js docs/public/d3.superformula.v0.js +cp -v ./build/d3.github.com/d3.superformula.v0.min.js docs/public/d3.superformula.v0.min.js +cp -v ./build/d3.github.com/d3.v2.js docs/public/d3.v2.js +cp -v ./build/d3.github.com/d3.v2.min.js docs/public/d3.v2.min.js +cp -v ./build/d3.github.com/d3.v3.js docs/public/d3.v3.js +cp -v ./build/d3.github.com/d3.v3.min.js docs/public/d3.v3.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.1.js docs/public/d3.v4.0.0-alpha.1.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.1.min.js docs/public/d3.v4.0.0-alpha.1.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.10.js docs/public/d3.v4.0.0-alpha.10.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.10.min.js docs/public/d3.v4.0.0-alpha.10.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.11.js docs/public/d3.v4.0.0-alpha.11.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.11.min.js docs/public/d3.v4.0.0-alpha.11.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.12.js docs/public/d3.v4.0.0-alpha.12.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.12.min.js docs/public/d3.v4.0.0-alpha.12.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.13.js docs/public/d3.v4.0.0-alpha.13.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.13.min.js docs/public/d3.v4.0.0-alpha.13.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.14.js docs/public/d3.v4.0.0-alpha.14.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.14.min.js docs/public/d3.v4.0.0-alpha.14.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.15.js docs/public/d3.v4.0.0-alpha.15.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.15.min.js docs/public/d3.v4.0.0-alpha.15.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.16.js docs/public/d3.v4.0.0-alpha.16.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.16.min.js docs/public/d3.v4.0.0-alpha.16.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.17.js docs/public/d3.v4.0.0-alpha.17.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.17.min.js docs/public/d3.v4.0.0-alpha.17.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.18.js docs/public/d3.v4.0.0-alpha.18.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.18.min.js docs/public/d3.v4.0.0-alpha.18.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.19.js docs/public/d3.v4.0.0-alpha.19.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.19.min.js docs/public/d3.v4.0.0-alpha.19.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.2.js docs/public/d3.v4.0.0-alpha.2.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.2.min.js docs/public/d3.v4.0.0-alpha.2.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.20.js docs/public/d3.v4.0.0-alpha.20.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.20.min.js docs/public/d3.v4.0.0-alpha.20.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.21.js docs/public/d3.v4.0.0-alpha.21.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.21.min.js docs/public/d3.v4.0.0-alpha.21.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.22.js docs/public/d3.v4.0.0-alpha.22.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.22.min.js docs/public/d3.v4.0.0-alpha.22.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.23.js docs/public/d3.v4.0.0-alpha.23.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.23.min.js docs/public/d3.v4.0.0-alpha.23.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.24.js docs/public/d3.v4.0.0-alpha.24.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.24.min.js docs/public/d3.v4.0.0-alpha.24.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.26.js docs/public/d3.v4.0.0-alpha.26.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.26.min.js docs/public/d3.v4.0.0-alpha.26.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.27.js docs/public/d3.v4.0.0-alpha.27.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.27.min.js docs/public/d3.v4.0.0-alpha.27.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.28.js docs/public/d3.v4.0.0-alpha.28.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.28.min.js docs/public/d3.v4.0.0-alpha.28.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.29.js docs/public/d3.v4.0.0-alpha.29.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.29.min.js docs/public/d3.v4.0.0-alpha.29.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.3.js docs/public/d3.v4.0.0-alpha.3.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.3.min.js docs/public/d3.v4.0.0-alpha.3.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.30.js docs/public/d3.v4.0.0-alpha.30.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.30.min.js docs/public/d3.v4.0.0-alpha.30.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.31.js docs/public/d3.v4.0.0-alpha.31.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.31.min.js docs/public/d3.v4.0.0-alpha.31.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.32.js docs/public/d3.v4.0.0-alpha.32.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.32.min.js docs/public/d3.v4.0.0-alpha.32.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.33.js docs/public/d3.v4.0.0-alpha.33.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.33.min.js docs/public/d3.v4.0.0-alpha.33.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.34.js docs/public/d3.v4.0.0-alpha.34.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.34.min.js docs/public/d3.v4.0.0-alpha.34.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.35.js docs/public/d3.v4.0.0-alpha.35.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.35.min.js docs/public/d3.v4.0.0-alpha.35.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.36.js docs/public/d3.v4.0.0-alpha.36.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.36.min.js docs/public/d3.v4.0.0-alpha.36.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.37.js docs/public/d3.v4.0.0-alpha.37.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.37.min.js docs/public/d3.v4.0.0-alpha.37.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.38.js docs/public/d3.v4.0.0-alpha.38.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.38.min.js docs/public/d3.v4.0.0-alpha.38.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.39.js docs/public/d3.v4.0.0-alpha.39.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.39.min.js docs/public/d3.v4.0.0-alpha.39.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.4.js docs/public/d3.v4.0.0-alpha.4.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.4.min.js docs/public/d3.v4.0.0-alpha.4.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.40.js docs/public/d3.v4.0.0-alpha.40.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.40.min.js docs/public/d3.v4.0.0-alpha.40.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.41.js docs/public/d3.v4.0.0-alpha.41.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.41.min.js docs/public/d3.v4.0.0-alpha.41.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.42.js docs/public/d3.v4.0.0-alpha.42.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.42.min.js docs/public/d3.v4.0.0-alpha.42.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.43.js docs/public/d3.v4.0.0-alpha.43.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.43.min.js docs/public/d3.v4.0.0-alpha.43.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.44.js docs/public/d3.v4.0.0-alpha.44.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.44.min.js docs/public/d3.v4.0.0-alpha.44.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.45.js docs/public/d3.v4.0.0-alpha.45.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.45.min.js docs/public/d3.v4.0.0-alpha.45.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.46.js docs/public/d3.v4.0.0-alpha.46.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.46.min.js docs/public/d3.v4.0.0-alpha.46.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.47.js docs/public/d3.v4.0.0-alpha.47.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.47.min.js docs/public/d3.v4.0.0-alpha.47.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.48.js docs/public/d3.v4.0.0-alpha.48.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.48.min.js docs/public/d3.v4.0.0-alpha.48.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.49.js docs/public/d3.v4.0.0-alpha.49.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.49.min.js docs/public/d3.v4.0.0-alpha.49.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.5.js docs/public/d3.v4.0.0-alpha.5.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.5.min.js docs/public/d3.v4.0.0-alpha.5.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.50.js docs/public/d3.v4.0.0-alpha.50.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.50.min.js docs/public/d3.v4.0.0-alpha.50.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.6.js docs/public/d3.v4.0.0-alpha.6.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.6.min.js docs/public/d3.v4.0.0-alpha.6.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.7.js docs/public/d3.v4.0.0-alpha.7.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.7.min.js docs/public/d3.v4.0.0-alpha.7.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.8.js docs/public/d3.v4.0.0-alpha.8.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.8.min.js docs/public/d3.v4.0.0-alpha.8.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.9.js docs/public/d3.v4.0.0-alpha.9.js +cp -v ./build/d3.github.com/d3.v4.0.0-alpha.9.min.js docs/public/d3.v4.0.0-alpha.9.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-rc.1.js docs/public/d3.v4.0.0-rc.1.js +cp -v ./build/d3.github.com/d3.v4.0.0-rc.1.min.js docs/public/d3.v4.0.0-rc.1.min.js +cp -v ./build/d3.github.com/d3.v4.0.0-rc.2.js docs/public/d3.v4.0.0-rc.2.js +cp -v ./build/d3.github.com/d3.v4.0.0-rc.2.min.js docs/public/d3.v4.0.0-rc.2.min.js +cp -v ./build/d3.github.com/d3.v4.js docs/public/d3.v4.js +cp -v ./build/d3.github.com/d3.v4.min.js docs/public/d3.v4.min.js +cp -v ./build/d3.github.com/d3.v5.js docs/public/d3.v5.js +cp -v ./build/d3.github.com/d3.v5.min.js docs/public/d3.v5.min.js +cp -v ./build/d3.github.com/d3.v6.js docs/public/d3.v6.js +cp -v ./build/d3.github.com/d3.v6.min.js docs/public/d3.v6.min.js +cp -v ./build/d3.github.com/highlight.v0.min.js docs/public/highlight.v0.min.js +cp -v ./build/d3.github.com/highlight.v9.min.js docs/public/highlight.v9.min.js +cp -v ./build/d3.github.com/queue.v1.js docs/public/queue.v1.js +cp -v ./build/d3.github.com/queue.v1.min.js docs/public/queue.v1.min.js +cp -v ./build/d3.github.com/topojson.v0.js docs/public/topojson.v0.js +cp -v ./build/d3.github.com/topojson.v0.min.js docs/public/topojson.v0.min.js +cp -v ./build/d3.github.com/topojson.v1.js docs/public/topojson.v1.js +cp -v ./build/d3.github.com/topojson.v1.min.js docs/public/topojson.v1.min.js +cp -v ./build/d3.github.com/topojson.v2.js docs/public/topojson.v2.js +cp -v ./build/d3.github.com/topojson.v2.min.js docs/public/topojson.v2.min.js +cp -v ./build/d3.github.com/topojson.v3.js docs/public/topojson.v3.js +cp -v ./build/d3.github.com/topojson.v3.min.js docs/public/topojson.v3.min.js +cp -v ./build/d3.github.com/us-10m.v0.json docs/public/us-10m.v0.json +cp -v ./build/d3.github.com/us-10m.v1.json docs/public/us-10m.v1.json +cp -v ./build/d3.github.com/us-10m.v2.json docs/public/us-10m.v2.json +cp -v ./build/d3.github.com/world-110m.v1.json docs/public/world-110m.v1.json +cp -v ./build/d3.github.com/world-110m.v1.tsv docs/public/world-110m.v1.tsv +cp -v ./build/d3.github.com/world-50m.v1.json docs/public/world-50m.v1.json +cp -v ./build/d3.github.com/world-50m.v1.tsv docs/public/world-50m.v1.tsv + +cp -v ./dist/d3.js docs/public/d3.v7.js +cp -v ./dist/d3.min.js docs/public/d3.v7.min.js + +cp -v ./node_modules/d3-array/dist/d3-array.js docs/public/d3-array.v3.js +cp -v ./node_modules/d3-array/dist/d3-array.min.js docs/public/d3-array.v3.min.js +cp -v ./node_modules/d3-axis/dist/d3-axis.js docs/public/d3-axis.v3.js +cp -v ./node_modules/d3-axis/dist/d3-axis.min.js docs/public/d3-axis.v3.min.js +cp -v ./node_modules/d3-brush/dist/d3-brush.js docs/public/d3-brush.v3.js +cp -v ./node_modules/d3-brush/dist/d3-brush.min.js docs/public/d3-brush.v3.min.js +cp -v ./node_modules/d3-chord/dist/d3-chord.js docs/public/d3-chord.v3.js +cp -v ./node_modules/d3-chord/dist/d3-chord.min.js docs/public/d3-chord.v3.min.js +cp -v ./node_modules/d3-color/dist/d3-color.js docs/public/d3-color.v3.js +cp -v ./node_modules/d3-color/dist/d3-color.min.js docs/public/d3-color.v3.min.js +cp -v ./node_modules/d3-contour/dist/d3-contour.js docs/public/d3-contour.v4.js +cp -v ./node_modules/d3-contour/dist/d3-contour.min.js docs/public/d3-contour.v4.min.js +cp -v ./node_modules/d3-delaunay/dist/d3-delaunay.js docs/public/d3-delaunay.v6.js +cp -v ./node_modules/d3-delaunay/dist/d3-delaunay.min.js docs/public/d3-delaunay.v6.min.js +cp -v ./node_modules/d3-dispatch/dist/d3-dispatch.js docs/public/d3-dispatch.v3.js +cp -v ./node_modules/d3-dispatch/dist/d3-dispatch.min.js docs/public/d3-dispatch.v3.min.js +cp -v ./node_modules/d3-drag/dist/d3-drag.js docs/public/d3-drag.v3.js +cp -v ./node_modules/d3-drag/dist/d3-drag.min.js docs/public/d3-drag.v3.min.js +cp -v ./node_modules/d3-dsv/dist/d3-dsv.js docs/public/d3-dsv.v3.js +cp -v ./node_modules/d3-dsv/dist/d3-dsv.min.js docs/public/d3-dsv.v3.min.js +cp -v ./node_modules/d3-ease/dist/d3-ease.js docs/public/d3-ease.v3.js +cp -v ./node_modules/d3-ease/dist/d3-ease.min.js docs/public/d3-ease.v3.min.js +cp -v ./node_modules/d3-fetch/dist/d3-fetch.js docs/public/d3-fetch.v3.js +cp -v ./node_modules/d3-fetch/dist/d3-fetch.min.js docs/public/d3-fetch.v3.min.js +cp -v ./node_modules/d3-force/dist/d3-force.js docs/public/d3-force.v3.js +cp -v ./node_modules/d3-force/dist/d3-force.min.js docs/public/d3-force.v3.min.js +cp -v ./node_modules/d3-format/dist/d3-format.js docs/public/d3-format.v3.js +cp -v ./node_modules/d3-format/dist/d3-format.min.js docs/public/d3-format.v3.min.js +cp -v ./node_modules/d3-geo/dist/d3-geo.js docs/public/d3-geo.v3.js +cp -v ./node_modules/d3-geo/dist/d3-geo.min.js docs/public/d3-geo.v3.min.js +cp -v ./node_modules/d3-hierarchy/dist/d3-hierarchy.js docs/public/d3-hierarchy.v3.js +cp -v ./node_modules/d3-hierarchy/dist/d3-hierarchy.min.js docs/public/d3-hierarchy.v3.min.js +cp -v ./node_modules/d3-interpolate/dist/d3-interpolate.js docs/public/d3-interpolate.v3.js +cp -v ./node_modules/d3-interpolate/dist/d3-interpolate.min.js docs/public/d3-interpolate.v3.min.js +cp -v ./node_modules/d3-path/dist/d3-path.js docs/public/d3-path.v3.js +cp -v ./node_modules/d3-path/dist/d3-path.min.js docs/public/d3-path.v3.min.js +cp -v ./node_modules/d3-polygon/dist/d3-polygon.js docs/public/d3-polygon.v3.js +cp -v ./node_modules/d3-polygon/dist/d3-polygon.min.js docs/public/d3-polygon.v3.min.js +cp -v ./node_modules/d3-quadtree/dist/d3-quadtree.js docs/public/d3-quadtree.v3.js +cp -v ./node_modules/d3-quadtree/dist/d3-quadtree.min.js docs/public/d3-quadtree.v3.min.js +cp -v ./node_modules/d3-random/dist/d3-random.js docs/public/d3-random.v3.js +cp -v ./node_modules/d3-random/dist/d3-random.min.js docs/public/d3-random.v3.min.js +cp -v ./node_modules/d3-scale-chromatic/dist/d3-scale-chromatic.js docs/public/d3-scale-chromatic.v3.js +cp -v ./node_modules/d3-scale-chromatic/dist/d3-scale-chromatic.min.js docs/public/d3-scale-chromatic.v3.min.js +cp -v ./node_modules/d3-scale/dist/d3-scale.js docs/public/d3-scale.v4.js +cp -v ./node_modules/d3-scale/dist/d3-scale.min.js docs/public/d3-scale.v4.min.js +cp -v ./node_modules/d3-selection/dist/d3-selection.js docs/public/d3-selection.v3.js +cp -v ./node_modules/d3-selection/dist/d3-selection.min.js docs/public/d3-selection.v3.min.js +cp -v ./node_modules/d3-shape/dist/d3-shape.js docs/public/d3-shape.v3.js +cp -v ./node_modules/d3-shape/dist/d3-shape.min.js docs/public/d3-shape.v3.min.js +cp -v ./node_modules/d3-time-format/dist/d3-time-format.js docs/public/d3-time-format.v4.js +cp -v ./node_modules/d3-time-format/dist/d3-time-format.min.js docs/public/d3-time-format.v4.min.js +cp -v ./node_modules/d3-time/dist/d3-time.js docs/public/d3-time.v3.js +cp -v ./node_modules/d3-time/dist/d3-time.min.js docs/public/d3-time.v3.min.js +cp -v ./node_modules/d3-timer/dist/d3-timer.js docs/public/d3-timer.v3.js +cp -v ./node_modules/d3-timer/dist/d3-timer.min.js docs/public/d3-timer.v3.min.js +cp -v ./node_modules/d3-transition/dist/d3-transition.js docs/public/d3-transition.v3.js +cp -v ./node_modules/d3-transition/dist/d3-transition.min.js docs/public/d3-transition.v3.min.js +cp -v ./node_modules/d3-zoom/dist/d3-zoom.js docs/public/d3-zoom.v3.js +cp -v ./node_modules/d3-zoom/dist/d3-zoom.min.js docs/public/d3-zoom.v3.min.js From 4a64c1ccb08fee2678bd693a7773bad8fedc2342 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 22:24:24 -0700 Subject: [PATCH 168/311] goodbye georgy --- docs/d3-delaunay.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/docs/d3-delaunay.md b/docs/d3-delaunay.md index 2f87b7a1b3bc1d..cefa2f2831fb5f 100644 --- a/docs/d3-delaunay.md +++ b/docs/d3-delaunay.md @@ -1,7 +1,29 @@ + + # d3-delaunay -

-

Georgy “The Voronator” Voronoy

+ This is a fast library for computing the [Voronoi diagram](https://en.wikipedia.org/wiki/Voronoi_diagram) of a set of two-dimensional points. It is based on [Delaunator](https://github.com/mapbox/delaunator), a fast library for computing the [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation) using [sweep algorithms](https://github.com/mapbox/delaunator/blob/main/README.md#papers). The Voronoi diagram is constructed by connecting the circumcenters of adjacent triangles in the Delaunay triangulation. From 1a738d7cf4992af40e3c2c0bd3cb001a02a6d1fe Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 7 Jun 2023 22:50:01 -0700 Subject: [PATCH 169/311] better delaunay color --- docs/d3-delaunay.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/d3-delaunay.md b/docs/d3-delaunay.md index cefa2f2831fb5f..343934ed4b6d30 100644 --- a/docs/d3-delaunay.md +++ b/docs/d3-delaunay.md @@ -19,7 +19,7 @@ const points = Array.from({length: 1000}, () => [random(), random()]); x: {domain: [-4, 3.5]}, y: {domain: [-3, 3.5]}, marks: [ - Plot.delaunayMesh(points, {stroke: "#ddd", strokeOpacity: 1}), + Plot.delaunayMesh(points, {stroke: "currentColor", strokeOpacity: 0.3}), Plot.voronoiMesh(points, {stroke: "var(--vp-c-brand)", strokeOpacity: 1}), Plot.dot(points, {r: 2, fill: "currentColor"}), ] From 3459194cd4542a2f2418337832f4f0845ea8c4ff Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 8 Jun 2023 12:46:06 -0700 Subject: [PATCH 170/311] examples grid --- docs/.vitepress/theme/CustomLayout.vue | 89 ++++++++++++++++++++++++++ docs/.vitepress/theme/gallery.data.js | 20 ++++++ docs/.vitepress/theme/index.ts | 2 + package.json | 5 +- yarn.lock | 31 ++++++++- 5 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 docs/.vitepress/theme/CustomLayout.vue create mode 100644 docs/.vitepress/theme/gallery.data.js diff --git a/docs/.vitepress/theme/CustomLayout.vue b/docs/.vitepress/theme/CustomLayout.vue new file mode 100644 index 00000000000000..493a4a97005a95 --- /dev/null +++ b/docs/.vitepress/theme/CustomLayout.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/docs/.vitepress/theme/gallery.data.js b/docs/.vitepress/theme/gallery.data.js new file mode 100644 index 00000000000000..cb656edcb4ea91 --- /dev/null +++ b/docs/.vitepress/theme/gallery.data.js @@ -0,0 +1,20 @@ +import {Runtime} from "@observablehq/runtime"; +import * as d3 from "d3"; + +export default { + async load() { + const runtime = new Runtime(); + const module = runtime.module((await import("https://api.observablehq.com/@d3/gallery.js?v=4")).default); + const data = []; + module.define("md", () => String.raw); + module.redefine("previews", () => (chunk) => data.push(...chunk)); + const values = []; + for (const output of module._resolve("previews")._outputs) { + if (output._name) { + values.push(module.value(output._name)); + } + } + await Promise.all(values); + return d3.shuffler(d3.randomLcg(Math.floor(Date.now() / 864e5)))(data).slice(0, 60); + } +}; diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index eef6982c52b4cd..17f7aa5203198e 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -1,10 +1,12 @@ import DefaultTheme from "vitepress/theme-without-fonts"; import * as d3 from "d3"; import {useData} from "vitepress"; +import CustomLayout from "./CustomLayout.vue"; import "./custom.css"; export default { extends: DefaultTheme, + Layout: CustomLayout, enhanceApp({app, router}) { globalThis.d3 = d3; // for console testing! Object.defineProperty(app.config.globalProperties, "$dark", {get: () => useData().isDark.value}); diff --git a/package.json b/package.json index 760355596c3d19..dc1bac046bb551 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ }, "devDependencies": { "@observablehq/plot": "^0.6.7", + "@observablehq/runtime": "^5.7.3", "@rollup/plugin-json": "6", "@rollup/plugin-node-resolve": "15", "@rollup/plugin-terser": "^0.4.0", @@ -80,8 +81,8 @@ "test": "mocha 'test/**/*-test.js' && eslint src test", "prepublishOnly": "rm -rf dist && rollup -c", "postpublish": "git push && git push --tags", - "docs:dev": "vitepress dev docs", - "docs:build": "./prebuild.sh && vitepress build docs", + "docs:dev": "node --experimental-network-imports node_modules/vitepress/dist/node/cli.js dev docs", + "docs:build": "./prebuild.sh && node --experimental-network-imports node_modules/vitepress/dist/node/cli.js build docs", "docs:preview": "vitepress preview docs" }, "engines": { diff --git a/yarn.lock b/yarn.lock index f63c14f07a0c85..5053c7a1bb39f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -380,6 +380,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@observablehq/inspector@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@observablehq/inspector/-/inspector-5.0.0.tgz#7dec08d4fa20dfb79977ce62f7cc4a814b44e595" + integrity sha512-Vvg/TQdsZTUaeYbH0IKxYEz37FbRO6kdowoz2PrHLQif54NC1CjEihEjg+ZMSBn587GQxTFABu0CGkFZgtR1UQ== + dependencies: + isoformat "^0.2.0" + "@observablehq/plot@^0.6.7": version "0.6.8" resolved "https://registry.yarnpkg.com/@observablehq/plot/-/plot-0.6.8.tgz#cb4a1f744a087e00119e68bb9a84d24c12294cde" @@ -389,6 +396,23 @@ interval-tree-1d "^1.0.0" isoformat "^0.2.0" +"@observablehq/runtime@^5.7.3": + version "5.7.3" + resolved "https://registry.yarnpkg.com/@observablehq/runtime/-/runtime-5.7.3.tgz#7fe7ecf5acfe6bfcca7390e4b6c108dce661dcda" + integrity sha512-9EDcW+zMBSgH8Sep9UdeMA3AQHWVYvoutJSlLyXO84gpzsCDbyE3WUmMZ9TxPI/sE9YBj6tFHPIOul5cZxDXwg== + dependencies: + "@observablehq/inspector" "^5.0.0" + "@observablehq/stdlib" "^5.0.0" + +"@observablehq/stdlib@^5.0.0": + version "5.7.3" + resolved "https://registry.yarnpkg.com/@observablehq/stdlib/-/stdlib-5.7.3.tgz#660878d262ae5aa068533e4615ceb2eca4a7ec4f" + integrity sha512-xL6KrjUfuWZsZtvnKWJ3Fg0SXyFwubQd1K/2SfU8QvuYxOyVPrGEdLekhaCjI7NiD5Wd9ZnDB7ZMLtI11n07ow== + dependencies: + d3-array "^3.2.0" + d3-dsv "^3.0.1" + d3-require "^1.3.0" + "@rollup/plugin-json@6": version "6.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" @@ -849,7 +873,7 @@ d3-delaunay@6: d3-dispatch "1 - 3" d3-selection "3" -"d3-dsv@1 - 3", d3-dsv@3: +"d3-dsv@1 - 3", d3-dsv@3, d3-dsv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== @@ -923,6 +947,11 @@ d3-random@3: resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== +d3-require@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/d3-require/-/d3-require-1.3.0.tgz#2b97f5e2ebcb64ac0c63c11f30056aea1c74f0ec" + integrity sha512-XaNc2azaAwXhGjmCMtxlD+AowpMfLimVsAoTMpqrvb8CWoA4QqyV12mc4Ue6KSoDvfuS831tsumfhDYxGd4FGA== + d3-scale-chromatic@3: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" From 117e0b9e0d99a1c1f608a1d06fef34df708f14af Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 8 Jun 2023 15:15:35 -0700 Subject: [PATCH 171/311] perspective! --- docs/.vitepress/theme/CustomLayout.vue | 49 ++++++++++++++++++++------ docs/.vitepress/theme/gallery.data.js | 2 +- docs/index.md | 4 +++ 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/docs/.vitepress/theme/CustomLayout.vue b/docs/.vitepress/theme/CustomLayout.vue index 493a4a97005a95..3b7c44d2b1754b 100644 --- a/docs/.vitepress/theme/CustomLayout.vue +++ b/docs/.vitepress/theme/CustomLayout.vue @@ -2,25 +2,37 @@ import * as d3 from "d3"; import DefaultTheme from "vitepress/theme-without-fonts"; -import {ref, onMounted, onUnmounted} from "vue"; +import {ref, shallowRef, onMounted, onUnmounted} from "vue"; import {data} from "./gallery.data.js"; const {Layout} = DefaultTheme; let observer; + +const n = 60; // maximum number of examples to show +const slice = d3.shuffler(d3.randomLcg(d3.utcDay()))(data.slice()).slice(0, n); +const sample = shallowRef([]) const container = ref(); -const offset = ref(0); +const x = ref(0); +const width = ref(640); + +function onpointermove(event) { + x.value = event.clientX; +} onMounted(() => { observer = new ResizeObserver(() => { - const n = getComputedStyle(container.value).gridTemplateColumns.split(" ").length; - offset.value = data.length % n; + const m = getComputedStyle(container.value).gridTemplateColumns.split(" ").length; + sample.value = slice.slice(0, Math.min(Math.min(6, n / m) * m, n - (n % m))); + width.value = document.body.clientWidth; }); observer.observe(document.body); + addEventListener("pointermove", onpointermove); }); onUnmounted(() => { observer.disconnect(); + removeEventListener("pointermove", onpointermove); }); @@ -28,10 +40,12 @@ onUnmounted(() => {