Create beautiful and interactive React + ThreeJS globe visualizations with ease.
Various bugfixes.
cameraDistanceRadiusScale
to affect the initial globe camera distance. This prop has the same exact behavior as initialCameraDistanceRadiusScale
, which is now reserved as a useful semantic prop alias.options
is updated. This led to creation and attachment of increasing amounts of glow meshes, and also not honoring the enableGlobeGlow
prop.console.log
cameraMaxDistanceRadiusScale
default value to better support the initialCameraDistanceRadiusScale
prop.Add delay
support to exported tween
utility.
Refactoring and simplification of codebase and exposed public APIs.
options
prop (improves and simplifies component rendering lifecycle with hooks).Globe
instance support.microbundle
, xo
).Only the Globe
class, ReactGlobe
component, defaultCallbacks
, defaultInitialCoordinates
, defaultOptions
, and tween
util are now exported to limit the exposed public API.
Various exported types have changed. The new types form a smaller and simplified set.
Various props are replaced, updated (interface updates), removed, or unchanged. The following table tracks the status of old vs new props.
Status | Old | New |
---|---|---|
updated | animations |
animations |
updated | onDefocus |
onDefocus |
replaced | cameraOptions |
options |
replaced | focusOptions |
options |
replaced | globeOptions |
options |
replaced | lightOptions |
options |
replaced | markerOptions |
options |
replaced | size |
height , width |
unchanged | focus |
focus |
unchanged | initialCoordinates |
initialCoordinates |
unchanged | markers |
markers |
unchanged | onClickMarker |
onClickMarker |
unchanged | onMouseOutMarker |
onMouseOutMarker |
unchanged | onMouseOverMarker |
onMouseOverMarker |
renamed | onGetGlobeInstance |
onGetGlobe |
renamed | onTextureLoaded |
onGlobeTextureLoaded |
added | globeBackgroundTexture |
|
added | globeCloudsTexture |
|
added | globeTexture |
|
added | onGlobeBackgroundTextureLoaded |
|
added | onGlobeCloudsTextureLoaded |
react-globe
provides useful and convenient configurations to customize the globe. These configurations still exist, but are managed in a flat options
object. This allows easier code/documentation management of globe configuration.
Most options are renamed in an organized way that allows easy refactoring.
Status | Old | New |
---|---|---|
removed | globeOptions.enableBackground |
|
removed | globeOptions.enableClouds |
|
removed | markerOptions.activeScale |
|
renamed | cameraOptions.autoRotateSpeed |
options.cameraAutoRotateSpeed |
renamed | cameraOptions.distanceRadiusScale |
options.cameraDistanceRadiusScale |
renamed | cameraOptions.enableAutoRotate |
options.enableCameraAutoRotate |
renamed | cameraOptions.enableRotate |
options.enableCameraRotate |
renamed | cameraOptions.enableZoom |
options.enableCameraZoom |
renamed | cameraOptions.maxDistanceRadiusScale |
options.cameraMaxDistanceRadiusScale |
renamed | cameraOptions.maxPolarAngle |
options.cameraMaxPolarAngle |
renamed | cameraOptions.minPolarAngle |
options.cameraMinPolarAngle |
renamed | cameraOptions.rotateSpeed |
options.cameraRotateSpeed |
renamed | cameraOptions.zoomSpeed |
options.cameraZoomSpeed |
renamed | focusOptions.animationDuration |
options.focusAnimationDuration |
renamed | focusOptions.distanceRadiusScale |
options.focusDistanceRadiusScale |
renamed | focusOptions.easingFunction |
options.focusEasingFunction |
renamed | focusOptions.enableDefocus |
options.enableDefocus |
renamed | globeOptions.backgroundTexture |
options.globeBackgroundTexture |
renamed | globeOptions.cloudsOpacity |
options.globeCloudsOpacity |
renamed | globeOptions.cloudsTexture |
options.globeCloudsTexture |
renamed | globeOptions.enableGlow |
options.enableGlobeGlow |
renamed | globeOptions.glowCoefficient |
options.globeGlowCoefficient |
renamed | globeOptions.glowColor |
options.globeGlowColor |
renamed | globeOptions.glowPower |
options.globeGlowPower |
renamed | globeOptions.glowRadiusScale |
options.globeGlowRadiusScale |
renamed | globeOptions.texture |
options.globeTexture |
renamed | lightOptions.ambientLightColor |
options.ambientLightColor |
renamed | lightOptions.ambientLightIntensity |
options.ambientLightIntensity |
renamed | lightOptions.pointLightColor |
options.pointLightColor |
renamed | lightOptions.pointLightIntensity |
options.pointLightIntensity |
renamed | lightOptions.pointLightPositionRadiusScales |
options.pointLightPositionRadiusScales |
renamed | markerOptions.enableGlow |
options.enableMarkerGlow |
renamed | markerOptions.enableTooltip |
options.enableMarkerTooltip |
renamed | markerOptions.enterAnimationDuration |
options.markerEnterAnimationDuration |
renamed | markerOptions.enterEasingFunction |
options.markerEnterEasingFunction |
renamed | markerOptions.exitAnimationDuration |
options.markerExitAnimationDuration |
renamed | markerOptions.exitEasingFunction |
options.markerExitEasingFunction |
renamed | markerOptions.getTooltipContent |
options.markerTooltipRenderer |
renamed | markerOptions.glowCoefficient |
options.markerGlowCoefficient |
renamed | markerOptions.glowPower |
options.markerGlowPower |
renamed | markerOptions.glowRadiusScale |
options.markerGlowRadiusScale |
renamed | markerOptions.offsetRadiusScale |
options.markerOffsetRadiusScale |
renamed | markerOptions.radiusScaleRange |
options.markerRadiusScaleRange |
renamed | markerOptions.renderer |
options.markerRenderer |
renamed | markerOptions.type |
options.markerType |
Globe
instanceAs mentioned in the v4.0.0
docs, the Globe
instance APIs are unstable and not formally maintained. The Globe
class instance is now managed through a new set of class methods, and the old methods are no longer compatible.
v5.0.0
introduces more formal support for the Globe
instance.
CSS
Tooltip (tippy
) CSS is no longer bundled with the project. You can optionally import it with:
import 'tippy.js/dist/tippy.css';
import 'tippy.js/animations/scale.css';
v4.0.0
brings huge improvements to marker transition behaviors and other features!
Globe
, Tooltip
) empower useful ways to work with react-globe
.Globe
instance via the onGetGlobeInstance
prop, which allows you to fully access and control the Globe
class outside of the React lifecycle.
freeze
and unfreeze
methods).lookAt
prop is renamed to initialCoordinates
.*Options
prop are now explicitly renamed to *OptionsProp
. The former is used internally in the codebase while the *OptionsProp
supports specifying optional option key/value pair in the component props.defaultCameraOptions
values are updated to reflect changes in dependent libraries. You might need to update these option values if custom values were previously used.globeOptions.cloudsSpeed
option is removed because it was not very useful, and was overcomplicating the animation cycle. We should explore a better way to implement/customize cloud speeds in every rotation axis in the future.Globe.ts
class instead of custom React hooks.
Globe
instance and control how the Globe
instance should be updated when props change.three-glow-mesh
and react-cached-callback
.onTextureLoaded
callback to detect if globe texture has successfully loaded. Updated Texture.mdx
docs. (#2)focusOptions.distanceRadiusScale
not updating on change. (#4)markersOptions.offsetRadiusScale
.(#5)*Options
props with optional fields. (#9)Check the documentation to begin building interactive globe visualizations!
react-globe
begun as react-3d-globe.react-3d-globe
. Writing code in hooks allowed complete separation of responsibility of ThreeJS entities (e.g. camera, globe, markers, renderer). These separate effects can be updated in a controlled manner by listening explicitly to their dependencies passed down from the component props.react-globe
project is heavily inspired by the metoorising visualization project. Many features in react-globe
are based around requirements in this project.react-globe
NPM package was transferred to me from the original package. Code is published to this package at version 3.0.0
to dissociate features and goals from the old package.