这是indexloc提供的服务,不要输入任何密码
Skip to content

Releases: vega/vega

v5.13.0

02 Jun 09:54
62565bb

Choose a tag to compare

Notable Changes

  • Improved Streaming Performance.

    For performance, Vega caches a lot of internal data structures, including calculated tuples, scenegraph items, and SVG DOM nodes. Previously, nested scopes (such as those created for facetted data) that result in vega-runtime subcontexts were never cleaned. If no external View API calls are made, this is fine, and actually improves performance for interaction-driven dynamic filtering. However, when providing streaming data to Vega through the View API, uncleaned caches and subcontexts can result in substantial memory leaks that also eventually degrade performance.

    This version adds mechanisms for clearing caches and detaching subflows to support streaming data within nested specifications. When input data is removed via a View API call or via signal-valued URL, Vega will now by default trigger garbage collection to reclaim resources. This behavior can be disabled by calling clean(false) on a constructed ChangeSet passed to the View API.

  • Improved Cursor Performance.

    Previously Vega updated the cursor style on the HTML document body. This persists cursor settings even during interactions (such as drags) that may leave the Vega View component. However, it also can result in large performance penalties in Chrome, which re-evaluates CSS styles in response. This version changes the default behavior to set the cursor locally on the Vega View component. If a global cursor is desired, the boolean config property events.globalCursor can be set true or the View method globalCursor can be invoked to change the setting at runtime.

  • Optional Expression Interpreter.

    This release adds interpreter support for Vega expressions that is Content Security Policy (CSP) compliant. By default, the Vega parser performs code generation for parsed Vega expressions, and the Vega runtime uses the Function constructor to create JavaScript functions from the generated code. Although the Vega parser includes its own security checks, the runtime generation of functions from source code nevertheless violates security policies designed to prevent cross-site scripting.

    This release provides an interpreter plug-in (the new vega-interpreter package) that evaluates expressions by traversing an Abstract Syntax Tree (AST) for an expression and performing each operation in turn. Use of the interpreter enables compliance with CSP, but can incur a performance penalty. In tests of initial parse and dataflow evaluation times, the interpreter is on average ~10% slower. Interactive updates may incur higher penalties, as they are often more expression-heavy and amortize the one-time cost of Function constructor parsing.

Changelog

Changes from v5.12.3:

vega

  • Update stream.html and stream-nested.html performance test pages.

vega-dataflow

  • Add detach method to Operator to remove adjacent edges (listeners) from the dataflow graph.
  • Add clean setter to ChangeSet, set to true by default if any tuples are removed.
  • Add clean getter/setter to Pulse, propagate value to forked pulses if they share a data source.
  • Update logging calls during Dataflow evaluation.

