globe.gl 2.30.0 → 2.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -247,8 +247,8 @@ Globe({ configOptions })(<domElement>)
247
247
  | <b>heatmapBandwidth</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap object accessor function, attribute or a numeric constant for the heatmap bandwidth, in angular degrees. The bandwidth is an internal parameter of the [Gaussian kernel function](https://en.wikipedia.org/wiki/Gaussian_function) and defines how localized is the influence of a point on distant locations. A narrow bandwidth leads to a more spiky representation, while a broad one has smoother curves. | 4 |
248
248
  | <b>heatmapColorFn</b>([<i>str</i> or <i>fn</i>]) | Heatmap object accessor function or attribute for the color interpolator function to represent density in the heatmap. This function should receive a number between `0` and `1` (or potentially higher if saturation > 1), and return a color string. | [Turbo colormap](https://blog.research.google/2019/08/turbo-improved-rainbow-colormap-for.html) interpolator with fading opacity |
249
249
  | <b>heatmapColorSaturation</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap object accessor function, attribute or a numeric constant for the color scale saturation. The saturation is a multiplier of the normalized density value (`[0,1]`) before passing it to the color interpolation function. It can be used to dampen outlier peaks in density and bring the data floor into view. | 1.5 |
250
- | <b>heatmapBaseAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap polygon object accessor function, attribute or a numeric constant for the heatmap base floor altitude in terms of globe radius units (`0` = 0 altitude, `1` = globe radius). | 0.01 |
251
- | <b>heatmapTopAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap polygon object accessor function, attribute or a numeric constant for the heatmap top peak altitude in terms of globe radius units (`0` = 0 altitude, `1` = globe radius). An equal value to the base altitude will yield a surface flat heatmap. If a top altitude is set, the variations in density will be used to define the altitude curves between base and top. | - |
250
+ | <b>heatmapBaseAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap object accessor function, attribute or a numeric constant for the heatmap base floor altitude in terms of globe radius units (`0` = 0 altitude, `1` = globe radius). | 0.01 |
251
+ | <b>heatmapTopAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Heatmap object accessor function, attribute or a numeric constant for the heatmap top peak altitude in terms of globe radius units (`0` = 0 altitude, `1` = globe radius). An equal value to the base altitude will yield a surface flat heatmap. If a top altitude is set, the variations in density will be used to define the altitude curves between base and top. | - |
252
252
  | <b>heatmapsTransitionDuration</b>([<i>num</i>]) | Getter/setter for duration (ms) of the transition to animate heatmap changes. A value of `0` will set the heatmap colors/altitudes immediately in their final position. New heatmaps are animated by rising them from the ground up and gently fading in through the color scale. | 0 |
253
253
  | <b>onHeatmapClick</b>(<i>fn</i>) | Callback function for heatmap (left-button) clicks. The heatmap object, the event object and the clicked coordinates are included as arguments: `onHeatmapClick(heatmap, event, { lat, lng, altitude })`. | - |
254
254
  | <b>onHeatmapRightClick</b>(<i>fn</i>) | Callback function for heatmap right-clicks. The heatmap object, the event object and the clicked coordinates are included as arguments: `onHeatmapRightClick(heatmap, event, { lat, lng, altitude })`. | - |
@@ -294,7 +294,9 @@ Globe({ configOptions })(<domElement>)
294
294
  | <b>hexPolygonAltitude</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a numeric constant for the polygon's hexagons altitude in terms of globe radius units (`0` = 0 altitude, `1` = globe radius). | 0.001 |
295
295
  | <b>hexPolygonResolution</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a numeric constant for the geographic binning resolution as defined by [H3](https://uber.github.io/h3/#/documentation/core-library/resolution-table). Determines the area of the hexagons that tesselate the globe's surface. Accepts values between `0` and `15`. Level 0 partitions the earth in 122 (mostly) hexagonal cells. Each subsequent level sub-divides the previous in roughly 7 hexagons. | 3 |
296
296
  | <b>hexPolygonMargin</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a numeric constant for the radial margin of each hexagon. Margins above `0` will create gaps between adjacent hexagons within a polygon. The margin is specified in terms of fraction of the hexagon's surface diameter. Values below `0` or above `1` are disadvised. | 0.2 |
297
+ | <b>hexPolygonUseDots</b>([<i>boolean</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a boolean constant for whether to represent each polygon point as a circular dot instead of an hexagon. | `false` |
297
298
  | <b>hexPolygonCurvatureResolution</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a numeric constant for the resolution (in angular degrees) of each hexed polygon surface curvature. The finer the resolution, the more the polygon hexes are fragmented into smaller faces to approximate the spheric surface, at the cost of performance. | 5 |
299
+ | <b>hexPolygonDotResolution</b>([<i>num</i>, <i>str</i> or <i>fn</i>]) | Hexed polygon object accessor function, attribute or a numeric constant for the resolution of each circular dot, expressed in how many slice segments to divide the circumference. Higher values yield smoother circles, at the cost of performance. This is only applicable in dot representation mode. | 12 |
298
300
  | <b>hexPolygonsTransitionDuration</b>([<i>num</i>]) | Getter/setter for duration (ms) of the transition to animate hexed polygons altitude and margin changes. A value of `0` will move the hexagons immediately to their final state. New hexed polygons are animated by sizing each hexagon from `0` radius. | 0 |
299
301
  | <b>onHexPolygonClick</b>(<i>fn</i>) | Callback function for hexed polygon (left-button) clicks. The polygon object, the event object and the clicked coordinates are included as arguments: `onHexPolygonClick(polygon, event, { lat, lng, altitude })`. | - |
300
302
  | <b>onHexPolygonRightClick</b>(<i>fn</i>) | Callback function for hexed polygon right-clicks. The polygon object, the event object and the clicked coordinates are included as arguments: `onHexPolygonRightClick(polygon, event, { lat, lng, altitude })`. | - |
@@ -430,6 +432,7 @@ Globe({ configOptions })(<domElement>)
430
432
  | <b>pointerEventsFilter</b>([<i>fn</i>]) | Getter/setter for the filter function which defines whether a particular object can be the target of pointer interactions. In general, objects that are closer to the camera get precedence in capturing pointer events. This function allows having ignored object layers so that pointer events can be passed through to deeper objects in the various globe layers. The ThreeJS object and its associated data (if any) are passed as arguments: `pointerEventsFilter(obj, data)`. The function should return a boolean value. | `() => true` |
431
433
  | <b>lineHoverPrecision</b>([<i>num</i>]) | Getter/setter for the precision to use when detecting hover events over [Line](https://threejs.org/docs/#api/objects/Line) objects, such as arcs and paths. | 0.2 |
432
434
  | <b>onZoom</b>(<i>fn</i>) | Callback function for point-of-view changes by zooming or rotating the globe using the orbit controls. The current point of view (with the syntax `{ lat, lng, altitude }`) is included as sole argument. | |
435
+ | <b>lights</b>([<i>array</i>]) | Getter/setter for the list of lights to use in the scene. Each item should be an instance of [Light](https://threejs.org/docs/#api/en/lights/Light). | [AmbientLight](https://threejs.org/docs/?q=ambient#api/en/lights/AmbientLight) + [DirectionalLight](https://threejs.org/docs/#api/en/lights/DirectionalLight) (from above) |
433
436
  | <b>scene</b>() | Access the internal ThreeJS [Scene](https://threejs.org/docs/#api/scenes/Scene). Can be used to extend the current scene with additional objects not related to globe.gl. | |
434
437
  | <b>camera</b>() | Access the internal ThreeJS [Camera](https://threejs.org/docs/#api/cameras/PerspectiveCamera). | |
435
438
  | <b>renderer</b>() | Access the internal ThreeJS [WebGL renderer](https://threejs.org/docs/#api/renderers/WebGLRenderer). ||
@@ -1,4 +1,4 @@
1
- import { WebGLRendererParameters, Scene, Camera, WebGLRenderer, Object3D } from 'three';
1
+ import { WebGLRendererParameters, Light, Scene, Camera, WebGLRenderer, Object3D } from 'three';
2
2
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
3
3
  import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
4
4
  import { ConfigOptions as ConfigOptions$1, ThreeGlobeGeneric } from 'three-globe';
@@ -112,6 +112,8 @@ interface GlobeGenericInstance<ChainableInstance>
112
112
  lineHoverPrecision(): number;
113
113
  lineHoverPrecision(precision: number): ChainableInstance;
114
114
  onZoom(callback: (pov: GeoCoords) => void): ChainableInstance;
115
+ lights(): Light[];
116
+ lights(lights: Light[]): ChainableInstance;
115
117
  scene(): Scene;
116
118
  camera(): Camera;
117
119
  renderer(): WebGLRenderer;
package/dist/globe.gl.js CHANGED
@@ -1,4 +1,4 @@
1
- // Version 2.30.0 globe.gl - https://github.com/vasturiano/globe.gl
1
+ // Version 2.32.0 globe.gl - https://github.com/vasturiano/globe.gl
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -67340,7 +67340,7 @@
67340
67340
  var bwRad = bandwidth * Math.PI / 180;
67341
67341
  return sum$1(data.map(function (d) {
67342
67342
  var weight = weightAccessor(d);
67343
- if (weight <= 0) return;
67343
+ if (!weight) return 0;
67344
67344
  var dist = geoDistance(pnt, [lngAccessor(d), latAccessor(d)]);
67345
67345
  return gaussianKernel(dist, bwRad) * weight;
67346
67346
  }));
@@ -67554,7 +67554,7 @@
67554
67554
  kdeVals = _obj$__currentTargetD.kdeVals,
67555
67555
  topAlt = _obj$__currentTargetD.topAlt,
67556
67556
  saturation = _obj$__currentTargetD.saturation;
67557
- var maxVal = max$1(kdeVals) || 1e-15;
67557
+ var maxVal = max$1(kdeVals.map(Math.abs)) || 1e-15;
67558
67558
 
67559
67559
  // Set vertex colors
67560
67560
  obj.geometry.setAttribute('color', array2BufferAttr(
@@ -67569,7 +67569,7 @@
67569
67569
  var _vertexGeoCoords$idx = _slicedToArray$1(vertexGeoCoords[idx], 2),
67570
67570
  lng = _vertexGeoCoords$idx[0],
67571
67571
  lat = _vertexGeoCoords$idx[1];
67572
- var alt = altScale(val);
67572
+ var alt = altScale(Math.abs(val));
67573
67573
  var p = polar2Cartesian(lat, lng, alt);
67574
67574
  return [p.x, p.y, p.z];
67575
67575
  }), 3));
@@ -67826,9 +67826,11 @@
67826
67826
  var THREE$9 = window.THREE ? window.THREE // Prefer consumption from global THREE, if exists
67827
67827
  : {
67828
67828
  BufferGeometry: BufferGeometry,
67829
+ CircleGeometry: CircleGeometry,
67829
67830
  DoubleSide: DoubleSide,
67830
67831
  Mesh: Mesh,
67831
- MeshLambertMaterial: MeshLambertMaterial
67832
+ MeshLambertMaterial: MeshLambertMaterial,
67833
+ Vector3: Vector3
67832
67834
  };
67833
67835
  var bfg = Object.assign({}, _bfg);
67834
67836
  var BufferGeometryUtils = bfg.BufferGeometryUtils || bfg;
@@ -67860,10 +67862,18 @@
67860
67862
  "default": 0.2
67861
67863
  },
67862
67864
  // in fraction of hex diameter
67865
+ hexPolygonUseDots: {
67866
+ "default": false
67867
+ },
67868
+ // if points should be circular instead of hexagonal
67863
67869
  hexPolygonCurvatureResolution: {
67864
67870
  "default": 5
67865
67871
  },
67866
- // in angular degrees
67872
+ // in angular degrees, only relevant for hex tops
67873
+ hexPolygonDotResolution: {
67874
+ "default": 12
67875
+ },
67876
+ // how many slice segments in the dot circle's circumference
67867
67877
  hexPolygonsTransitionDuration: {
67868
67878
  "default": 0,
67869
67879
  triggerUpdate: false
@@ -67883,7 +67893,9 @@
67883
67893
  var altitudeAccessor = index$1(state.hexPolygonAltitude);
67884
67894
  var resolutionAccessor = index$1(state.hexPolygonResolution);
67885
67895
  var marginAccessor = index$1(state.hexPolygonMargin);
67896
+ var useDotsAccessor = index$1(state.hexPolygonUseDots);
67886
67897
  var curvatureResolutionAccessor = index$1(state.hexPolygonCurvatureResolution);
67898
+ var dotResolutionAccessor = index$1(state.hexPolygonDotResolution);
67887
67899
  threeDigest(state.hexPolygonsData, state.scene, {
67888
67900
  createObj: function createObj(d) {
67889
67901
  var obj = new THREE$9.Mesh(undefined, new THREE$9.MeshLambertMaterial({
@@ -67898,7 +67910,9 @@
67898
67910
  var h3Res = resolutionAccessor(d);
67899
67911
  var alt = altitudeAccessor(d);
67900
67912
  var margin = Math.max(0, Math.min(1, +marginAccessor(d)));
67913
+ var useDots = useDotsAccessor(d);
67901
67914
  var curvatureResolution = curvatureResolutionAccessor(d);
67915
+ var dotResolution = dotResolutionAccessor(d);
67902
67916
 
67903
67917
  // update material
67904
67918
  var color = colorAccessor(d);
@@ -67965,25 +67979,37 @@
67965
67979
  curvatureResolution = _obj$__currentTargetD.curvatureResolution;
67966
67980
  obj.geometry && obj.geometry.dispose();
67967
67981
  obj.geometry = !hexBins.length ? new THREE$9.BufferGeometry() : (BufferGeometryUtils.mergeGeometries || BufferGeometryUtils.mergeBufferGeometries)(hexBins.map(function (h) {
67968
- // compute new geojson with relative margin
67969
- var relNum = function relNum(st, end, rat) {
67970
- return st - (st - end) * rat;
67971
- };
67972
67982
  var _h$hexCenter = _slicedToArray$1(h.hexCenter, 2),
67973
67983
  clat = _h$hexCenter[0],
67974
67984
  clng = _h$hexCenter[1];
67975
- var geoJson = margin === 0 ? h.hexGeoJson : h.hexGeoJson.map(function (_ref) {
67976
- var _ref2 = _slicedToArray$1(_ref, 2),
67977
- elng = _ref2[0],
67978
- elat = _ref2[1];
67979
- return [[elng, clng], [elat, clat]].map(function (_ref3) {
67980
- var _ref4 = _slicedToArray$1(_ref3, 2),
67981
- st = _ref4[0],
67982
- end = _ref4[1];
67983
- return relNum(st, end, margin);
67985
+ if (useDots) {
67986
+ var centerPos = polar2Cartesian(clat, clng, alt);
67987
+ var edgePos = polar2Cartesian(h.hexGeoJson[0][1], h.hexGeoJson[0][0], alt);
67988
+ var r = 0.85 * (1 - margin) * new THREE$9.Vector3(centerPos.x, centerPos.y, centerPos.z).distanceTo(new THREE$9.Vector3(edgePos.x, edgePos.y, edgePos.z));
67989
+ var geometry = new CircleGeometry(r, dotResolution);
67990
+ geometry.rotateX(deg2Rad$1(-clat));
67991
+ geometry.rotateY(deg2Rad$1(clng));
67992
+ geometry.translate(centerPos.x, centerPos.y, centerPos.z);
67993
+ return geometry;
67994
+ } else {
67995
+ var relNum = function relNum(st, end, rat) {
67996
+ return st - (st - end) * rat;
67997
+ };
67998
+
67999
+ // compute new geojson with relative margin
68000
+ var _geoJson = margin === 0 ? h.hexGeoJson : h.hexGeoJson.map(function (_ref) {
68001
+ var _ref2 = _slicedToArray$1(_ref, 2),
68002
+ elng = _ref2[0],
68003
+ elat = _ref2[1];
68004
+ return [[elng, clng], [elat, clat]].map(function (_ref3) {
68005
+ var _ref4 = _slicedToArray$1(_ref3, 2),
68006
+ st = _ref4[0],
68007
+ end = _ref4[1];
68008
+ return relNum(st, end, margin);
68009
+ });
67984
68010
  });
67985
- });
67986
- return new ConicPolygonBufferGeometry([geoJson], GLOBE_RADIUS, GLOBE_RADIUS * (1 + alt), false, true, false, curvatureResolution);
68011
+ return new ConicPolygonBufferGeometry([_geoJson], GLOBE_RADIUS, GLOBE_RADIUS * (1 + alt), false, true, false, curvatureResolution);
68012
+ }
67987
68013
  }));
67988
68014
  };
67989
68015
  if (!state.hexPolygonsTransitionDuration || state.hexPolygonsTransitionDuration < 0) {
@@ -69252,7 +69278,7 @@
69252
69278
  return _defineProperty$1({}, p, bindHeatmapsLayer.linkProp(p));
69253
69279
  })));
69254
69280
  var bindHexedPolygonsLayer = linkKapsule$1('hexedPolygonsLayer', HexedPolygonsLayerKapsule);
69255
- var linkedHexedPolygonsLayerProps = Object.assign.apply(Object, _toConsumableArray$1(['hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonCurvatureResolution', 'hexPolygonsTransitionDuration'].map(function (p) {
69281
+ var linkedHexedPolygonsLayerProps = Object.assign.apply(Object, _toConsumableArray$1(['hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonUseDots', 'hexPolygonCurvatureResolution', 'hexPolygonDotResolution', 'hexPolygonsTransitionDuration'].map(function (p) {
69256
69282
  return _defineProperty$1({}, p, bindHexedPolygonsLayer.linkProp(p));
69257
69283
  })));
69258
69284
  var bindPolygonsLayer = linkKapsule$1('polygonsLayer', PolygonsLayerKapsule);
@@ -72634,7 +72660,11 @@
72634
72660
  }
72635
72661
 
72636
72662
  function _isNativeFunction(fn) {
72637
- return Function.toString.call(fn).indexOf("[native code]") !== -1;
72663
+ try {
72664
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
72665
+ } catch (e) {
72666
+ return typeof fn === "function";
72667
+ }
72638
72668
  }
72639
72669
 
72640
72670
  function _isNativeReflectConstruct() {
@@ -73372,31 +73402,31 @@
73372
73402
  var css_248z = ".scene-nav-info {\n bottom: 5px;\n width: 100%;\n text-align: center;\n color: slategrey;\n opacity: 0.7;\n font-size: 10px;\n}\n\n.scene-tooltip {\n top: 0;\n color: lavender;\n font-size: 15px;\n}\n\n.scene-nav-info, .scene-tooltip {\n position: absolute;\n font-family: sans-serif;\n pointer-events: none;\n user-select: none;\n}\n\n.scene-container canvas:focus {\n outline: none;\n}";
73373
73403
  styleInject(css_248z);
73374
73404
 
73375
- function _iterableToArrayLimit(arr, i) {
73376
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
73377
- if (null != _i) {
73378
- var _s,
73379
- _e,
73380
- _x,
73381
- _r,
73382
- _arr = [],
73383
- _n = !0,
73384
- _d = !1;
73405
+ function _iterableToArrayLimit(r, l) {
73406
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
73407
+ if (null != t) {
73408
+ var e,
73409
+ n,
73410
+ i,
73411
+ u,
73412
+ a = [],
73413
+ f = !0,
73414
+ o = !1;
73385
73415
  try {
73386
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
73387
- if (Object(_i) !== _i) return;
73388
- _n = !1;
73389
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
73390
- } catch (err) {
73391
- _d = !0, _e = err;
73416
+ if (i = (t = t.call(r)).next, 0 === l) {
73417
+ if (Object(t) !== t) return;
73418
+ f = !1;
73419
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
73420
+ } catch (r) {
73421
+ o = !0, n = r;
73392
73422
  } finally {
73393
73423
  try {
73394
- if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
73424
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
73395
73425
  } finally {
73396
- if (_d) throw _e;
73426
+ if (o) throw n;
73397
73427
  }
73398
73428
  }
73399
- return _arr;
73429
+ return a;
73400
73430
  }
73401
73431
  }
73402
73432
  function _defineProperty(obj, key, value) {
@@ -73512,6 +73542,9 @@
73512
73542
  objects: {
73513
73543
  "default": []
73514
73544
  },
73545
+ lights: {
73546
+ "default": []
73547
+ },
73515
73548
  enablePointerInteraction: {
73516
73549
  "default": true,
73517
73550
  onChange: function onChange(_, state) {
@@ -73972,6 +74005,15 @@
73972
74005
  }
73973
74006
  }
73974
74007
  changedProps.hasOwnProperty('showNavInfo') && (state.navInfo.style.display = state.showNavInfo ? null : 'none');
74008
+ if (changedProps.hasOwnProperty('lights')) {
74009
+ (changedProps.lights || []).forEach(function (light) {
74010
+ return state.scene.remove(light);
74011
+ }); // Clear the place
74012
+ state.lights.forEach(function (light) {
74013
+ return state.scene.add(light);
74014
+ }); // Add to scene
74015
+ }
74016
+
73975
74017
  if (changedProps.hasOwnProperty('objects')) {
73976
74018
  (changedProps.objects || []).forEach(function (obj) {
73977
74019
  return state.scene.remove(obj);
@@ -74032,7 +74074,7 @@
74032
74074
 
74033
74075
  // Expose config from ThreeGlobe
74034
74076
  var bindGlobe = linkKapsule('globe', threeGlobe);
74035
- var linkedGlobeProps = Object.assign.apply(Object, _toConsumableArray$5(['globeImageUrl', 'bumpImageUrl', 'showGlobe', 'showGraticules', 'showAtmosphere', 'atmosphereColor', 'atmosphereAltitude', 'onGlobeReady', 'pointsData', 'pointLat', 'pointLng', 'pointColor', 'pointAltitude', 'pointRadius', 'pointResolution', 'pointsMerge', 'pointsTransitionDuration', 'arcsData', 'arcStartLat', 'arcStartLng', 'arcEndLat', 'arcEndLng', 'arcColor', 'arcAltitude', 'arcAltitudeAutoScale', 'arcStroke', 'arcCurveResolution', 'arcCircularResolution', 'arcDashLength', 'arcDashGap', 'arcDashInitialGap', 'arcDashAnimateTime', 'arcsTransitionDuration', 'polygonsData', 'polygonGeoJsonGeometry', 'polygonCapColor', 'polygonCapMaterial', 'polygonSideColor', 'polygonSideMaterial', 'polygonStrokeColor', 'polygonAltitude', 'polygonCapCurvatureResolution', 'polygonsTransitionDuration', 'pathsData', 'pathPoints', 'pathPointLat', 'pathPointLng', 'pathPointAlt', 'pathResolution', 'pathColor', 'pathStroke', 'pathDashLength', 'pathDashGap', 'pathDashInitialGap', 'pathDashAnimateTime', 'pathTransitionDuration', 'heatmapsData', 'heatmapPoints', 'heatmapPointLat', 'heatmapPointLng', 'heatmapPointWeight', 'heatmapBandwidth', 'heatmapColorFn', 'heatmapColorSaturation', 'heatmapBaseAltitude', 'heatmapTopAltitude', 'heatmapsTransitionDuration', 'hexBinPointsData', 'hexBinPointLat', 'hexBinPointLng', 'hexBinPointWeight', 'hexBinResolution', 'hexMargin', 'hexTopCurvatureResolution', 'hexTopColor', 'hexSideColor', 'hexAltitude', 'hexBinMerge', 'hexTransitionDuration', 'hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonCurvatureResolution', 'hexPolygonsTransitionDuration', 'tilesData', 'tileLat', 'tileLng', 'tileAltitude', 'tileWidth', 'tileHeight', 'tileUseGlobeProjection', 'tileMaterial', 'tileCurvatureResolution', 'tilesTransitionDuration', 'ringsData', 'ringLat', 'ringLng', 'ringAltitude', 'ringColor', 'ringResolution', 'ringMaxRadius', 'ringPropagationSpeed', 'ringRepeatPeriod', 'labelsData', 'labelLat', 'labelLng', 'labelAltitude', 'labelRotation', 'labelText', 'labelSize', 'labelTypeFace', 'labelColor', 'labelResolution', 'labelIncludeDot', 'labelDotRadius', 'labelDotOrientation', 'labelsTransitionDuration', 'htmlElementsData', 'htmlLat', 'htmlLng', 'htmlAltitude', 'htmlElement', 'htmlTransitionDuration', 'objectsData', 'objectLat', 'objectLng', 'objectAltitude', 'objectRotation', 'objectFacesSurface', 'objectThreeObject', 'customLayerData', 'customThreeObject', 'customThreeObjectUpdate'].map(function (p) {
74077
+ var linkedGlobeProps = Object.assign.apply(Object, _toConsumableArray$5(['globeImageUrl', 'bumpImageUrl', 'showGlobe', 'showGraticules', 'showAtmosphere', 'atmosphereColor', 'atmosphereAltitude', 'onGlobeReady', 'pointsData', 'pointLat', 'pointLng', 'pointColor', 'pointAltitude', 'pointRadius', 'pointResolution', 'pointsMerge', 'pointsTransitionDuration', 'arcsData', 'arcStartLat', 'arcStartLng', 'arcEndLat', 'arcEndLng', 'arcColor', 'arcAltitude', 'arcAltitudeAutoScale', 'arcStroke', 'arcCurveResolution', 'arcCircularResolution', 'arcDashLength', 'arcDashGap', 'arcDashInitialGap', 'arcDashAnimateTime', 'arcsTransitionDuration', 'polygonsData', 'polygonGeoJsonGeometry', 'polygonCapColor', 'polygonCapMaterial', 'polygonSideColor', 'polygonSideMaterial', 'polygonStrokeColor', 'polygonAltitude', 'polygonCapCurvatureResolution', 'polygonsTransitionDuration', 'pathsData', 'pathPoints', 'pathPointLat', 'pathPointLng', 'pathPointAlt', 'pathResolution', 'pathColor', 'pathStroke', 'pathDashLength', 'pathDashGap', 'pathDashInitialGap', 'pathDashAnimateTime', 'pathTransitionDuration', 'heatmapsData', 'heatmapPoints', 'heatmapPointLat', 'heatmapPointLng', 'heatmapPointWeight', 'heatmapBandwidth', 'heatmapColorFn', 'heatmapColorSaturation', 'heatmapBaseAltitude', 'heatmapTopAltitude', 'heatmapsTransitionDuration', 'hexBinPointsData', 'hexBinPointLat', 'hexBinPointLng', 'hexBinPointWeight', 'hexBinResolution', 'hexMargin', 'hexTopCurvatureResolution', 'hexTopColor', 'hexSideColor', 'hexAltitude', 'hexBinMerge', 'hexTransitionDuration', 'hexPolygonsData', 'hexPolygonGeoJsonGeometry', 'hexPolygonColor', 'hexPolygonAltitude', 'hexPolygonResolution', 'hexPolygonMargin', 'hexPolygonUseDots', 'hexPolygonCurvatureResolution', 'hexPolygonDotResolution', 'hexPolygonsTransitionDuration', 'tilesData', 'tileLat', 'tileLng', 'tileAltitude', 'tileWidth', 'tileHeight', 'tileUseGlobeProjection', 'tileMaterial', 'tileCurvatureResolution', 'tilesTransitionDuration', 'ringsData', 'ringLat', 'ringLng', 'ringAltitude', 'ringColor', 'ringResolution', 'ringMaxRadius', 'ringPropagationSpeed', 'ringRepeatPeriod', 'labelsData', 'labelLat', 'labelLng', 'labelAltitude', 'labelRotation', 'labelText', 'labelSize', 'labelTypeFace', 'labelColor', 'labelResolution', 'labelIncludeDot', 'labelDotRadius', 'labelDotOrientation', 'labelsTransitionDuration', 'htmlElementsData', 'htmlLat', 'htmlLng', 'htmlAltitude', 'htmlElement', 'htmlTransitionDuration', 'objectsData', 'objectLat', 'objectLng', 'objectAltitude', 'objectRotation', 'objectFacesSurface', 'objectThreeObject', 'customLayerData', 'customThreeObject', 'customThreeObjectUpdate'].map(function (p) {
74036
74078
  return _defineProperty$3({}, p, bindGlobe.linkProp(p));
74037
74079
  })));
74038
74080
  var linkedGlobeMethods = Object.assign.apply(Object, _toConsumableArray$5(['globeMaterial', 'getGlobeRadius', 'getCoords', 'toGeoCoords'].map(function (p) {
@@ -74044,7 +74086,7 @@
74044
74086
  var linkedRenderObjsProps = Object.assign.apply(Object, _toConsumableArray$5(['width', 'height', 'backgroundColor', 'backgroundImageUrl', 'enablePointerInteraction'].map(function (p) {
74045
74087
  return _defineProperty$3({}, p, bindRenderObjs.linkProp(p));
74046
74088
  })));
74047
- var linkedRenderObjsMethods = Object.assign.apply(Object, _toConsumableArray$5(['postProcessingComposer'].map(function (p) {
74089
+ var linkedRenderObjsMethods = Object.assign.apply(Object, _toConsumableArray$5(['lights', 'postProcessingComposer'].map(function (p) {
74048
74090
  return _defineProperty$3({}, p, bindRenderObjs.linkMethod(p));
74049
74091
  })));
74050
74092
 
@@ -74348,7 +74390,8 @@
74348
74390
  rendererConfig: rendererConfig,
74349
74391
  waitForLoadComplete: waitForGlobeReady,
74350
74392
  extraRenderers: [new THREE.CSS2DRenderer()] // Used in HTML elements layer
74351
- }).skyRadius(globe.getGlobeRadius() * 500).showNavInfo(false)
74393
+ }).skyRadius(globe.getGlobeRadius() * 500).showNavInfo(false).objects([globe]) // Populate scene
74394
+ .lights([new THREE.AmbientLight(0xcccccc, Math.PI), new THREE.DirectionalLight(0xffffff, 0.6 * Math.PI)])
74352
74395
  };
74353
74396
  },
74354
74397
  init: function init(domNode, state) {
@@ -74439,9 +74482,7 @@
74439
74482
  }
74440
74483
  };
74441
74484
  state.renderObjs.renderer().useLegacyLights = false; // force behavior of three < 155
74442
- state.renderObjs.objects([
74443
- // Populate scene
74444
- new THREE.AmbientLight(0xcccccc, Math.PI), new THREE.DirectionalLight(0xffffff, 0.6 * Math.PI), state.globe]).hoverOrderComparator(function (a, b) {
74485
+ state.renderObjs.hoverOrderComparator(function (a, b) {
74445
74486
  var aObj = getGlobeObj(a);
74446
74487
  var bObj = getGlobeObj(b);
74447
74488