globe.gl 2.26.5 → 2.26.7
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/dist/globe.gl.common.js +63 -110
- package/dist/globe.gl.js +7151 -7059
- package/dist/globe.gl.js.map +1 -1
- package/dist/globe.gl.min.js +20 -5
- package/dist/globe.gl.module.js +56 -95
- package/package.json +12 -12
package/dist/globe.gl.common.js
CHANGED
|
@@ -8,26 +8,15 @@ var accessorFn = require('accessor-fn');
|
|
|
8
8
|
var Kapsule = require('kapsule');
|
|
9
9
|
var TWEEN = require('@tweenjs/tween.js');
|
|
10
10
|
|
|
11
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
-
|
|
13
|
-
var ThreeGlobe__default = /*#__PURE__*/_interopDefaultLegacy(ThreeGlobe);
|
|
14
|
-
var ThreeRenderObjects__default = /*#__PURE__*/_interopDefaultLegacy(ThreeRenderObjects);
|
|
15
|
-
var accessorFn__default = /*#__PURE__*/_interopDefaultLegacy(accessorFn);
|
|
16
|
-
var Kapsule__default = /*#__PURE__*/_interopDefaultLegacy(Kapsule);
|
|
17
|
-
var TWEEN__default = /*#__PURE__*/_interopDefaultLegacy(TWEEN);
|
|
18
|
-
|
|
19
11
|
function styleInject(css, ref) {
|
|
20
12
|
if (ref === void 0) ref = {};
|
|
21
13
|
var insertAt = ref.insertAt;
|
|
22
|
-
|
|
23
14
|
if (!css || typeof document === 'undefined') {
|
|
24
15
|
return;
|
|
25
16
|
}
|
|
26
|
-
|
|
27
17
|
var head = document.head || document.getElementsByTagName('head')[0];
|
|
28
18
|
var style = document.createElement('style');
|
|
29
19
|
style.type = 'text/css';
|
|
30
|
-
|
|
31
20
|
if (insertAt === 'top') {
|
|
32
21
|
if (head.firstChild) {
|
|
33
22
|
head.insertBefore(style, head.firstChild);
|
|
@@ -37,7 +26,6 @@ function styleInject(css, ref) {
|
|
|
37
26
|
} else {
|
|
38
27
|
head.appendChild(style);
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
if (style.styleSheet) {
|
|
42
30
|
style.styleSheet.cssText = css;
|
|
43
31
|
} else {
|
|
@@ -50,17 +38,14 @@ styleInject(css_248z);
|
|
|
50
38
|
|
|
51
39
|
function ownKeys(object, enumerableOnly) {
|
|
52
40
|
var keys = Object.keys(object);
|
|
53
|
-
|
|
54
41
|
if (Object.getOwnPropertySymbols) {
|
|
55
42
|
var symbols = Object.getOwnPropertySymbols(object);
|
|
56
43
|
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
57
44
|
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
58
45
|
})), keys.push.apply(keys, symbols);
|
|
59
46
|
}
|
|
60
|
-
|
|
61
47
|
return keys;
|
|
62
48
|
}
|
|
63
|
-
|
|
64
49
|
function _objectSpread2(target) {
|
|
65
50
|
for (var i = 1; i < arguments.length; i++) {
|
|
66
51
|
var source = null != arguments[i] ? arguments[i] : {};
|
|
@@ -70,10 +55,8 @@ function _objectSpread2(target) {
|
|
|
70
55
|
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
71
56
|
});
|
|
72
57
|
}
|
|
73
|
-
|
|
74
58
|
return target;
|
|
75
59
|
}
|
|
76
|
-
|
|
77
60
|
function _defineProperty(obj, key, value) {
|
|
78
61
|
if (key in obj) {
|
|
79
62
|
Object.defineProperty(obj, key, {
|
|
@@ -85,35 +68,26 @@ function _defineProperty(obj, key, value) {
|
|
|
85
68
|
} else {
|
|
86
69
|
obj[key] = value;
|
|
87
70
|
}
|
|
88
|
-
|
|
89
71
|
return obj;
|
|
90
72
|
}
|
|
91
|
-
|
|
92
73
|
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
93
74
|
if (source == null) return {};
|
|
94
75
|
var target = {};
|
|
95
76
|
var sourceKeys = Object.keys(source);
|
|
96
77
|
var key, i;
|
|
97
|
-
|
|
98
78
|
for (i = 0; i < sourceKeys.length; i++) {
|
|
99
79
|
key = sourceKeys[i];
|
|
100
80
|
if (excluded.indexOf(key) >= 0) continue;
|
|
101
81
|
target[key] = source[key];
|
|
102
82
|
}
|
|
103
|
-
|
|
104
83
|
return target;
|
|
105
84
|
}
|
|
106
|
-
|
|
107
85
|
function _objectWithoutProperties(source, excluded) {
|
|
108
86
|
if (source == null) return {};
|
|
109
|
-
|
|
110
87
|
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
111
|
-
|
|
112
88
|
var key, i;
|
|
113
|
-
|
|
114
89
|
if (Object.getOwnPropertySymbols) {
|
|
115
90
|
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
116
|
-
|
|
117
91
|
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
118
92
|
key = sourceSymbolKeys[i];
|
|
119
93
|
if (excluded.indexOf(key) >= 0) continue;
|
|
@@ -121,22 +95,17 @@ function _objectWithoutProperties(source, excluded) {
|
|
|
121
95
|
target[key] = source[key];
|
|
122
96
|
}
|
|
123
97
|
}
|
|
124
|
-
|
|
125
98
|
return target;
|
|
126
99
|
}
|
|
127
|
-
|
|
128
100
|
function _toConsumableArray(arr) {
|
|
129
101
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
130
102
|
}
|
|
131
|
-
|
|
132
103
|
function _arrayWithoutHoles(arr) {
|
|
133
104
|
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
134
105
|
}
|
|
135
|
-
|
|
136
106
|
function _iterableToArray(iter) {
|
|
137
107
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
138
108
|
}
|
|
139
|
-
|
|
140
109
|
function _unsupportedIterableToArray(o, minLen) {
|
|
141
110
|
if (!o) return;
|
|
142
111
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
@@ -145,15 +114,11 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
|
145
114
|
if (n === "Map" || n === "Set") return Array.from(o);
|
|
146
115
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
147
116
|
}
|
|
148
|
-
|
|
149
117
|
function _arrayLikeToArray(arr, len) {
|
|
150
118
|
if (len == null || len > arr.length) len = arr.length;
|
|
151
|
-
|
|
152
119
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
153
|
-
|
|
154
120
|
return arr2;
|
|
155
121
|
}
|
|
156
|
-
|
|
157
122
|
function _nonIterableSpread() {
|
|
158
123
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
159
124
|
}
|
|
@@ -176,11 +141,9 @@ function linkKapsule (kapsulePropName, kapsuleType) {
|
|
|
176
141
|
// link method pass-through
|
|
177
142
|
return function (state) {
|
|
178
143
|
var kapsuleInstance = state[kapsulePropName];
|
|
179
|
-
|
|
180
144
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
181
145
|
args[_key - 1] = arguments[_key];
|
|
182
146
|
}
|
|
183
|
-
|
|
184
147
|
var returnVal = kapsuleInstance[method].apply(kapsuleInstance, args);
|
|
185
148
|
return returnVal === kapsuleInstance ? this // chain based on the parent object, not the inner kapsule
|
|
186
149
|
: returnVal;
|
|
@@ -190,7 +153,6 @@ function linkKapsule (kapsulePropName, kapsuleType) {
|
|
|
190
153
|
}
|
|
191
154
|
|
|
192
155
|
var _excluded = ["rendererConfig", "waitForGlobeReady"];
|
|
193
|
-
|
|
194
156
|
var THREE = _objectSpread2(_objectSpread2({}, window.THREE ? window.THREE // Prefer consumption from global THREE, if exists
|
|
195
157
|
: {
|
|
196
158
|
AmbientLight: three.AmbientLight,
|
|
@@ -199,25 +161,30 @@ var THREE = _objectSpread2(_objectSpread2({}, window.THREE ? window.THREE // Pre
|
|
|
199
161
|
}), {}, {
|
|
200
162
|
CSS2DRenderer: CSS2DRenderer_js.CSS2DRenderer
|
|
201
163
|
});
|
|
202
|
-
// Expose config from ThreeGlobe
|
|
203
164
|
|
|
204
|
-
|
|
165
|
+
//
|
|
166
|
+
|
|
167
|
+
// Expose config from ThreeGlobe
|
|
168
|
+
var bindGlobe = linkKapsule('globe', ThreeGlobe);
|
|
205
169
|
var linkedGlobeProps = Object.assign.apply(Object, _toConsumableArray(['globeImageUrl', 'bumpImageUrl', 'showGlobe', 'showGraticules', 'showAtmosphere', 'atmosphereColor', 'atmosphereAltitude', 'globeMaterial', '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', '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', 'objectThreeObject', 'customLayerData', 'customThreeObject', 'customThreeObjectUpdate'].map(function (p) {
|
|
206
170
|
return _defineProperty({}, p, bindGlobe.linkProp(p));
|
|
207
171
|
})));
|
|
208
172
|
var linkedGlobeMethods = Object.assign.apply(Object, _toConsumableArray(['getGlobeRadius', 'getCoords', 'toGeoCoords'].map(function (p) {
|
|
209
173
|
return _defineProperty({}, p, bindGlobe.linkMethod(p));
|
|
210
|
-
})));
|
|
174
|
+
})));
|
|
211
175
|
|
|
212
|
-
|
|
176
|
+
// Expose config from renderObjs
|
|
177
|
+
var bindRenderObjs = linkKapsule('renderObjs', ThreeRenderObjects);
|
|
213
178
|
var linkedRenderObjsProps = Object.assign.apply(Object, _toConsumableArray(['width', 'height', 'backgroundColor', 'backgroundImageUrl', 'enablePointerInteraction'].map(function (p) {
|
|
214
179
|
return _defineProperty({}, p, bindRenderObjs.linkProp(p));
|
|
215
180
|
})));
|
|
216
181
|
var linkedRenderObjsMethods = Object.assign.apply(Object, _toConsumableArray(['postProcessingComposer'].map(function (p) {
|
|
217
182
|
return _defineProperty({}, p, bindRenderObjs.linkMethod(p));
|
|
218
|
-
})));
|
|
183
|
+
})));
|
|
219
184
|
|
|
220
|
-
|
|
185
|
+
//
|
|
186
|
+
|
|
187
|
+
var globe = Kapsule({
|
|
221
188
|
props: _objectSpread2(_objectSpread2({
|
|
222
189
|
onZoom: {
|
|
223
190
|
triggerUpdate: false
|
|
@@ -380,14 +347,12 @@ var globe = Kapsule__default["default"]({
|
|
|
380
347
|
cancelAnimationFrame(state.animationFrameRequestId);
|
|
381
348
|
state.animationFrameRequestId = null;
|
|
382
349
|
}
|
|
383
|
-
|
|
384
350
|
return this;
|
|
385
351
|
},
|
|
386
352
|
resumeAnimation: function resumeAnimation(state) {
|
|
387
353
|
if (state.animationFrameRequestId === null) {
|
|
388
354
|
this._animationCycle();
|
|
389
355
|
}
|
|
390
|
-
|
|
391
356
|
return this;
|
|
392
357
|
},
|
|
393
358
|
_animationCycle: function _animationCycle(state) {
|
|
@@ -398,8 +363,9 @@ var globe = Kapsule__default["default"]({
|
|
|
398
363
|
pointOfView: function pointOfView(state) {
|
|
399
364
|
var geoCoords = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
400
365
|
var transitionDuration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
401
|
-
var curGeoCoords = getGeoCoords();
|
|
366
|
+
var curGeoCoords = getGeoCoords();
|
|
402
367
|
|
|
368
|
+
// Getter
|
|
403
369
|
if (geoCoords.lat === undefined && geoCoords.lng === undefined && geoCoords.altitude === undefined) {
|
|
404
370
|
return curGeoCoords;
|
|
405
371
|
} else {
|
|
@@ -417,38 +383,32 @@ var globe = Kapsule__default["default"]({
|
|
|
417
383
|
while (curGeoCoords.lng - finalGeoCoords.lng > 180) {
|
|
418
384
|
curGeoCoords.lng -= 360;
|
|
419
385
|
}
|
|
420
|
-
|
|
421
386
|
while (curGeoCoords.lng - finalGeoCoords.lng < -180) {
|
|
422
387
|
curGeoCoords.lng += 360;
|
|
423
388
|
}
|
|
424
|
-
|
|
425
|
-
new TWEEN__default["default"].Tween(curGeoCoords).to(finalGeoCoords, transitionDuration).easing(TWEEN__default["default"].Easing.Cubic.InOut).onUpdate(setCameraPos).start();
|
|
389
|
+
new TWEEN.Tween(curGeoCoords).to(finalGeoCoords, transitionDuration).easing(TWEEN.Easing.Cubic.InOut).onUpdate(setCameraPos).start();
|
|
426
390
|
}
|
|
427
|
-
|
|
428
391
|
return this;
|
|
429
|
-
}
|
|
392
|
+
}
|
|
430
393
|
|
|
394
|
+
//
|
|
431
395
|
|
|
432
396
|
function getGeoCoords() {
|
|
433
397
|
return state.globe.toGeoCoords(state.renderObjs.cameraPosition());
|
|
434
398
|
}
|
|
435
|
-
|
|
436
399
|
function setCameraPos(_ref5) {
|
|
437
400
|
var lat = _ref5.lat,
|
|
438
|
-
|
|
439
|
-
|
|
401
|
+
lng = _ref5.lng,
|
|
402
|
+
altitude = _ref5.altitude;
|
|
440
403
|
state.renderObjs.cameraPosition(state.globe.getCoords(lat, lng, altitude));
|
|
441
404
|
}
|
|
442
405
|
},
|
|
443
406
|
getScreenCoords: function getScreenCoords(state) {
|
|
444
407
|
var _state$globe;
|
|
445
|
-
|
|
446
408
|
for (var _len = arguments.length, geoCoords = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
447
409
|
geoCoords[_key - 1] = arguments[_key];
|
|
448
410
|
}
|
|
449
|
-
|
|
450
411
|
var cartesianCoords = (_state$globe = state.globe).getCoords.apply(_state$globe, geoCoords);
|
|
451
|
-
|
|
452
412
|
return state.renderObjs.getScreenCoords(cartesianCoords.x, cartesianCoords.y, cartesianCoords.z);
|
|
453
413
|
},
|
|
454
414
|
toGlobeCoords: function toGlobeCoords(state, x, y) {
|
|
@@ -458,9 +418,8 @@ var globe = Kapsule__default["default"]({
|
|
|
458
418
|
if (!globeIntersects) return null; // coords outside globe
|
|
459
419
|
|
|
460
420
|
var _state$globe$toGeoCoo = state.globe.toGeoCoords(globeIntersects.point),
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
421
|
+
lat = _state$globe$toGeoCoo.lat,
|
|
422
|
+
lng = _state$globe$toGeoCoo.lng;
|
|
464
423
|
return {
|
|
465
424
|
lat: lat,
|
|
466
425
|
lng: lng
|
|
@@ -499,47 +458,48 @@ var globe = Kapsule__default["default"]({
|
|
|
499
458
|
}, linkedGlobeMethods), linkedRenderObjsMethods),
|
|
500
459
|
stateInit: function stateInit(_ref6) {
|
|
501
460
|
var rendererConfig = _ref6.rendererConfig,
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
var globe = new ThreeGlobe__default["default"](_objectSpread2({
|
|
461
|
+
_ref6$waitForGlobeRea = _ref6.waitForGlobeReady,
|
|
462
|
+
waitForGlobeReady = _ref6$waitForGlobeRea === void 0 ? true : _ref6$waitForGlobeRea,
|
|
463
|
+
globeInitConfig = _objectWithoutProperties(_ref6, _excluded);
|
|
464
|
+
var globe = new ThreeGlobe(_objectSpread2({
|
|
507
465
|
waitForGlobeReady: waitForGlobeReady
|
|
508
466
|
}, globeInitConfig));
|
|
509
467
|
return {
|
|
510
468
|
globe: globe,
|
|
511
|
-
renderObjs:
|
|
469
|
+
renderObjs: ThreeRenderObjects({
|
|
512
470
|
controlType: 'orbit',
|
|
513
471
|
rendererConfig: rendererConfig,
|
|
514
472
|
waitForLoadComplete: waitForGlobeReady,
|
|
515
473
|
extraRenderers: [new THREE.CSS2DRenderer()] // Used in HTML elements layer
|
|
516
|
-
|
|
517
474
|
}).skyRadius(globe.getGlobeRadius() * 500).showNavInfo(false)
|
|
518
475
|
};
|
|
519
476
|
},
|
|
520
477
|
init: function init(domNode, state) {
|
|
521
478
|
var _this = this;
|
|
522
|
-
|
|
523
479
|
// Wipe DOM
|
|
524
|
-
domNode.innerHTML = '';
|
|
480
|
+
domNode.innerHTML = '';
|
|
525
481
|
|
|
482
|
+
// Add relative container
|
|
526
483
|
domNode.appendChild(state.container = document.createElement('div'));
|
|
527
|
-
state.container.style.position = 'relative';
|
|
484
|
+
state.container.style.position = 'relative';
|
|
528
485
|
|
|
486
|
+
// Add renderObjs
|
|
529
487
|
var roDomNode = document.createElement('div');
|
|
530
488
|
state.container.appendChild(roDomNode);
|
|
531
|
-
state.renderObjs(roDomNode);
|
|
489
|
+
state.renderObjs(roDomNode);
|
|
532
490
|
|
|
533
|
-
|
|
491
|
+
// inject renderer size on three-globe
|
|
492
|
+
state.globe.rendererSize(state.renderObjs.renderer().getSize(new THREE.Vector2()));
|
|
534
493
|
|
|
494
|
+
// set initial distance
|
|
535
495
|
this.pointOfView({
|
|
536
496
|
altitude: 2.5
|
|
537
|
-
});
|
|
497
|
+
});
|
|
538
498
|
|
|
499
|
+
// calibrate orbit controls
|
|
539
500
|
var globeR = state.globe.getGlobeRadius();
|
|
540
501
|
var controls = state.renderObjs.controls();
|
|
541
502
|
controls.minDistance = globeR * 1.01; // just above the surface
|
|
542
|
-
|
|
543
503
|
controls.maxDistance = globeR * 100;
|
|
544
504
|
controls.enablePan = false;
|
|
545
505
|
controls.enableDamping = true;
|
|
@@ -549,26 +509,23 @@ var globe = Kapsule__default["default"]({
|
|
|
549
509
|
controls.addEventListener('change', function () {
|
|
550
510
|
// adjust controls speed based on altitude
|
|
551
511
|
var pov = _this.pointOfView();
|
|
552
|
-
|
|
553
512
|
controls.rotateSpeed = pov.altitude * 0.2; // Math.pow(pov.altitude + 1, 2) * 0.025;
|
|
554
|
-
|
|
555
513
|
controls.zoomSpeed = (pov.altitude + 1) * 0.1; // Math.sqrt(pov.altitude) * 0.2;
|
|
556
|
-
// Update three-globe pov when camera moves, for proper hiding of elements
|
|
557
514
|
|
|
515
|
+
// Update three-globe pov when camera moves, for proper hiding of elements
|
|
558
516
|
state.globe.setPointOfView(state.renderObjs.camera().position);
|
|
559
517
|
state.onZoom && state.onZoom(pov);
|
|
560
|
-
});
|
|
518
|
+
});
|
|
561
519
|
|
|
520
|
+
// config renderObjs
|
|
562
521
|
var getGlobeObj = function getGlobeObj(object) {
|
|
563
|
-
var obj = object;
|
|
564
|
-
|
|
522
|
+
var obj = object;
|
|
523
|
+
// recurse up object chain until finding the globe object
|
|
565
524
|
while (obj && !obj.hasOwnProperty('__globeObjType')) {
|
|
566
525
|
obj = obj.parent;
|
|
567
526
|
}
|
|
568
|
-
|
|
569
527
|
return obj;
|
|
570
528
|
};
|
|
571
|
-
|
|
572
529
|
var dataAccessors = {
|
|
573
530
|
point: function point(d) {
|
|
574
531
|
return d;
|
|
@@ -601,16 +558,16 @@ var globe = Kapsule__default["default"]({
|
|
|
601
558
|
return d;
|
|
602
559
|
}
|
|
603
560
|
};
|
|
604
|
-
state.renderObjs.objects([
|
|
561
|
+
state.renderObjs.objects([
|
|
562
|
+
// Populate scene
|
|
605
563
|
new THREE.AmbientLight(0xbbbbbb), new THREE.DirectionalLight(0xffffff, 0.6), state.globe]).hoverOrderComparator(function (a, b) {
|
|
606
564
|
var aObj = getGlobeObj(a);
|
|
607
|
-
var bObj = getGlobeObj(b);
|
|
565
|
+
var bObj = getGlobeObj(b);
|
|
608
566
|
|
|
567
|
+
// de-prioritize background / non-globe objects
|
|
609
568
|
var isBackground = function isBackground(o) {
|
|
610
569
|
return !o;
|
|
611
570
|
}; // || o.__globeObjType === 'globe' || o.__globeObjType === 'atmosphere';
|
|
612
|
-
|
|
613
|
-
|
|
614
571
|
return isBackground(aObj) - isBackground(bObj);
|
|
615
572
|
}).tooltipContent(function (obj) {
|
|
616
573
|
var objAccessors = {
|
|
@@ -627,7 +584,7 @@ var globe = Kapsule__default["default"]({
|
|
|
627
584
|
};
|
|
628
585
|
var globeObj = getGlobeObj(obj);
|
|
629
586
|
var objType = globeObj && globeObj.__globeObjType;
|
|
630
|
-
return globeObj && objType && objAccessors.hasOwnProperty(objType) && dataAccessors.hasOwnProperty(objType) ?
|
|
587
|
+
return globeObj && objType && objAccessors.hasOwnProperty(objType) && dataAccessors.hasOwnProperty(objType) ? accessorFn(objAccessors[objType])(dataAccessors[objType](globeObj.__data)) || '' : '';
|
|
631
588
|
}).onHover(function (obj) {
|
|
632
589
|
// Update tooltip and trigger onHover events
|
|
633
590
|
var hoverObjFns = {
|
|
@@ -655,34 +612,32 @@ var globe = Kapsule__default["default"]({
|
|
|
655
612
|
object: state.onObjectClick,
|
|
656
613
|
custom: state.onCustomLayerClick
|
|
657
614
|
};
|
|
658
|
-
var hoverObj = getGlobeObj(obj);
|
|
615
|
+
var hoverObj = getGlobeObj(obj);
|
|
659
616
|
|
|
617
|
+
// ignore non-recognised obj types
|
|
660
618
|
hoverObj && !hoverObjFns.hasOwnProperty(hoverObj.__globeObjType) && (hoverObj = null);
|
|
661
|
-
|
|
662
619
|
if (hoverObj !== state.hoverObj) {
|
|
663
620
|
var prevObjType = state.hoverObj ? state.hoverObj.__globeObjType : null;
|
|
664
621
|
var prevObjData = state.hoverObj ? dataAccessors[prevObjType](state.hoverObj.__data) : null;
|
|
665
622
|
var objType = hoverObj ? hoverObj.__globeObjType : null;
|
|
666
623
|
var objData = hoverObj ? dataAccessors[objType](hoverObj.__data) : null;
|
|
667
|
-
|
|
668
624
|
if (prevObjType && prevObjType !== objType) {
|
|
669
625
|
// Hover out
|
|
670
626
|
hoverObjFns[prevObjType] && hoverObjFns[prevObjType](null, prevObjData);
|
|
671
627
|
}
|
|
672
|
-
|
|
673
628
|
if (objType) {
|
|
674
629
|
// Hover in
|
|
675
630
|
hoverObjFns[objType] && hoverObjFns[objType](objData, prevObjType === objType ? prevObjData : null);
|
|
676
|
-
}
|
|
677
|
-
|
|
631
|
+
}
|
|
678
632
|
|
|
633
|
+
// set pointer if hovered object is clickable
|
|
679
634
|
state.renderObjs.renderer().domElement.classList[objType && clickObjFns[objType] ? 'add' : 'remove']('clickable');
|
|
680
635
|
state.hoverObj = hoverObj;
|
|
681
636
|
}
|
|
682
637
|
}).onClick(function (obj, ev, point) {
|
|
683
638
|
if (!obj) return; // ignore background clicks
|
|
684
|
-
// Handle click events on objects
|
|
685
639
|
|
|
640
|
+
// Handle click events on objects
|
|
686
641
|
var objFns = {
|
|
687
642
|
globe: state.onGlobeClick,
|
|
688
643
|
point: state.onPointClick,
|
|
@@ -698,15 +653,14 @@ var globe = Kapsule__default["default"]({
|
|
|
698
653
|
};
|
|
699
654
|
var globeObj = getGlobeObj(obj);
|
|
700
655
|
var objType = globeObj.__globeObjType;
|
|
701
|
-
|
|
702
656
|
if (globeObj && objFns.hasOwnProperty(objType) && objFns[objType]) {
|
|
703
|
-
var args = [ev];
|
|
657
|
+
var args = [ev];
|
|
704
658
|
|
|
659
|
+
// include click coords
|
|
705
660
|
if (objType === 'globe') {
|
|
706
661
|
var _this$toGeoCoords = _this.toGeoCoords(point),
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
662
|
+
lat = _this$toGeoCoords.lat,
|
|
663
|
+
lng = _this$toGeoCoords.lng;
|
|
710
664
|
args.unshift({
|
|
711
665
|
lat: lat,
|
|
712
666
|
lng: lng
|
|
@@ -714,14 +668,13 @@ var globe = Kapsule__default["default"]({
|
|
|
714
668
|
} else {
|
|
715
669
|
args.push(_this.toGeoCoords(point));
|
|
716
670
|
}
|
|
717
|
-
|
|
718
671
|
dataAccessors.hasOwnProperty(objType) && args.unshift(dataAccessors[objType](globeObj.__data));
|
|
719
672
|
objFns[objType].apply(objFns, args);
|
|
720
673
|
}
|
|
721
674
|
}).onRightClick(function (obj, ev, point) {
|
|
722
675
|
if (!obj) return; // ignore background clicks
|
|
723
|
-
// Handle right-click events
|
|
724
676
|
|
|
677
|
+
// Handle right-click events
|
|
725
678
|
var objFns = {
|
|
726
679
|
globe: state.onGlobeRightClick,
|
|
727
680
|
point: state.onPointRightClick,
|
|
@@ -737,15 +690,14 @@ var globe = Kapsule__default["default"]({
|
|
|
737
690
|
};
|
|
738
691
|
var globeObj = getGlobeObj(obj);
|
|
739
692
|
var objType = globeObj.__globeObjType;
|
|
740
|
-
|
|
741
693
|
if (globeObj && objFns.hasOwnProperty(objType) && objFns[objType]) {
|
|
742
|
-
var args = [ev];
|
|
694
|
+
var args = [ev];
|
|
743
695
|
|
|
696
|
+
// include click coords
|
|
744
697
|
if (objType === 'globe') {
|
|
745
698
|
var _this$toGeoCoords2 = _this.toGeoCoords(point),
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
699
|
+
lat = _this$toGeoCoords2.lat,
|
|
700
|
+
lng = _this$toGeoCoords2.lng;
|
|
749
701
|
args.unshift({
|
|
750
702
|
lat: lat,
|
|
751
703
|
lng: lng
|
|
@@ -753,13 +705,14 @@ var globe = Kapsule__default["default"]({
|
|
|
753
705
|
} else {
|
|
754
706
|
args.push(_this.toGeoCoords(point));
|
|
755
707
|
}
|
|
756
|
-
|
|
757
708
|
dataAccessors.hasOwnProperty(objType) && args.unshift(dataAccessors[objType](globeObj.__data));
|
|
758
709
|
objFns[objType].apply(objFns, args);
|
|
759
710
|
}
|
|
760
|
-
});
|
|
761
|
-
// Kick-off renderer
|
|
711
|
+
});
|
|
762
712
|
|
|
713
|
+
//
|
|
714
|
+
|
|
715
|
+
// Kick-off renderer
|
|
763
716
|
this._animationCycle();
|
|
764
717
|
}
|
|
765
718
|
});
|