vega-encode

  • Update DataJoin transform to clean internal map when pulse.clean() is true.
  • Update Scale to include domainMid as an extrema if it exceeds the domain min or max. (#2656)

vega-functions

  • Fix scale function to not special case undefined input. This ensures identical semantics with the internal _scale helper function used by code-generated encoders.

vega-geo

  • Update d3-geo dependency.

vega-interpreter

  • Add new vega-interpreter package.

vega-projection

  • Update d3-geo dependency.

vega-projection-extended

  • Update vega-projection dependency.

vega-runtime

  • Add runtime detach method to remove subcontexts. Export as detachSubflow on the head operator of a generated subflow.
  • Add pluggable expression evaluators.

vega-statistics

  • Fix numbers utility to exclude empty string.

vega-transforms

  • Update Aggregate transform to clean internal map when pulse.clean() is true.
  • Update Facet, PreFacet, and Subflow transforms to prune subflows in response to pulse.clean().
  • Update Load transform to set pulse.clean(true) when removing loaded data.
  • Fix Bin and Extent to treat empty string as a missing value. (thanks @domoritz!)
  • Fix aggregate ops to treat empty string as a missing value.

vega-typings

  • Add eventConfig.globalCursor to config typings.
  • Add dataflow logger to typings.
  • Add parse options to typings.

vega-util

  • Refactor code for fastmap and visitArray utilities.

vega-view

  • Add View constructor option expr to pass in a custom expression evaluator.
  • Add globalCursor method and event configuration.
  • Update to make the Vega view container the default cursor target.

v5.12.3

23 May 10:54

Choose a tag to compare

Notable Changes

The previous Vega v5.12.0 release introduced changes to how SVG was generated, including the addition of an internal stylesheet. However, this leads to integration issues with downstream tools (including at least one popular SVG optimizer) that do not support stylesheet parsing. In addition, local performance tests indicate faster rendering in Chrome when using presentation attributes instead of CSS styling. This version (v5.12.3) now changes the SVG output to favor presentation attributes (fill="blue") over CSS style (style="fill: blue;").

CSS styles have been removed in all but one case: the use of image-rendering for non-smoothed images, where browser differences require multiple style definitions to appease both Chrome and Firefox, something we can't express with presentation attributes alone. If and when Firefox properly supports image-rendering: pixelated we can consider dropping this last use of CSS.

Note that external stylesheets can still be used to style Vega SVG content, and may now have higher specificity due to the use of attributes.

Changelog

Changes from v5.12.2:

monorepo

  • Update eslint config to flag trailing commas.

vega

  • Add initialization timing to test spec viewer page.
  • Remove dangling commas.
  • Update dev dependencies.

vega-cli

  • Update SVG test cases.

vega-format

  • Remove dangling commas.

vega-geo

  • Remove dangling commas.

vega-hierarchy

  • Remove dangling commas.

vega-parser

  • Fix trailing function argument commas in axis utils. (#2645, thanks @armanozak!)
  • Remove dangling commas.

vega-projections-extended

  • Update dev dependencies.

vega-scenegraph

  • Favor SVG presentation attributes over CSS style. (#2640)
  • Fix clipped group picking for canvas. (#2600)
  • Remove dangling commas, other code clean-up.

vega-schema

  • Remove dangling commas.

vega-time

  • Remove dangling commas.

vega-transforms

  • Remove dangling commas.

v5.12.2

22 May 07:01

Choose a tag to compare

Changes from v5.12.1:

vega-scenegraph

  • Add canvas handler event listeners necessary for state management. Fixes a regression introduced in v5.12.1. (#2641)

vega-typings

  • Fix typings for locale specification and View API. (thanks @haldenl!)

v5.12.1

19 May 10:23

Choose a tag to compare

Changes from v5.12.0:

monorepo

  • Switch from Travis CI to GitHub Actions. (thanks @domoritz!)

vega-cli

  • Add tests for vega-cli.

vega-parser

  • Update code style for config constants.

vega-scenegraph

  • Add class to svg root group, localize SVG stylesheet to that class. (#2618)
  • Lazily register CanvasHandler event listeners. By avoiding unneeded listeners, this change avoids a number of passive listener violation warnings. (#2621)

vega-transforms

  • Fix regression of string to number conversion in aggregate sum op. (thanks @haldenl!)

vega-typings

  • Update View typings.
  • Fix missing color schemes in typings. (thanks @domortiz!)

vega-view

  • Code clean up.

v5.12.0

15 May 22:52

Choose a tag to compare

Notable Additions

  • View-specific locale management for number and date formatting. The View constructor accepts a locale option, and Vega specs support a config.locale property. Locale objects should have number and/or time properties that map to valid d3-format or d3-time-format locale definitions.
  • View toCanvas now accepts an externalContext option to draw into a separately managed canvas instance. For example, one could draw multiple Vega views into the same node-canvas instance for server-side PDF document generation.
  • Initial support for signal-valued axis orient properties. This addition allows the position of an axis (e.g., left versus right) to be dynamically updated at runtime. The feature should be considered experimental; subtle bugs may still arise.
  • Internal refactoring to support content security policy (CSP) in the future. The Vega parser accepts an ast option flag to include generated abstract syntax trees for expressions in the parser output. All Function constructor use for generated code is now consolidated into a single file in the vega-runtime package and could be overridden if an expression AST interpreter is implemented.
  • Bug fixes! See below...

Changelog

Changes from v5.11.1:

vega

  • Update bar-time test specification to test locale config usage.
  • Update budget-forecasts test specification.
  • Update to use refactored runtime context.

vega-cli

  • Update to use locale view constructor option.

vega-dataflow

  • Add locale property to set a dataflow-specific locale for number and date formatting.

vega-encode

  • Update to use centralized locale management. Transforms now access the dataflow-specific locale via the input pulse.

vega-expression

  • Fix handling of this global variable.

vega-format

  • New package for format methods that centralizes locale management.

vega-functions

  • Add centralized locale management. Format functions now access the dataflow-specific locale via the runtime context object, available to expression functions via the this context.
  • Add and export expression parser, support AST export option.
  • Add internal scale functions for use by encoders.
  • Fix scale dependencies: non-literal scale references should depend on all scales.

vega-geo

  • Fix contour, density2D size setter input checks.

vega-loader

  • Add UTC parser parameter to read method.
  • Use the default locale when custom time format parsers are not provided.

vega-parser

  • Internal breaking change: Output runtime specification has changed the encoding of parsed expression functions. Generated code is now wrapped in an object and stored in the code property.
  • Internal breaking change: Generated expression code no longer includes method variable definitions or additional logic. These have been moved to vega-runtime.
  • Add signal support for axis translate property. (Thanks @haldenl!)
  • Add experimental signal support for axis orient property. (Thanks @haldenl!)
  • Add parsing of locale config, include in runtime spec output.
  • Add options argument to parse.
  • Add boolean ast parse option to enable AST output from expression parser.
  • Refactor to use expression parser for synthesized encoder logic.
  • Fix circular dependencies.

vega-runtime

  • Internal breaking change: The runtime now assumes the updated vega-parser output format. All code generation beyond standard expression parser output has now been consolidated into the runtime parsing process.
  • Propagate locale config to runtime context object.
  • Refactor code, add optimized code generation for accessors and comparators.
  • Refactor all non-standard code generation to the runtime context.
  • Fix circular dependencies.

vega-scale

  • Internal breaking change: Update to use centralized locale management. Formatting methods now require a locale parameter as the first argument.
  • Fix valid tick method to sort ticks based on scale range values. (#2579)

vega-scenegraph

  • Add externalContext CanvasRenderer option. (Thanks @pixelspark!)
  • Add resetSVGDefIds to reset gradient and clip id counter. (Thanks @kanitw!)
  • Add SVG style block, set default fill and miter limit values. (#2498)
  • Update SVG test outputs.
  • Update to use centralized locale management. The ARIA caption generators access the dataflow-specific locale via the runtime context object.
  • Update reference to axis orient.
  • Fix SVG radial gradient pattern fill to use style, not fill attribute.
  • Fix ampersand escape in SVG attributes. (#2608)
  • Fix CSS fill inherit for tspan.

vega-schema

  • Add axis translate signal support to schema.
  • Add signal-valued axis orient to schema.

vega-time

  • Internal breaking change: Remove formatting methods, which are now part of vega-format.

vega-transforms

  • Update aggregation ops to no longer use the Function constructor.
  • Update dependencies.

vega-typings

  • Add externalCanvas render option to typings.
  • Add axis translate signal support to typings.
  • Add signal-valued axis orient to typings.

vega-util

  • Update field, key, and compare methods to no longer use the Function constructor.
  • Add optional arguments to inject optimized code generators for accessors and comparators.

vega-view

  • Add locale input options and config handling.
  • Update to use refactored runtime context.

vega-view-transforms

  • Add signal support for axis translate property.
  • Update reference to axis orient.
  • Fix ViewLayout reflow to ensure group bounds are updated. (#2568)
  • Fix grid layout calculations with empty grid input. (#2541)

vega-wordcloud

  • Update dependencies.

v5.11.1

27 Apr 14:58

Choose a tag to compare

Changes from v5.11.0:

monorepo

  • Update dev dependencies.

vega-hierarchy

  • Update tests for tape 5.0.

vega-scenegraph

  • Use single quotes for generated aria-label captions. (Thanks @sprmn!)
  • Escape double quotes in SVG attributes, add test case.

vega-statistics

  • Update tests for tape 5.0.

vega-view-transforms

  • Update tests for tape 5.0.

v5.11.0

27 Apr 09:11

Choose a tag to compare

Notable Additions

  • Preliminary support for ARIA accessibility attributes in SVG output. Mark and guide definitions now include automatically-generated roles and labels, which can be customized using description and aria properties. Individual mark items do not include ARIA attributes by default (which helps prevent bloat of both the scenegraph and output SVG), but these can be added using description and aria encoding channels.
  • Improve generated HTML form elements for signal bindings. Deployments that use custom CSS for styling bound elements may wish to make minor adjustments.
  • dayofyear time unit support for the timeunit transform.
  • dayofyear, week, utcdayofyear, and utcweek expression functions.
  • Axis domainCap, gridCap, and tickCap properties.

Changelog

Changes from v5.10.1:

monorepo

  • Add ARIA attribute generation documentation.
  • Update eslint setup, consolidate configuration.
  • Update dev dependencies.

vega

  • Add calendar test specification.
  • Add overview-detail-bins test spec to test suite.
  • Update crossfilter test scenes to include description property output.

vega-encode

  • Move internal tick, label utilities to vega-scale.
  • Fix valid tick check calculation. (#2531)

vega-functions

  • Add dayofyear, week, utcdayofyear, utcweek expression functions.

vega-geo

  • Fix density utility size input checking bug.

vega-parser

  • Add ARIA attribute generation for marks and guides via aria and description properties.
  • Add backing scale names to axis, legend datum objects.
  • Add zindex support for guide config.
  • Add axis domainCap, gridCap, and tickCap properties. (Thanks @kanitw!)

vega-scale

  • Add tick, label guide utilities from vega-encode.
  • Add domainCaption utility.
  • Fix overflow with large domain and small tickMinStep (#2550, thanks @rwoollen!)

vega-scenegraph

  • Add ARIA attribute generation to SVG renderers:
    • Parent <g> tags for mark items include automatic role and aria-roleDescription attributes.
    • Parent <g> tags for axes and legends include automatic aria-label captions.
    • Attribute generation for mark and guide definitions can be customized using the aria and description properties. If aria is false, the content is hidden from the accessibility tree by setting aria-hidden SVG attribute. The description property determines the aria-label SVG attribute.
    • Individual mark items do not include ARIA attributes by default, but these can be added using the encoding channels aria and description. If a description is provided and aria !== false, then Vega will generate accompanying role and aria-roledescription attributes for a mark item.
  • Provide experimental ariaRole and ariaRoleDescription encoding channels for individual marks, which override the default role and aria-roledescription attributes generated by Vega. However, note that these are experimental features and so may change at a later date.

vega-schema

  • Add ARIA accessibility properties to mark, guide, and encode schemas.
  • Add axis domainCap, gridCap, and tickCap properties.

vega-time

  • Add dayofyear time unit support and corresponding tests.
  • Add dayofyear, week, utcdayofyear, utcweek utility functions.
  • Add export for TIME_UNITS array of valid time unit strings.

vega-transforms

  • Update TimeUnit transform parameter schema to enforce valid time unit strings.

vega-typings

  • Add ARIA accessibility properties to mark, guide, and encode typings.
  • Add dayofyear option to TimeUnit transform typings.
  • Add zindex support for guide config.
  • Add axis domainCap, gridCap, and tickCap properties.

vega-view

  • Improved semantic HTML for generated signal bindings to form input elements.

v5.10.1

30 Mar 13:47

Choose a tag to compare

Changes from v5.10.0:

vega-encode

  • Update default guide label format to support multi-line arrays. (#2456)

vega-loader

  • Use startsWith rather than indexOf for string prefix checks.

vega-parser

  • Use startsWith rather than indexOf for string prefix checks.
  • Set default fill and size for trail mark config.

vega-transforms

  • Fix window operator init state for prev_value and next_value. (#2475.)

vega-typings

  • Update mark config for arc mark.

vega-view-transforms

  • Fix Overlap transform to early exit when there are no items (#2449).

v5.10.0

06 Mar 11:29

Choose a tag to compare

Notable Additions

  • The Vega parser now generates a built-in background signal which the view uses to set the background color. While not technically a breaking change (specs will still parse and evaluate successfully), existing specs that use a signal named "background" may not render the same as before, in which case a different signal name should be used.
  • Top-level properties (autosize, background, padding, width, height) accept signal references, such as {"signal": "<expr>"}, which map to a signal definition's update property. If the top-level signals array contains an entry that matches one of these properties, the definitions will be merged, with precedence given to the properties defined in the signals array.
  • Vega views now include ARIA attributes on the view container DOM element. The role attribute is set to "figure", and the aria-label attribute is set to the specification description property.
  • The aggregate and window transforms support the product operation to multiply values.
  • The config supports a top-level lineBreak option for setting a global default for text line breaks. This property should be a string or regexp value, or a corresponding signal reference.
  • Support for text baseline values line-top and line-bottom. These values are similar to top and bottom baselines, but calculated relative to the lineHeight rather than fontSize alone.
  • Support for color blend modes via the new blend encoding channel. The allowed values are: multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, hue, saturation, color, luminosity. For Canvas rendering, the blend is set via the context 2D globalCompositeOperation property. For SVG rendering, the blend is set via the CSS mix-blend-mode style. The default Vega value is null (or undefined), which maps to the default values "source-over" (for Canvas) and "normal" (for SVG). For more, see the Canvas globalCompositeOperation and CSS mix-blend-mode documentation, including limitations in cross-browser support.
  • Support for configuration of cross-origin image handling. Vega uses crossOrigin="anonymous" by default for loaded images, which allows images loaded from a different host to be included in exported visualization images (and thereby avoid "tainted canvas errors"), so long as the server provides permission via proper CORS headers. This default can be overridden by providing loader options to the Vega view that include a crossOrigin property. If this property is defined and maps to a value of null or undefined, then a no-cors fetch will be performed instead.
  • Add axis labelOffset property to adjust axis label position in addition to tickOffset, and labelLineHeight to set the line height for multi-line axis labels.

Changelog

Changes from v5.9.2:

docs

  • Add description entries to all specifications in the example gallery.
  • Update documentation for all new features.

vega

  • Update test specifications to avoid use of signals named "background".

vega-loader

  • Add crossOrigin URI sanitization configuration for images. (#2238)

vega-parser

  • Add built-in background signal to drive view background.
  • Add support for top-level properties to take signal-values.
  • Add application of lineBreak config option to text marks. (#2370)
  • Add axis labelOffset property. (thanks @kanitw! #2317)
  • Add axis labelLineHeight property. (thanks @kanitw! #2437)
  • Add description support to parser output and config.

vega-scenegraph

  • Add crossOrigin image handling support. (#2238)
  • Add blend encoding channel support. (#2311)
  • Add line-top, line-bottom text baseline options. (#2395)
  • Add text trimming to ensure consistent output. (#2418)
  • Fix linear gradient to use normalized bounding box coordinates. (#2365)
  • Fix canvas damage/redraw: Align to base pixel grid in case of non-integer scaling. (#2425)

vega-schema

  • Add blend encoding to schema.
  • Add line-top, line-bottom text baseline options. (#2395)
  • Add top-level signal-valued properties to schema.
  • Add axis labelOffset and labelLineHeight properties to schema.

vega-transforms

  • Add product aggregate operation. (#2307)

vega-typings

  • Add blend encoding to typings.
  • Add line-top, line-bottom text baseline options. (#2395)
  • Add top-level signal-valued properties to typings.
  • Add lineBreak config typing. (#2370)
  • Add axis labelOffset and labelLineHeight typings.

vega-util

  • Fix prototype pollution vulnerability.

vega-view

  • Add ARIA attributes and View description method.
  • Use background signal to control the view background color.
  • Update padding method to handle numeric values.

vega-view-transforms

  • Fix axis title layout bounds to avoid improper padding offset. (#2368)
  • Fix view layout resize code to avoid invocation of padding until needed.

v5.9.2

28 Feb 12:48

Choose a tag to compare

Changes from v5.9.1:

docs

monorepo

  • Update dev dependencies.

vega

  • Allow patch updates for Vega packages.
  • Add images-inline test specification.

vega-loader

  • Fix URI sanitization to accept data: prefix URIs. (#2407)

vega-parser

  • Fix legend columns value handling. (#2268)

vega-scenegraph

  • Add memoization to speed up text width measurements. (Thanks @domoritz!)

vega-schema

  • Fix date-type transform parameter support.

vega-statistics

  • Fix exponential regression robustness, mean-center x-values. (#2378)

vega-transforms

  • Fix TimeUnit maxbins, extent parameter support. (Thanks @haldenl!)

vega-typings

vega-util

  • Add lruCache data structure, tests, and documentation.