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
tsnodewith ESM modules for node, andvitefor 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.glpackage.
Changed
- #288 Hubble.gl now expects users to use an interleaved
MapboxOverlayinstead of the now deprecatedMapboxLayerclass 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
seekmethod to DeckAdapter. - #125 Added new Keyframe classes.
Keyframes.setto update keyframe values without reconstructing and re-attaching to timeline.DeckLayerKeyframesKeplerLayerKeyframesKeplerFilterKeyframesKeplerTripKeyframes
- #127 Added
Animationto manage keyframes and drawing a frame.DeckAnimationKeplerAnimation
- #130 Added
AnimationManagerto replaceDeckScene- Manages a
Timelineand attaching animations.
- Manages a
React
- #130
useDeckAdapterhook for better react integration. - Numerous improvements to kepler.gl support.
Changed
- #161
DeckAdapternow waits for async deck.gl layers to finish loading before rendering a frame.- Check out the terrain example to see this in action!
DeckAdapterhas breaking changes for existing applications.- #106 renamed
encoderSettingstoformatConfigs - #175 renamed
dimensiontoresolution
Removed
- Removed
DeskScene(replaced byAnimationManagerandAnimationclasses). - Removed Keyframe classes.
LayerKeyframes(replaced byDeckLayerKeyframes)FilterValueKeyframesGridLayerKeyframesScatterPlotLayerKeyframes
1.2.0
Added
- Automatic animation attachment, see example.
DeckScene- Added
initialKeyframesparameter onDeckScene. Initializes keyframes prior to first render. - Provide dynamic keyframes via
DeckAdapter.render({getCameraKeyframes, getKeyframes})accessors.DeckScene.setKeyframesmay also be used to register new keyframes.
- Added
DeckAdapterDeckAdapter.seekadded 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[]
- getLayers:
CameraKeyframesnow supportsflyTointerpolation.new CameraKeyframes({interpolators: 'flyTo'})
GifEncoderdefaults 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
- Quick start example
- Kepler.gl integration example
- Worldview example is a web app you can use to create fully customizable animated map videos in seconds without any installation or expensive server processing by utilizing hubble.gl.
Removed
- Removed
DeckSceneconstrucor parameters:dataremoved. Instead users should manage their data loading on their own.lengthMsremoved. Instead provide timecode parameter toDeckAdapter.render.currentCameraremoved. Instead manageviewStateexternally and set camera keyframes withDeckScene.setCameraKeyframes.animationLoopremoved. Instead provide a luma.gltimeline.renderLayersremoved. 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.keyframesremoved. Instead they can be initialized withinitialKeyframesparameter and updated withsetKeyframes, andsetCameraKeyframesmethods.
Encoderbase class removed. UseFrameEncoderinstead.DeckAdapter.previewremoved. UseDeckAdapter.render({Encoder: PreviewEncoder})instead.
Changed
DeckAdapter.render,DeckAdapter.getProps, andDeckSceneconstructor 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.setActiveKeyframesis now privateKeyframes._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 (
jpegsettings are underjpeg, etc..).
- Gif Encoder #7
1.0.1
Initial release.