Skip to main content

Whats New

1.4.0

This release focuses on improved deck.gl compatibility, and package maintainability.

Code base upgrades

In preparation for the 1.4 release, we made major upgrades to the tools that support the development and publishing of hubble.gl. This allows us to iterate faster and makes it easier for first-time users to get started.

  • #269 Library rewritten in TypeScript
  • All examples are bootstrapped with vite
  • Pre-bundled scripts built with esbuild
  • Website rewritten using Docusaurus
  • Tests are run with tsnode with ESM modules for node, and vite for the browser

Fixed

  • #286 Improved compatibility up to deck.gl 8.9, react 18.0, react-map-gl 7.1, and kepler.gl 3.1.
  • #302 Fixed kepler.gl 3.1 integration
    • fix(react) kepler layers should be visible
    • fix(kepler) layers should update on every react render
    • chore(kepler) component should configure which map to render
    • change(kepler) switch png and jpeg encoder to use zip archives
    • fix(kepler) filters should render enlarged filters using latest schema
    • fix(kepler) all defined filters should render
  • #298 Added missing exports to the main hubble.gl package.

Changed

  • #288 Hubble.gl now expects users to use an interleaved MapboxOverlay instead of the now deprecated MapboxLayer class in @deck.gl/mapbox.

1.3.0

This release introduces a new decoupled animation manager, and refactors Please review API reference and examples before upgrading.

Fixed

  • #113 encoders - gif options can be read-only
  • #147 kepler - fixed rendering while preview exception
  • #163 kepler - blank layer when no deck layers
  • #177 kepler - match 3d perspective in video export
  • #95 worldview - odd dimensions cause encoder issues

Added

  • #98 Add seek method to DeckAdapter.
  • #125 Added new Keyframe classes.
    • Keyframes.set to update keyframe values without reconstructing and re-attaching to timeline.
    • DeckLayerKeyframes
    • KeplerLayerKeyframes
    • KeplerFilterKeyframes
    • KeplerTripKeyframes
  • #127 Added Animation to manage keyframes and drawing a frame.
    • DeckAnimation
    • KeplerAnimation
  • #130 Added AnimationManager to replace DeckScene
    • Manages a Timeline and attaching animations.

React

  • #130 useDeckAdapter hook for better react integration.
  • Numerous improvements to kepler.gl support.
    • #144 UI Modal Refinements. Thank you @RaymondDashWu!
    • #146 support kepler.gl filter animate by interval keyframes
    • #182 default filename prop
    • #183 stop button and disable settings when previewing or rendering

Changed

  • #161 DeckAdapter now waits for async deck.gl layers to finish loading before rendering a frame.
    • Check out the terrain example to see this in action!
  • DeckAdapter has breaking changes for existing applications.
  • #106 renamed encoderSettings to formatConfigs
  • #175 renamed dimension to resolution

Removed

  • Removed DeskScene (replaced by AnimationManager and Animation classes).
  • Removed Keyframe classes.
    • LayerKeyframes (replaced by DeckLayerKeyframes)
    • FilterValueKeyframes
    • GridLayerKeyframes
    • ScatterPlotLayerKeyframes

1.2.0

Added

  • Automatic animation attachment, see example.
  • DeckScene
    • Added initialKeyframes parameter on DeckScene. Initializes keyframes prior to first render.
    • Provide dynamic keyframes via DeckAdapter.render({getCameraKeyframes, getKeyframes}) accessors.
      • DeckScene.setKeyframes may also be used to register new keyframes.
  • DeckAdapter
    • DeckAdapter.seek added to enable previewing any specific frame while paused.
    • DeckAdapter glContext parameter added to support browser testing.
    • DeckAdapter.getProps({extraProps}) added to inject additional deck props without interfering with Hubble.
    • DeckAdapter.getProps({getLayers}) added for when it’s necessary to access keyframes for animated layers.
      • getLayers: (scene) => layers[]
  • CameraKeyframes now supports flyTo interpolation.
    • new CameraKeyframes({interpolators: 'flyTo'})
  • GifEncoder defaults tuned to increase quality and reduce size.

React

  • Kepler UI component injection hooks and providers. This enables 3rd party libraries integrated with Kepler.gl to inject components provided by Kepler without circularly depending on Kepler.

Examples

Removed

  • Removed DeckScene construcor parameters:
    • data removed. Instead users should manage their data loading on their own.
    • lengthMs removed. Instead provide timecode parameter to DeckAdapter.render.
    • currentCamera removed. Instead manage viewState externally and set camera keyframes with DeckScene.setCameraKeyframes.
    • animationLoop removed. Instead provide a luma.gl timeline.
    • renderLayers removed. Instead either directly supply deckgl with layers, or provide a getLayers accessor, DeckAdapter.getProps({getLayers}), when it’s necessary to access keyframes for animated layers.
    • keyframes removed. Instead they can be initialized with initialKeyframes parameter and updated with setKeyframes, and setCameraKeyframes methods.
  • Encoder base class removed. Use FrameEncoder instead.
  • DeckAdapter.preview removed. Use DeckAdapter.render({Encoder: PreviewEncoder}) instead.

Changed

  • DeckAdapter.render, DeckAdapter.getProps, and DeckScene constructor expect object wrapped parameters now.
  • DeckAdapter.render({encoderSettings}) is now split up into three objects:
    • formatConfigs, to config settings for specific formats (I.e. jpeg quality)
    • timecode, to specify render start and end times as well as framerate.
    • filename, to specify the file name when rendering to a downloaded file.

Deprecations

  • Frame definition pattern in frame.js should no longer be used. Will be removed in next release.
  • Keyframes.setActiveKeyframes is now private Keyframes._setActiveKeyframes, and should not be used.

1.1.0

  • Encoders are constructed right before rendering starts, instead of only when a scene is defined. #1
  • DeckAdapter.render now accepts a onStop callback.
  • Remove stop and dispose from FrameEncoders #3
  • Allow PNGEncoder transparent frames #4
  • Refactor encoder settings and scene settings api #8
    • scene settings are defined at scene load time, so you can set scene resolution and animation length there.
    • encoder settings are defined before every render, so you can set seek options there.
    • format-specific encoder settings are namespaced by encoder (jpeg settings are under jpeg, etc..).
  • Gif Encoder #7

1.0.1

Initial release.