@kepler.gl/deckgl-layers 3.3.0-alpha.2 → 3.3.0-alpha.4
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/cluster-layer/cluster-layer.js +2 -3
- package/dist/column-layer/enhanced-column-layer.js +30 -5
- package/dist/globe/atmosphere-layer.d.ts +26 -0
- package/dist/globe/atmosphere-layer.js +184 -0
- package/dist/globe/enhanced-multi-icon-layer.d.ts +6 -0
- package/dist/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/globe/globe-depth-disk-layer.d.ts +18 -0
- package/dist/globe/globe-depth-disk-layer.js +145 -0
- package/dist/globe/globe-layers.d.ts +102 -0
- package/dist/globe/globe-layers.js +565 -0
- package/dist/globe/globe-stars-layer.d.ts +5 -0
- package/dist/globe/globe-stars-layer.js +69 -0
- package/dist/globe/globe-view.d.ts +23 -0
- package/dist/globe/globe-view.js +316 -0
- package/dist/globe/index.d.ts +8 -0
- package/dist/globe/index.js +122 -0
- package/dist/globe/mvt-label-layer.d.ts +7928 -0
- package/dist/globe/mvt-label-layer.js +190 -0
- package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +53 -49
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +28 -2
- package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +53 -49
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +28 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +14 -3
- package/dist/layer-utils/globe-cell-utils.d.ts +30 -0
- package/dist/layer-utils/globe-cell-utils.js +173 -0
- package/dist/line-layer/line-layer.js +2 -2
- package/dist/raster/raster-layer/raster-layer.js +2 -2
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +2 -2
- package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +4 -1
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +52 -15
- package/dist/wms/wms-layer.d.ts +19 -0
- package/dist/wms/wms-layer.js +193 -23
- package/package.json +8 -5
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getStarsBackgroundImage = getStarsBackgroundImage;
|
|
7
|
+
// SPDX-License-Identifier: MIT
|
|
8
|
+
// Copyright contributors to the kepler.gl project
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Generates a CSS-compatible star-field background image as a data URL.
|
|
12
|
+
* The stars are rendered onto an offscreen canvas, tiled seamlessly via CSS
|
|
13
|
+
* `background-repeat`. The result is deterministic (seeded PRNG) and cached
|
|
14
|
+
* so it's only generated once.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
var STAR_CANVAS_SIZE = 512;
|
|
18
|
+
var STAR_COUNT = 600;
|
|
19
|
+
|
|
20
|
+
// Seeded pseudo-random number generator (Park-Miller) for determinism.
|
|
21
|
+
function seededRandom(seed) {
|
|
22
|
+
var s = seed;
|
|
23
|
+
return function () {
|
|
24
|
+
s = s * 16807 % 2147483647;
|
|
25
|
+
return (s - 1) / 2147483646;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Transparent 1x1 PNG used as a fallback when a canvas context is unavailable
|
|
30
|
+
// (SSR or unsupported browser), so that `url(...)` never resolves to an empty
|
|
31
|
+
// value that could trigger a request for the current document.
|
|
32
|
+
var TRANSPARENT_PIXEL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
|
|
33
|
+
var cachedDataUrl = null;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Returns a data URL of a tileable star-field image (512×512 PNG).
|
|
37
|
+
* Generates the image once and caches it for subsequent calls.
|
|
38
|
+
*/
|
|
39
|
+
function getStarsBackgroundImage() {
|
|
40
|
+
if (cachedDataUrl) return cachedDataUrl;
|
|
41
|
+
if (typeof document === 'undefined') {
|
|
42
|
+
// SSR fallback: return a transparent 1x1 pixel to avoid url() triggering a page request
|
|
43
|
+
return TRANSPARENT_PIXEL;
|
|
44
|
+
}
|
|
45
|
+
var canvas = document.createElement('canvas');
|
|
46
|
+
canvas.width = STAR_CANVAS_SIZE;
|
|
47
|
+
canvas.height = STAR_CANVAS_SIZE;
|
|
48
|
+
var ctx = canvas.getContext('2d');
|
|
49
|
+
if (!ctx) return cachedDataUrl = TRANSPARENT_PIXEL;
|
|
50
|
+
|
|
51
|
+
// Transparent background so CSS backgroundColor shows through
|
|
52
|
+
ctx.clearRect(0, 0, STAR_CANVAS_SIZE, STAR_CANVAS_SIZE);
|
|
53
|
+
var random = seededRandom(42);
|
|
54
|
+
for (var i = 0; i < STAR_COUNT; i++) {
|
|
55
|
+
var x = random() * STAR_CANVAS_SIZE;
|
|
56
|
+
var y = random() * STAR_CANVAS_SIZE;
|
|
57
|
+
var brightness = 140 + Math.floor(random() * 115); // 140–255
|
|
58
|
+
var alpha = 0.4 + random() * 0.6; // 0.4–1.0
|
|
59
|
+
var radius = 0.3 + random() * 1.0; // 0.3–1.3 px
|
|
60
|
+
|
|
61
|
+
ctx.beginPath();
|
|
62
|
+
ctx.arc(x, y, radius, 0, Math.PI * 2);
|
|
63
|
+
ctx.fillStyle = "rgba(".concat(brightness, ", ").concat(brightness, ", ").concat(brightness, ", ").concat(alpha, ")");
|
|
64
|
+
ctx.fill();
|
|
65
|
+
}
|
|
66
|
+
cachedDataUrl = canvas.toDataURL('image/png');
|
|
67
|
+
return cachedDataUrl;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFSX0NBTlZBU19TSVpFIiwiU1RBUl9DT1VOVCIsInNlZWRlZFJhbmRvbSIsInNlZWQiLCJzIiwiVFJBTlNQQVJFTlRfUElYRUwiLCJjYWNoZWREYXRhVXJsIiwiZ2V0U3RhcnNCYWNrZ3JvdW5kSW1hZ2UiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImN0eCIsImdldENvbnRleHQiLCJjbGVhclJlY3QiLCJyYW5kb20iLCJpIiwieCIsInkiLCJicmlnaHRuZXNzIiwiTWF0aCIsImZsb29yIiwiYWxwaGEiLCJyYWRpdXMiLCJiZWdpblBhdGgiLCJhcmMiLCJQSSIsImZpbGxTdHlsZSIsImNvbmNhdCIsImZpbGwiLCJ0b0RhdGFVUkwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtc3RhcnMtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBDU1MtY29tcGF0aWJsZSBzdGFyLWZpZWxkIGJhY2tncm91bmQgaW1hZ2UgYXMgYSBkYXRhIFVSTC5cbiAqIFRoZSBzdGFycyBhcmUgcmVuZGVyZWQgb250byBhbiBvZmZzY3JlZW4gY2FudmFzLCB0aWxlZCBzZWFtbGVzc2x5IHZpYSBDU1NcbiAqIGBiYWNrZ3JvdW5kLXJlcGVhdGAuIFRoZSByZXN1bHQgaXMgZGV0ZXJtaW5pc3RpYyAoc2VlZGVkIFBSTkcpIGFuZCBjYWNoZWRcbiAqIHNvIGl0J3Mgb25seSBnZW5lcmF0ZWQgb25jZS5cbiAqL1xuXG5jb25zdCBTVEFSX0NBTlZBU19TSVpFID0gNTEyO1xuY29uc3QgU1RBUl9DT1VOVCA9IDYwMDtcblxuLy8gU2VlZGVkIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoUGFyay1NaWxsZXIpIGZvciBkZXRlcm1pbmlzbS5cbmZ1bmN0aW9uIHNlZWRlZFJhbmRvbShzZWVkOiBudW1iZXIpOiAoKSA9PiBudW1iZXIge1xuICBsZXQgcyA9IHNlZWQ7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgcyA9IChzICogMTY4MDcpICUgMjE0NzQ4MzY0NztcbiAgICByZXR1cm4gKHMgLSAxKSAvIDIxNDc0ODM2NDY7XG4gIH07XG59XG5cbi8vIFRyYW5zcGFyZW50IDF4MSBQTkcgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYSBjYW52YXMgY29udGV4dCBpcyB1bmF2YWlsYWJsZVxuLy8gKFNTUiBvciB1bnN1cHBvcnRlZCBicm93c2VyKSwgc28gdGhhdCBgdXJsKC4uLilgIG5ldmVyIHJlc29sdmVzIHRvIGFuIGVtcHR5XG4vLyB2YWx1ZSB0aGF0IGNvdWxkIHRyaWdnZXIgYSByZXF1ZXN0IGZvciB0aGUgY3VycmVudCBkb2N1bWVudC5cbmNvbnN0IFRSQU5TUEFSRU5UX1BJWEVMID1cbiAgJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBUUFBQUMxSEF3Q0FBQUFDMGxFUVZSNDJtTmtZQUFBQUFZQUFqQ0IwQzhBQUFBQVNVVk9SSzVDWUlJPSc7XG5cbmxldCBjYWNoZWREYXRhVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBSZXR1cm5zIGEgZGF0YSBVUkwgb2YgYSB0aWxlYWJsZSBzdGFyLWZpZWxkIGltYWdlICg1MTLDlzUxMiBQTkcpLlxuICogR2VuZXJhdGVzIHRoZSBpbWFnZSBvbmNlIGFuZCBjYWNoZXMgaXQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFyc0JhY2tncm91bmRJbWFnZSgpOiBzdHJpbmcge1xuICBpZiAoY2FjaGVkRGF0YVVybCkgcmV0dXJuIGNhY2hlZERhdGFVcmw7XG5cbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBTU1IgZmFsbGJhY2s6IHJldHVybiBhIHRyYW5zcGFyZW50IDF4MSBwaXhlbCB0byBhdm9pZCB1cmwoKSB0cmlnZ2VyaW5nIGEgcGFnZSByZXF1ZXN0XG4gICAgcmV0dXJuIFRSQU5TUEFSRU5UX1BJWEVMO1xuICB9XG5cbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIGNhbnZhcy53aWR0aCA9IFNUQVJfQ0FOVkFTX1NJWkU7XG4gIGNhbnZhcy5oZWlnaHQgPSBTVEFSX0NBTlZBU19TSVpFO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgaWYgKCFjdHgpIHJldHVybiAoY2FjaGVkRGF0YVVybCA9IFRSQU5TUEFSRU5UX1BJWEVMKTtcblxuICAvLyBUcmFuc3BhcmVudCBiYWNrZ3JvdW5kIHNvIENTUyBiYWNrZ3JvdW5kQ29sb3Igc2hvd3MgdGhyb3VnaFxuICBjdHguY2xlYXJSZWN0KDAsIDAsIFNUQVJfQ0FOVkFTX1NJWkUsIFNUQVJfQ0FOVkFTX1NJWkUpO1xuXG4gIGNvbnN0IHJhbmRvbSA9IHNlZWRlZFJhbmRvbSg0Mik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBTVEFSX0NPVU5UOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcmFuZG9tKCkgKiBTVEFSX0NBTlZBU19TSVpFO1xuICAgIGNvbnN0IHkgPSByYW5kb20oKSAqIFNUQVJfQ0FOVkFTX1NJWkU7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDE0MCArIE1hdGguZmxvb3IocmFuZG9tKCkgKiAxMTUpOyAvLyAxNDDigJMyNTVcbiAgICBjb25zdCBhbHBoYSA9IDAuNCArIHJhbmRvbSgpICogMC42OyAvLyAwLjTigJMxLjBcbiAgICBjb25zdCByYWRpdXMgPSAwLjMgKyByYW5kb20oKSAqIDEuMDsgLy8gMC4z4oCTMS4zIHB4XG5cbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyKTtcbiAgICBjdHguZmlsbFN0eWxlID0gYHJnYmEoJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHthbHBoYX0pYDtcbiAgICBjdHguZmlsbCgpO1xuICB9XG5cbiAgY2FjaGVkRGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICByZXR1cm4gY2FjaGVkRGF0YVVybDtcbn1cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxHQUFHO0FBQzVCLElBQU1DLFVBQVUsR0FBRyxHQUFHOztBQUV0QjtBQUNBLFNBQVNDLFlBQVlBLENBQUNDLElBQVksRUFBZ0I7RUFDaEQsSUFBSUMsQ0FBQyxHQUFHRCxJQUFJO0VBQ1osT0FBTyxZQUFNO0lBQ1hDLENBQUMsR0FBSUEsQ0FBQyxHQUFHLEtBQUssR0FBSSxVQUFVO0lBQzVCLE9BQU8sQ0FBQ0EsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVO0VBQzdCLENBQUM7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxpQkFBaUIsR0FDckIsb0hBQW9IO0FBRXRILElBQUlDLGFBQTRCLEdBQUcsSUFBSTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyx1QkFBdUJBLENBQUEsRUFBVztFQUNoRCxJQUFJRCxhQUFhLEVBQUUsT0FBT0EsYUFBYTtFQUV2QyxJQUFJLE9BQU9FLFFBQVEsS0FBSyxXQUFXLEVBQUU7SUFDbkM7SUFDQSxPQUFPSCxpQkFBaUI7RUFDMUI7RUFFQSxJQUFNSSxNQUFNLEdBQUdELFFBQVEsQ0FBQ0UsYUFBYSxDQUFDLFFBQVEsQ0FBQztFQUMvQ0QsTUFBTSxDQUFDRSxLQUFLLEdBQUdYLGdCQUFnQjtFQUMvQlMsTUFBTSxDQUFDRyxNQUFNLEdBQUdaLGdCQUFnQjtFQUNoQyxJQUFNYSxHQUFHLEdBQUdKLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDLElBQUksQ0FBQztFQUNuQyxJQUFJLENBQUNELEdBQUcsRUFBRSxPQUFRUCxhQUFhLEdBQUdELGlCQUFpQjs7RUFFbkQ7RUFDQVEsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRWYsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDO0VBRXZELElBQU1nQixNQUFNLEdBQUdkLFlBQVksQ0FBQyxFQUFFLENBQUM7RUFFL0IsS0FBSyxJQUFJZSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdoQixVQUFVLEVBQUVnQixDQUFDLEVBQUUsRUFBRTtJQUNuQyxJQUFNQyxDQUFDLEdBQUdGLE1BQU0sQ0FBQyxDQUFDLEdBQUdoQixnQkFBZ0I7SUFDckMsSUFBTW1CLENBQUMsR0FBR0gsTUFBTSxDQUFDLENBQUMsR0FBR2hCLGdCQUFnQjtJQUNyQyxJQUFNb0IsVUFBVSxHQUFHLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNOLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFNTyxLQUFLLEdBQUcsR0FBRyxHQUFHUCxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQU1RLE1BQU0sR0FBRyxHQUFHLEdBQUdSLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7O0lBRXJDSCxHQUFHLENBQUNZLFNBQVMsQ0FBQyxDQUFDO0lBQ2ZaLEdBQUcsQ0FBQ2EsR0FBRyxDQUFDUixDQUFDLEVBQUVDLENBQUMsRUFBRUssTUFBTSxFQUFFLENBQUMsRUFBRUgsSUFBSSxDQUFDTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDZCxHQUFHLENBQUNlLFNBQVMsV0FBQUMsTUFBQSxDQUFXVCxVQUFVLFFBQUFTLE1BQUEsQ0FBS1QsVUFBVSxRQUFBUyxNQUFBLENBQUtULFVBQVUsUUFBQVMsTUFBQSxDQUFLTixLQUFLLE1BQUc7SUFDN0VWLEdBQUcsQ0FBQ2lCLElBQUksQ0FBQyxDQUFDO0VBQ1o7RUFFQXhCLGFBQWEsR0FBR0csTUFBTSxDQUFDc0IsU0FBUyxDQUFDLFdBQVcsQ0FBQztFQUM3QyxPQUFPekIsYUFBYTtBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare const DeckGlobeView: any;
|
|
2
|
+
declare const GlobeController: any;
|
|
3
|
+
/**
|
|
4
|
+
* Custom GlobeController that restores zoom-to-cursor behavior.
|
|
5
|
+
*
|
|
6
|
+
* In deck.gl 9.x, the default GlobeController's GlobeState.zoom() ignores the
|
|
7
|
+
* cursor position and always zooms toward the center. This controller patches
|
|
8
|
+
* that behavior by overriding the ControllerState's zoom method to pan the
|
|
9
|
+
* globe under the cursor while zooming, so zoom-to-cursor works the same way it
|
|
10
|
+
* does for the 2D MapController.
|
|
11
|
+
*/
|
|
12
|
+
declare class ZoomToCursorGlobeController extends GlobeController {
|
|
13
|
+
constructor(...args: any[]);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Custom GlobeView that uses zoom-to-cursor controller behavior.
|
|
17
|
+
*/
|
|
18
|
+
export declare class KeplerGlobeView extends DeckGlobeView {
|
|
19
|
+
constructor(props?: any);
|
|
20
|
+
get ControllerType(): typeof ZoomToCursorGlobeController;
|
|
21
|
+
getViewportType(): any;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.KeplerGlobeView = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _readOnlyError2 = _interopRequireDefault(require("@babel/runtime/helpers/readOnlyError"));
|
|
11
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
14
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
var DeckCore = _interopRequireWildcard(require("@deck.gl/core"));
|
|
18
|
+
var _core2 = require("@math.gl/core");
|
|
19
|
+
var _constants = require("@kepler.gl/constants");
|
|
20
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
21
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
24
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
25
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT
|
|
26
|
+
// Copyright contributors to the kepler.gl project
|
|
27
|
+
// deck.gl exposes GlobeView / GlobeController as experimental, underscore-prefixed
|
|
28
|
+
// members. Their named type bindings aren't reliably resolvable through the
|
|
29
|
+
// package barrel under this project's module resolution, so we pull them off the
|
|
30
|
+
// namespace with a loose type. Runtime behavior is unchanged.
|
|
31
|
+
var DeckGlobeView = DeckCore._GlobeView;
|
|
32
|
+
var GlobeController = DeckCore._GlobeController;
|
|
33
|
+
var DeckGlobeViewport = DeckCore._GlobeViewport;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Latitude-based zoom adjustment used by deck.gl's GlobeViewport, replicated
|
|
37
|
+
* here so our custom `_constrainZoom` matches deck.gl's coordinate math.
|
|
38
|
+
* See @deck.gl/core globe-viewport.js `zoomAdjust`.
|
|
39
|
+
*/
|
|
40
|
+
function zoomAdjust(latitude) {
|
|
41
|
+
return Math.log2(Math.PI * Math.cos(latitude * Math.PI / 180));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Custom GlobeController that restores zoom-to-cursor behavior.
|
|
46
|
+
*
|
|
47
|
+
* In deck.gl 9.x, the default GlobeController's GlobeState.zoom() ignores the
|
|
48
|
+
* cursor position and always zooms toward the center. This controller patches
|
|
49
|
+
* that behavior by overriding the ControllerState's zoom method to pan the
|
|
50
|
+
* globe under the cursor while zooming, so zoom-to-cursor works the same way it
|
|
51
|
+
* does for the 2D MapController.
|
|
52
|
+
*/
|
|
53
|
+
var ZoomToCursorGlobeController = /*#__PURE__*/function (_GlobeController) {
|
|
54
|
+
function ZoomToCursorGlobeController() {
|
|
55
|
+
var _this;
|
|
56
|
+
(0, _classCallCheck2["default"])(this, ZoomToCursorGlobeController);
|
|
57
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
58
|
+
args[_key] = arguments[_key];
|
|
59
|
+
}
|
|
60
|
+
_this = _callSuper(this, ZoomToCursorGlobeController, [].concat(args));
|
|
61
|
+
var OriginalGlobeState = _this.ControllerState;
|
|
62
|
+
|
|
63
|
+
// Create patched GlobeState that supports zoom-to-cursor
|
|
64
|
+
_this.ControllerState = /*#__PURE__*/function (_OriginalGlobeState) {
|
|
65
|
+
function PatchedGlobeState() {
|
|
66
|
+
(0, _classCallCheck2["default"])(this, PatchedGlobeState);
|
|
67
|
+
return _callSuper(this, PatchedGlobeState, arguments);
|
|
68
|
+
}
|
|
69
|
+
(0, _inherits2["default"])(PatchedGlobeState, _OriginalGlobeState);
|
|
70
|
+
return (0, _createClass2["default"])(PatchedGlobeState, [{
|
|
71
|
+
key: "applyConstraints",
|
|
72
|
+
value:
|
|
73
|
+
// Constrain the camera target to a latitude band around the equator so the
|
|
74
|
+
// view can't be centered on the poles. deck.gl's applyConstraints clamps
|
|
75
|
+
// latitude to ~85°, which still lets the camera look straight at a pole.
|
|
76
|
+
function applyConstraints(props) {
|
|
77
|
+
var result = _superPropGet(PatchedGlobeState, "applyConstraints", this, 1)(props);
|
|
78
|
+
var clampedLatitude = (0, _core2.clamp)(result.latitude, -_constants.GLOBE_MAX_LATITUDE, _constants.GLOBE_MAX_LATITUDE);
|
|
79
|
+
if (clampedLatitude !== result.latitude) {
|
|
80
|
+
// deck.gl couples zoom to latitude via zoomAdjust; when we further
|
|
81
|
+
// clamp latitude, re-apply the same delta so zoom stays consistent.
|
|
82
|
+
result.zoom += zoomAdjust(clampedLatitude) - zoomAdjust(result.latitude);
|
|
83
|
+
result.latitude = clampedLatitude;
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// deck.gl's GlobeState._constrainZoom derives a minimum zoom from `maxBounds`
|
|
89
|
+
// that forces the globe to fill the viewport. That bounds-based minimum
|
|
90
|
+
// (~3 for a typical window) overrides any configured `minZoom`, so the user
|
|
91
|
+
// can never zoom out far enough to see the whole globe small on screen.
|
|
92
|
+
// Override it to honor only the configured minZoom/maxZoom (plus the same
|
|
93
|
+
// latitude adjustment deck.gl uses), ignoring the bounds-based floor.
|
|
94
|
+
}, {
|
|
95
|
+
key: "_constrainZoom",
|
|
96
|
+
value: function _constrainZoom(zoom, props) {
|
|
97
|
+
props = props || this.getViewportProps();
|
|
98
|
+
var _props = props,
|
|
99
|
+
latitude = _props.latitude,
|
|
100
|
+
maxZoom = _props.maxZoom;
|
|
101
|
+
var _props2 = props,
|
|
102
|
+
minZoom = _props2.minZoom;
|
|
103
|
+
if (minZoom === undefined || minZoom === null) {
|
|
104
|
+
minZoom = 0;
|
|
105
|
+
}
|
|
106
|
+
var ZOOM0 = zoomAdjust(0);
|
|
107
|
+
var zoomAdjustment = zoomAdjust(latitude) - ZOOM0;
|
|
108
|
+
return (0, _core2.clamp)(zoom, minZoom + zoomAdjustment, maxZoom + zoomAdjustment);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Exact zoom-to-cursor. deck.gl 9.x's GlobeController does not keep the point
|
|
112
|
+
// under the cursor fixed while zooming, in two ways we work around here:
|
|
113
|
+
// 1. Its GlobeState.zoom() ignores the cursor and zooms toward the center.
|
|
114
|
+
// 2. Its GlobeViewport.panByPosition is a lossy, *linearized* 3-arg
|
|
115
|
+
// rotation (longitude += (0.25/scale)*(startPixel-pixel), re-derives
|
|
116
|
+
// zoom). Using it per wheel tick accumulates error, so after a long
|
|
117
|
+
// continuous zoom the point ends up noticeably shifted from what was
|
|
118
|
+
// originally under the cursor.
|
|
119
|
+
// The recenter below is an *exact absolute* translation: unproject the
|
|
120
|
+
// cursor pixel in the zoomed viewport to get the geo point currently under it,
|
|
121
|
+
// then shift the center by (anchor - thatPoint). No zoom coupling, no
|
|
122
|
+
// rotationSpeed, and it applies to zoom-in and zoom-out symmetrically, so
|
|
123
|
+
// there is no per-tick accumulated drift.
|
|
124
|
+
}, {
|
|
125
|
+
key: "zoom",
|
|
126
|
+
value: function zoom(_ref) {
|
|
127
|
+
var pos = _ref.pos,
|
|
128
|
+
startPos = _ref.startPos,
|
|
129
|
+
scale = _ref.scale;
|
|
130
|
+
var _getState = this.getState(),
|
|
131
|
+
startZoom = _getState.startZoom,
|
|
132
|
+
startZoomLngLat = _getState.startZoomLngLat;
|
|
133
|
+
if (!startZoomLngLat) {
|
|
134
|
+
// Discrete (wheel) zoom: re-derive the anchor each tick from the current
|
|
135
|
+
// view. For pinch, startZoom/startZoomLngLat are set once by zoomStart and
|
|
136
|
+
// preserved across ticks by _getUpdatedState (which spreads getState()).
|
|
137
|
+
startZoom = this.getViewportProps().zoom;
|
|
138
|
+
startZoomLngLat = this._unproject(startPos) || this._unproject(pos);
|
|
139
|
+
}
|
|
140
|
+
if (!startZoomLngLat) {
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
var currentProps = this.getViewportProps();
|
|
144
|
+
var zoom = this._constrainZoom(startZoom + Math.log2(scale));
|
|
145
|
+
|
|
146
|
+
// Zoom-out (scale < 1): exact cursor anchoring is unstable on a globe (the
|
|
147
|
+
// geo point under an off-center pixel moves non-linearly near the limb and
|
|
148
|
+
// drags the view toward the poles). Instead, gently steer the CENTER toward
|
|
149
|
+
// the geo location under the cursor — the map recenters on the cursor as you
|
|
150
|
+
// zoom out, similar in spirit to zoom-in, but without the pole-ward spin.
|
|
151
|
+
if (scale < 1) {
|
|
152
|
+
var cursorLngLat = startZoomLngLat;
|
|
153
|
+
var cursorValid = Array.isArray(cursorLngLat) && Number.isFinite(cursorLngLat[0]) && Number.isFinite(cursorLngLat[1]);
|
|
154
|
+
if (!cursorValid) {
|
|
155
|
+
return this._getUpdatedState({
|
|
156
|
+
zoom: zoom
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Fraction of the way to move the center toward the cursor per tick.
|
|
161
|
+
// Scales with how much we zoomed out this tick so a bigger step moves
|
|
162
|
+
// more. Clamped so a single large tick can't overshoot.
|
|
163
|
+
var RECENTER_STRENGTH = 0.11;
|
|
164
|
+
var t = Math.min(1, (1 - scale) * RECENTER_STRENGTH);
|
|
165
|
+
|
|
166
|
+
// Shortest-path longitude interpolation (handle antimeridian wrap).
|
|
167
|
+
var dLng = cursorLngLat[0] - currentProps.longitude;
|
|
168
|
+
if (dLng > 180) dLng -= 360;
|
|
169
|
+
if (dLng < -180) dLng += 360;
|
|
170
|
+
return this._getUpdatedState({
|
|
171
|
+
zoom: zoom,
|
|
172
|
+
longitude: currentProps.longitude + dLng * t,
|
|
173
|
+
latitude: currentProps.latitude + (cursorLngLat[1] - currentProps.latitude) * t
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
var zoomedViewport = this.makeViewport(_objectSpread(_objectSpread({}, currentProps), {}, {
|
|
177
|
+
zoom: zoom
|
|
178
|
+
}));
|
|
179
|
+
|
|
180
|
+
// Anchor the grabbed geo point back under the cursor:
|
|
181
|
+
// fromPosition = viewport.unproject(pos) // geo point now under the cursor
|
|
182
|
+
// longitude = startZoomLngLat[0] - fromPosition[0] + viewport.longitude
|
|
183
|
+
// latitude = startZoomLngLat[1] - fromPosition[1] + viewport.latitude
|
|
184
|
+
var fromPosition = zoomedViewport.unproject(pos);
|
|
185
|
+
|
|
186
|
+
// Guard: unproject can return NaN/undefined for a pixel off the sphere
|
|
187
|
+
// silhouette; in that case just apply the new zoom about the center.
|
|
188
|
+
var anchorValid = Array.isArray(fromPosition) && Number.isFinite(fromPosition[0]) && Number.isFinite(fromPosition[1]);
|
|
189
|
+
if (!anchorValid) {
|
|
190
|
+
return this._getUpdatedState({
|
|
191
|
+
zoom: zoom
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return this._getUpdatedState({
|
|
195
|
+
zoom: zoom,
|
|
196
|
+
longitude: startZoomLngLat[0] - fromPosition[0] + zoomedViewport.longitude,
|
|
197
|
+
latitude: startZoomLngLat[1] - fromPosition[1] + zoomedViewport.latitude
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Clear the persisted pinch anchor at gesture end.
|
|
202
|
+
}, {
|
|
203
|
+
key: "zoomEnd",
|
|
204
|
+
value: function zoomEnd() {
|
|
205
|
+
return this._getUpdatedState({
|
|
206
|
+
startZoom: null,
|
|
207
|
+
startZoomLngLat: null
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Exact, cursor-anchored pan: the geo point grabbed on mousedown stays
|
|
212
|
+
// locked under the cursor for the whole drag.
|
|
213
|
+
//
|
|
214
|
+
// deck.gl 9.x's GlobeController pans with a *linearized, center-anchored*
|
|
215
|
+
// rotation (GlobeViewport.panByPosition([lng,lat,zoom], pixel, startPixel):
|
|
216
|
+
// longitude += (0.25/scale)*(startPixel-pixel)). Because the anchor is the
|
|
217
|
+
// view CENTER rather than the grabbed point, the first drag frame snaps the
|
|
218
|
+
// center to satisfy the linear approximation, producing the visible "jump to
|
|
219
|
+
// the side/up" at the start of a pan (most noticeable at high zoom), after
|
|
220
|
+
// which incremental deltas track fine. The exact anchor below removes that
|
|
221
|
+
// first-frame snap.
|
|
222
|
+
}, {
|
|
223
|
+
key: "panStart",
|
|
224
|
+
value: function panStart(_ref2) {
|
|
225
|
+
var pos = _ref2.pos;
|
|
226
|
+
return this._getUpdatedState({
|
|
227
|
+
startPanLngLat: this._unproject(pos)
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}, {
|
|
231
|
+
key: "pan",
|
|
232
|
+
value: function pan(_ref3) {
|
|
233
|
+
var pos = _ref3.pos,
|
|
234
|
+
startPos = _ref3.startPos;
|
|
235
|
+
var startPanLngLat = this.getState().startPanLngLat || this._unproject(startPos);
|
|
236
|
+
if (!startPanLngLat) {
|
|
237
|
+
return this;
|
|
238
|
+
}
|
|
239
|
+
var props = this.getViewportProps();
|
|
240
|
+
var viewport = this.makeViewport(props);
|
|
241
|
+
var fromPosition = viewport.unproject(pos);
|
|
242
|
+
|
|
243
|
+
// Guard: pixels off the sphere silhouette unproject to NaN/undefined.
|
|
244
|
+
var valid = Array.isArray(fromPosition) && Number.isFinite(fromPosition[0]) && Number.isFinite(fromPosition[1]);
|
|
245
|
+
if (!valid) {
|
|
246
|
+
return this;
|
|
247
|
+
}
|
|
248
|
+
var longitude = startPanLngLat[0] - fromPosition[0] + props.longitude;
|
|
249
|
+
var latitude = startPanLngLat[1] - fromPosition[1] + props.latitude;
|
|
250
|
+
latitude = (0, _core2.clamp)(latitude, -_constants.GLOBE_MAX_LATITUDE, _constants.GLOBE_MAX_LATITUDE);
|
|
251
|
+
|
|
252
|
+
// deck.gl 9's GlobeViewport scale = 2^(zoom - zoomAdjust(latitude)), so a
|
|
253
|
+
// constant zoom would make the globe grow on screen as the center moves
|
|
254
|
+
// toward the poles. Re-couple zoom to the new latitude (as deck.gl 9's own
|
|
255
|
+
// pan does) to keep the on-screen scale — and thus tile LOD — constant.
|
|
256
|
+
var visualZoom = props.zoom - zoomAdjust(props.latitude);
|
|
257
|
+
var zoom = visualZoom + zoomAdjust(latitude);
|
|
258
|
+
return this._getUpdatedState({
|
|
259
|
+
longitude: longitude,
|
|
260
|
+
latitude: latitude,
|
|
261
|
+
zoom: zoom
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}, {
|
|
265
|
+
key: "panEnd",
|
|
266
|
+
value: function panEnd() {
|
|
267
|
+
return this._getUpdatedState({
|
|
268
|
+
startPanLngLat: null
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}]);
|
|
272
|
+
}(OriginalGlobeState);
|
|
273
|
+
return _this;
|
|
274
|
+
}
|
|
275
|
+
(0, _inherits2["default"])(ZoomToCursorGlobeController, _GlobeController);
|
|
276
|
+
return (0, _createClass2["default"])(ZoomToCursorGlobeController);
|
|
277
|
+
}(GlobeController);
|
|
278
|
+
/**
|
|
279
|
+
* Custom GlobeView that uses zoom-to-cursor controller behavior.
|
|
280
|
+
*/
|
|
281
|
+
var KeplerGlobeView = exports.KeplerGlobeView = /*#__PURE__*/function (_DeckGlobeView) {
|
|
282
|
+
// Forward constructor props to deck.gl's GlobeView. Declared explicitly because
|
|
283
|
+
// the base class is loosely typed (see DeckGlobeView above), which would
|
|
284
|
+
// otherwise surface a parameterless constructor to callers.
|
|
285
|
+
function KeplerGlobeView(props) {
|
|
286
|
+
(0, _classCallCheck2["default"])(this, KeplerGlobeView);
|
|
287
|
+
return _callSuper(this, KeplerGlobeView, [props]);
|
|
288
|
+
}
|
|
289
|
+
(0, _inherits2["default"])(KeplerGlobeView, _DeckGlobeView);
|
|
290
|
+
return (0, _createClass2["default"])(KeplerGlobeView, [{
|
|
291
|
+
key: "ControllerType",
|
|
292
|
+
get: function get() {
|
|
293
|
+
return ZoomToCursorGlobeController;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// deck.gl 9's GlobeView.getViewportType() swaps the viewport class based on zoom:
|
|
297
|
+
// `return viewState.zoom > 12 ? WebMercatorViewport : GlobeViewport;`
|
|
298
|
+
// Crossing zoom 12 therefore recomputes tile bounds with completely different
|
|
299
|
+
// projection math (globe vs flat mercator). That makes deck's TileLayer/MVTLayer
|
|
300
|
+
// reselect tiles inconsistently across the boundary — mixed LODs (e.g. a z4 tile
|
|
301
|
+
// next to z11), a visible "flicker" at 12, and tiles that get dropped and stick
|
|
302
|
+
// as black/empty quads (most often crossing 12 on the way *out*).
|
|
303
|
+
//
|
|
304
|
+
// Force GlobeViewport at every zoom to eliminate the z=12 viewport swap so tile
|
|
305
|
+
// selection stays consistent. The trade-off is that zoom > 12 now uses float32
|
|
306
|
+
// globe precision (deck's documented "no high-precision rendering > 12" limit)
|
|
307
|
+
// instead of switching to mercator — far preferable to the black quads.
|
|
308
|
+
}, {
|
|
309
|
+
key: "getViewportType",
|
|
310
|
+
value: function getViewportType() {
|
|
311
|
+
return DeckGlobeViewport;
|
|
312
|
+
}
|
|
313
|
+
}]);
|
|
314
|
+
}(DeckGlobeView);
|
|
315
|
+
KeplerGlobeView.displayName = 'KeplerGlobeView';
|
|
316
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNrQ29yZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb3JlMiIsIl9jb25zdGFudHMiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIl9nZXRQcm90b3R5cGVPZjIiLCJwcm90b3R5cGUiLCJfY2FsbFN1cGVyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiRGVja0dsb2JlVmlldyIsIl9HbG9iZVZpZXciLCJHbG9iZUNvbnRyb2xsZXIiLCJfR2xvYmVDb250cm9sbGVyIiwiRGVja0dsb2JlVmlld3BvcnQiLCJfR2xvYmVWaWV3cG9ydCIsInpvb21BZGp1c3QiLCJsYXRpdHVkZSIsIk1hdGgiLCJsb2cyIiwiUEkiLCJjb3MiLCJab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIk9yaWdpbmFsR2xvYmVTdGF0ZSIsIkNvbnRyb2xsZXJTdGF0ZSIsIl9PcmlnaW5hbEdsb2JlU3RhdGUiLCJQYXRjaGVkR2xvYmVTdGF0ZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJhcHBseUNvbnN0cmFpbnRzIiwicHJvcHMiLCJyZXN1bHQiLCJjbGFtcGVkTGF0aXR1ZGUiLCJjbGFtcCIsIkdMT0JFX01BWF9MQVRJVFVERSIsInpvb20iLCJfY29uc3RyYWluWm9vbSIsImdldFZpZXdwb3J0UHJvcHMiLCJfcHJvcHMiLCJtYXhab29tIiwiX3Byb3BzMiIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJaT09NMCIsInpvb21BZGp1c3RtZW50IiwiX3JlZiIsInBvcyIsInN0YXJ0UG9zIiwic2NhbGUiLCJfZ2V0U3RhdGUiLCJnZXRTdGF0ZSIsInN0YXJ0Wm9vbSIsInN0YXJ0Wm9vbUxuZ0xhdCIsIl91bnByb2plY3QiLCJjdXJyZW50UHJvcHMiLCJjdXJzb3JMbmdMYXQiLCJjdXJzb3JWYWxpZCIsImlzQXJyYXkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIl9nZXRVcGRhdGVkU3RhdGUiLCJSRUNFTlRFUl9TVFJFTkdUSCIsIm1pbiIsImRMbmciLCJsb25naXR1ZGUiLCJ6b29tZWRWaWV3cG9ydCIsIm1ha2VWaWV3cG9ydCIsImZyb21Qb3NpdGlvbiIsInVucHJvamVjdCIsImFuY2hvclZhbGlkIiwiem9vbUVuZCIsInBhblN0YXJ0IiwiX3JlZjIiLCJzdGFydFBhbkxuZ0xhdCIsInBhbiIsIl9yZWYzIiwidmlld3BvcnQiLCJ2YWxpZCIsInZpc3VhbFpvb20iLCJwYW5FbmQiLCJLZXBsZXJHbG9iZVZpZXciLCJleHBvcnRzIiwiX0RlY2tHbG9iZVZpZXciLCJnZXRWaWV3cG9ydFR5cGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9nbG9iZS12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIERlY2tDb3JlIGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtjbGFtcH0gZnJvbSAnQG1hdGguZ2wvY29yZSc7XG5pbXBvcnQge0dMT0JFX01BWF9MQVRJVFVERX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG4vLyBkZWNrLmdsIGV4cG9zZXMgR2xvYmVWaWV3IC8gR2xvYmVDb250cm9sbGVyIGFzIGV4cGVyaW1lbnRhbCwgdW5kZXJzY29yZS1wcmVmaXhlZFxuLy8gbWVtYmVycy4gVGhlaXIgbmFtZWQgdHlwZSBiaW5kaW5ncyBhcmVuJ3QgcmVsaWFibHkgcmVzb2x2YWJsZSB0aHJvdWdoIHRoZVxuLy8gcGFja2FnZSBiYXJyZWwgdW5kZXIgdGhpcyBwcm9qZWN0J3MgbW9kdWxlIHJlc29sdXRpb24sIHNvIHdlIHB1bGwgdGhlbSBvZmYgdGhlXG4vLyBuYW1lc3BhY2Ugd2l0aCBhIGxvb3NlIHR5cGUuIFJ1bnRpbWUgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuY29uc3QgRGVja0dsb2JlVmlldyA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXcgYXMgYW55O1xuY29uc3QgR2xvYmVDb250cm9sbGVyID0gKERlY2tDb3JlIGFzIGFueSkuX0dsb2JlQ29udHJvbGxlciBhcyBhbnk7XG5jb25zdCBEZWNrR2xvYmVWaWV3cG9ydCA9IChEZWNrQ29yZSBhcyBhbnkpLl9HbG9iZVZpZXdwb3J0IGFzIGFueTtcblxuLyoqXG4gKiBMYXRpdHVkZS1iYXNlZCB6b29tIGFkanVzdG1lbnQgdXNlZCBieSBkZWNrLmdsJ3MgR2xvYmVWaWV3cG9ydCwgcmVwbGljYXRlZFxuICogaGVyZSBzbyBvdXIgY3VzdG9tIGBfY29uc3RyYWluWm9vbWAgbWF0Y2hlcyBkZWNrLmdsJ3MgY29vcmRpbmF0ZSBtYXRoLlxuICogU2VlIEBkZWNrLmdsL2NvcmUgZ2xvYmUtdmlld3BvcnQuanMgYHpvb21BZGp1c3RgLlxuICovXG5mdW5jdGlvbiB6b29tQWRqdXN0KGxhdGl0dWRlOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5sb2cyKE1hdGguUEkgKiBNYXRoLmNvcygobGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpO1xufVxuXG4vKipcbiAqIEN1c3RvbSBHbG9iZUNvbnRyb2xsZXIgdGhhdCByZXN0b3JlcyB6b29tLXRvLWN1cnNvciBiZWhhdmlvci5cbiAqXG4gKiBJbiBkZWNrLmdsIDkueCwgdGhlIGRlZmF1bHQgR2xvYmVDb250cm9sbGVyJ3MgR2xvYmVTdGF0ZS56b29tKCkgaWdub3JlcyB0aGVcbiAqIGN1cnNvciBwb3NpdGlvbiBhbmQgYWx3YXlzIHpvb21zIHRvd2FyZCB0aGUgY2VudGVyLiBUaGlzIGNvbnRyb2xsZXIgcGF0Y2hlc1xuICogdGhhdCBiZWhhdmlvciBieSBvdmVycmlkaW5nIHRoZSBDb250cm9sbGVyU3RhdGUncyB6b29tIG1ldGhvZCB0byBwYW4gdGhlXG4gKiBnbG9iZSB1bmRlciB0aGUgY3Vyc29yIHdoaWxlIHpvb21pbmcsIHNvIHpvb20tdG8tY3Vyc29yIHdvcmtzIHRoZSBzYW1lIHdheSBpdFxuICogZG9lcyBmb3IgdGhlIDJEIE1hcENvbnRyb2xsZXIuXG4gKi9cbmNsYXNzIFpvb21Ub0N1cnNvckdsb2JlQ29udHJvbGxlciBleHRlbmRzIEdsb2JlQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgc3VwZXIoLi4uYXJncyk7XG4gICAgY29uc3QgT3JpZ2luYWxHbG9iZVN0YXRlID0gdGhpcy5Db250cm9sbGVyU3RhdGU7XG5cbiAgICAvLyBDcmVhdGUgcGF0Y2hlZCBHbG9iZVN0YXRlIHRoYXQgc3VwcG9ydHMgem9vbS10by1jdXJzb3JcbiAgICB0aGlzLkNvbnRyb2xsZXJTdGF0ZSA9IGNsYXNzIFBhdGNoZWRHbG9iZVN0YXRlIGV4dGVuZHMgT3JpZ2luYWxHbG9iZVN0YXRlIHtcbiAgICAgIC8vIENvbnN0cmFpbiB0aGUgY2FtZXJhIHRhcmdldCB0byBhIGxhdGl0dWRlIGJhbmQgYXJvdW5kIHRoZSBlcXVhdG9yIHNvIHRoZVxuICAgICAgLy8gdmlldyBjYW4ndCBiZSBjZW50ZXJlZCBvbiB0aGUgcG9sZXMuIGRlY2suZ2wncyBhcHBseUNvbnN0cmFpbnRzIGNsYW1wc1xuICAgICAgLy8gbGF0aXR1ZGUgdG8gfjg1wrAsIHdoaWNoIHN0aWxsIGxldHMgdGhlIGNhbWVyYSBsb29rIHN0cmFpZ2h0IGF0IGEgcG9sZS5cbiAgICAgIGFwcGx5Q29uc3RyYWludHMocHJvcHM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoc3VwZXIuYXBwbHlDb25zdHJhaW50cyBhcyBhbnkpKHByb3BzKTtcbiAgICAgICAgY29uc3QgY2xhbXBlZExhdGl0dWRlID0gY2xhbXAocmVzdWx0LmxhdGl0dWRlLCAtR0xPQkVfTUFYX0xBVElUVURFLCBHTE9CRV9NQVhfTEFUSVRVREUpO1xuICAgICAgICBpZiAoY2xhbXBlZExhdGl0dWRlICE9PSByZXN1bHQubGF0aXR1ZGUpIHtcbiAgICAgICAgICAvLyBkZWNrLmdsIGNvdXBsZXMgem9vbSB0byBsYXRpdHVkZSB2aWEgem9vbUFkanVzdDsgd2hlbiB3ZSBmdXJ0aGVyXG4gICAgICAgICAgLy8gY2xhbXAgbGF0aXR1ZGUsIHJlLWFwcGx5IHRoZSBzYW1lIGRlbHRhIHNvIHpvb20gc3RheXMgY29uc2lzdGVudC5cbiAgICAgICAgICByZXN1bHQuem9vbSArPSB6b29tQWRqdXN0KGNsYW1wZWRMYXRpdHVkZSkgLSB6b29tQWRqdXN0KHJlc3VsdC5sYXRpdHVkZSk7XG4gICAgICAgICAgcmVzdWx0LmxhdGl0dWRlID0gY2xhbXBlZExhdGl0dWRlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2suZ2wncyBHbG9iZVN0YXRlLl9jb25zdHJhaW5ab29tIGRlcml2ZXMgYSBtaW5pbXVtIHpvb20gZnJvbSBgbWF4Qm91bmRzYFxuICAgICAgLy8gdGhhdCBmb3JjZXMgdGhlIGdsb2JlIHRvIGZpbGwgdGhlIHZpZXdwb3J0LiBUaGF0IGJvdW5kcy1iYXNlZCBtaW5pbXVtXG4gICAgICAvLyAofjMgZm9yIGEgdHlwaWNhbCB3aW5kb3cpIG92ZXJyaWRlcyBhbnkgY29uZmlndXJlZCBgbWluWm9vbWAsIHNvIHRoZSB1c2VyXG4gICAgICAvLyBjYW4gbmV2ZXIgem9vbSBvdXQgZmFyIGVub3VnaCB0byBzZWUgdGhlIHdob2xlIGdsb2JlIHNtYWxsIG9uIHNjcmVlbi5cbiAgICAgIC8vIE92ZXJyaWRlIGl0IHRvIGhvbm9yIG9ubHkgdGhlIGNvbmZpZ3VyZWQgbWluWm9vbS9tYXhab29tIChwbHVzIHRoZSBzYW1lXG4gICAgICAvLyBsYXRpdHVkZSBhZGp1c3RtZW50IGRlY2suZ2wgdXNlcyksIGlnbm9yaW5nIHRoZSBib3VuZHMtYmFzZWQgZmxvb3IuXG4gICAgICBfY29uc3RyYWluWm9vbSh6b29tOiBudW1iZXIsIHByb3BzPzogYW55KSB7XG4gICAgICAgIHByb3BzID0gcHJvcHMgfHwgKHRoaXMgYXMgYW55KS5nZXRWaWV3cG9ydFByb3BzKCk7XG4gICAgICAgIGNvbnN0IHtsYXRpdHVkZSwgbWF4Wm9vbX0gPSBwcm9wcztcbiAgICAgICAgbGV0IHttaW5ab29tfSA9IHByb3BzO1xuICAgICAgICBpZiAobWluWm9vbSA9PT0gdW5kZWZpbmVkIHx8IG1pblpvb20gPT09IG51bGwpIHtcbiAgICAgICAgICBtaW5ab29tID0gMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBaT09NMCA9IHpvb21BZGp1c3QoMCk7XG4gICAgICAgIGNvbnN0IHpvb21BZGp1c3RtZW50ID0gem9vbUFkanVzdChsYXRpdHVkZSkgLSBaT09NMDtcbiAgICAgICAgcmV0dXJuIGNsYW1wKHpvb20sIG1pblpvb20gKyB6b29tQWRqdXN0bWVudCwgbWF4Wm9vbSArIHpvb21BZGp1c3RtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gRXhhY3Qgem9vbS10by1jdXJzb3IuIGRlY2suZ2wgOS54J3MgR2xvYmVDb250cm9sbGVyIGRvZXMgbm90IGtlZXAgdGhlIHBvaW50XG4gICAgICAvLyB1bmRlciB0aGUgY3Vyc29yIGZpeGVkIHdoaWxlIHpvb21pbmcsIGluIHR3byB3YXlzIHdlIHdvcmsgYXJvdW5kIGhlcmU6XG4gICAgICAvLyAgIDEuIEl0cyBHbG9iZVN0YXRlLnpvb20oKSBpZ25vcmVzIHRoZSBjdXJzb3IgYW5kIHpvb21zIHRvd2FyZCB0aGUgY2VudGVyLlxuICAgICAgLy8gICAyLiBJdHMgR2xvYmVWaWV3cG9ydC5wYW5CeVBvc2l0aW9uIGlzIGEgbG9zc3ksICpsaW5lYXJpemVkKiAzLWFyZ1xuICAgICAgLy8gICAgICByb3RhdGlvbiAobG9uZ2l0dWRlICs9ICgwLjI1L3NjYWxlKSooc3RhcnRQaXhlbC1waXhlbCksIHJlLWRlcml2ZXNcbiAgICAgIC8vICAgICAgem9vbSkuIFVzaW5nIGl0IHBlciB3aGVlbCB0aWNrIGFjY3VtdWxhdGVzIGVycm9yLCBzbyBhZnRlciBhIGxvbmdcbiAgICAgIC8vICAgICAgY29udGludW91cyB6b29tIHRoZSBwb2ludCBlbmRzIHVwIG5vdGljZWFibHkgc2hpZnRlZCBmcm9tIHdoYXQgd2FzXG4gICAgICAvLyAgICAgIG9yaWdpbmFsbHkgdW5kZXIgdGhlIGN1cnNvci5cbiAgICAgIC8vIFRoZSByZWNlbnRlciBiZWxvdyBpcyBhbiAqZXhhY3QgYWJzb2x1dGUqIHRyYW5zbGF0aW9uOiB1bnByb2plY3QgdGhlXG4gICAgICAvLyBjdXJzb3IgcGl4ZWwgaW4gdGhlIHpvb21lZCB2aWV3cG9ydCB0byBnZXQgdGhlIGdlbyBwb2ludCBjdXJyZW50bHkgdW5kZXIgaXQsXG4gICAgICAvLyB0aGVuIHNoaWZ0IHRoZSBjZW50ZXIgYnkgKGFuY2hvciAtIHRoYXRQb2ludCkuIE5vIHpvb20gY291cGxpbmcsIG5vXG4gICAgICAvLyByb3RhdGlvblNwZWVkLCBhbmQgaXQgYXBwbGllcyB0byB6b29tLWluIGFuZCB6b29tLW91dCBzeW1tZXRyaWNhbGx5LCBzb1xuICAgICAgLy8gdGhlcmUgaXMgbm8gcGVyLXRpY2sgYWNjdW11bGF0ZWQgZHJpZnQuXG4gICAgICB6b29tKHtcbiAgICAgICAgcG9zLFxuICAgICAgICBzdGFydFBvcyxcbiAgICAgICAgc2NhbGVcbiAgICAgIH06IHtcbiAgICAgICAgcG9zOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICBzdGFydFBvcz86IFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIHNjYWxlOiBudW1iZXI7XG4gICAgICB9KSB7XG4gICAgICAgIGxldCB7c3RhcnRab29tLCBzdGFydFpvb21MbmdMYXR9ID0gKHRoaXMgYXMgYW55KS5nZXRTdGF0ZSgpO1xuXG4gICAgICAgIGlmICghc3RhcnRab29tTG5nTGF0KSB7XG4gICAgICAgICAgLy8gRGlzY3JldGUgKHdoZWVsKSB6b29tOiByZS1kZXJpdmUgdGhlIGFuY2hvciBlYWNoIHRpY2sgZnJvbSB0aGUgY3VycmVudFxuICAgICAgICAgIC8vIHZpZXcuIEZvciBwaW5jaCwgc3RhcnRab29tL3N0YXJ0Wm9vbUxuZ0xhdCBhcmUgc2V0IG9uY2UgYnkgem9vbVN0YXJ0IGFuZFxuICAgICAgICAgIC8vIHByZXNlcnZlZCBhY3Jvc3MgdGlja3MgYnkgX2dldFVwZGF0ZWRTdGF0ZSAod2hpY2ggc3ByZWFkcyBnZXRTdGF0ZSgpKS5cbiAgICAgICAgICBzdGFydFpvb20gPSAodGhpcyBhcyBhbnkpLmdldFZpZXdwb3J0UHJvcHMoKS56b29tO1xuICAgICAgICAgIHN0YXJ0Wm9vbUxuZ0xhdCA9ICh0aGlzIGFzIGFueSkuX3VucHJvamVjdChzdGFydFBvcykgfHwgKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGFydFpvb21MbmdMYXQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9wcyA9ICh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpO1xuICAgICAgICBjb25zdCB6b29tID0gKHRoaXMgYXMgYW55KS5fY29uc3RyYWluWm9vbShzdGFydFpvb20gKyBNYXRoLmxvZzIoc2NhbGUpKTtcblxuICAgICAgICAvLyBab29tLW91dCAoc2NhbGUgPCAxKTogZXhhY3QgY3Vyc29yIGFuY2hvcmluZyBpcyB1bnN0YWJsZSBvbiBhIGdsb2JlICh0aGVcbiAgICAgICAgLy8gZ2VvIHBvaW50IHVuZGVyIGFuIG9mZi1jZW50ZXIgcGl4ZWwgbW92ZXMgbm9uLWxpbmVhcmx5IG5lYXIgdGhlIGxpbWIgYW5kXG4gICAgICAgIC8vIGRyYWdzIHRoZSB2aWV3IHRvd2FyZCB0aGUgcG9sZXMpLiBJbnN0ZWFkLCBnZW50bHkgc3RlZXIgdGhlIENFTlRFUiB0b3dhcmRcbiAgICAgICAgLy8gdGhlIGdlbyBsb2NhdGlvbiB1bmRlciB0aGUgY3Vyc29yIOKAlCB0aGUgbWFwIHJlY2VudGVycyBvbiB0aGUgY3Vyc29yIGFzIHlvdVxuICAgICAgICAvLyB6b29tIG91dCwgc2ltaWxhciBpbiBzcGlyaXQgdG8gem9vbS1pbiwgYnV0IHdpdGhvdXQgdGhlIHBvbGUtd2FyZCBzcGluLlxuICAgICAgICBpZiAoc2NhbGUgPCAxKSB7XG4gICAgICAgICAgY29uc3QgY3Vyc29yTG5nTGF0ID0gc3RhcnRab29tTG5nTGF0O1xuICAgICAgICAgIGNvbnN0IGN1cnNvclZhbGlkID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY3Vyc29yTG5nTGF0KSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzRmluaXRlKGN1cnNvckxuZ0xhdFswXSkgJiZcbiAgICAgICAgICAgIE51bWJlci5pc0Zpbml0ZShjdXJzb3JMbmdMYXRbMV0pO1xuICAgICAgICAgIGlmICghY3Vyc29yVmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe3pvb219KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGcmFjdGlvbiBvZiB0aGUgd2F5IHRvIG1vdmUgdGhlIGNlbnRlciB0b3dhcmQgdGhlIGN1cnNvciBwZXIgdGljay5cbiAgICAgICAgICAvLyBTY2FsZXMgd2l0aCBob3cgbXVjaCB3ZSB6b29tZWQgb3V0IHRoaXMgdGljayBzbyBhIGJpZ2dlciBzdGVwIG1vdmVzXG4gICAgICAgICAgLy8gbW9yZS4gQ2xhbXBlZCBzbyBhIHNpbmdsZSBsYXJnZSB0aWNrIGNhbid0IG92ZXJzaG9vdC5cbiAgICAgICAgICBjb25zdCBSRUNFTlRFUl9TVFJFTkdUSCA9IDAuMTE7XG4gICAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKDEsICgxIC0gc2NhbGUpICogUkVDRU5URVJfU1RSRU5HVEgpO1xuXG4gICAgICAgICAgLy8gU2hvcnRlc3QtcGF0aCBsb25naXR1ZGUgaW50ZXJwb2xhdGlvbiAoaGFuZGxlIGFudGltZXJpZGlhbiB3cmFwKS5cbiAgICAgICAgICBsZXQgZExuZyA9IGN1cnNvckxuZ0xhdFswXSAtIGN1cnJlbnRQcm9wcy5sb25naXR1ZGU7XG4gICAgICAgICAgaWYgKGRMbmcgPiAxODApIGRMbmcgLT0gMzYwO1xuICAgICAgICAgIGlmIChkTG5nIDwgLTE4MCkgZExuZyArPSAzNjA7XG5cbiAgICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtcbiAgICAgICAgICAgIHpvb20sXG4gICAgICAgICAgICBsb25naXR1ZGU6IGN1cnJlbnRQcm9wcy5sb25naXR1ZGUgKyBkTG5nICogdCxcbiAgICAgICAgICAgIGxhdGl0dWRlOiBjdXJyZW50UHJvcHMubGF0aXR1ZGUgKyAoY3Vyc29yTG5nTGF0WzFdIC0gY3VycmVudFByb3BzLmxhdGl0dWRlKSAqIHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHpvb21lZFZpZXdwb3J0ID0gKHRoaXMgYXMgYW55KS5tYWtlVmlld3BvcnQoe1xuICAgICAgICAgIC4uLmN1cnJlbnRQcm9wcyxcbiAgICAgICAgICB6b29tXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFuY2hvciB0aGUgZ3JhYmJlZCBnZW8gcG9pbnQgYmFjayB1bmRlciB0aGUgY3Vyc29yOlxuICAgICAgICAvLyAgIGZyb21Qb3NpdGlvbiA9IHZpZXdwb3J0LnVucHJvamVjdChwb3MpICAgLy8gZ2VvIHBvaW50IG5vdyB1bmRlciB0aGUgY3Vyc29yXG4gICAgICAgIC8vICAgbG9uZ2l0dWRlID0gc3RhcnRab29tTG5nTGF0WzBdIC0gZnJvbVBvc2l0aW9uWzBdICsgdmlld3BvcnQubG9uZ2l0dWRlXG4gICAgICAgIC8vICAgbGF0aXR1ZGUgID0gc3RhcnRab29tTG5nTGF0WzFdIC0gZnJvbVBvc2l0aW9uWzFdICsgdmlld3BvcnQubGF0aXR1ZGVcbiAgICAgICAgY29uc3QgZnJvbVBvc2l0aW9uID0gem9vbWVkVmlld3BvcnQudW5wcm9qZWN0KHBvcyk7XG5cbiAgICAgICAgLy8gR3VhcmQ6IHVucHJvamVjdCBjYW4gcmV0dXJuIE5hTi91bmRlZmluZWQgZm9yIGEgcGl4ZWwgb2ZmIHRoZSBzcGhlcmVcbiAgICAgICAgLy8gc2lsaG91ZXR0ZTsgaW4gdGhhdCBjYXNlIGp1c3QgYXBwbHkgdGhlIG5ldyB6b29tIGFib3V0IHRoZSBjZW50ZXIuXG4gICAgICAgIGNvbnN0IGFuY2hvclZhbGlkID1cbiAgICAgICAgICBBcnJheS5pc0FycmF5KGZyb21Qb3NpdGlvbikgJiZcbiAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUoZnJvbVBvc2l0aW9uWzBdKSAmJlxuICAgICAgICAgIE51bWJlci5pc0Zpbml0ZShmcm9tUG9zaXRpb25bMV0pO1xuICAgICAgICBpZiAoIWFuY2hvclZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7em9vbX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgem9vbSxcbiAgICAgICAgICBsb25naXR1ZGU6IHN0YXJ0Wm9vbUxuZ0xhdFswXSAtIGZyb21Qb3NpdGlvblswXSArIHpvb21lZFZpZXdwb3J0LmxvbmdpdHVkZSxcbiAgICAgICAgICBsYXRpdHVkZTogc3RhcnRab29tTG5nTGF0WzFdIC0gZnJvbVBvc2l0aW9uWzFdICsgem9vbWVkVmlld3BvcnQubGF0aXR1ZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFyIHRoZSBwZXJzaXN0ZWQgcGluY2ggYW5jaG9yIGF0IGdlc3R1cmUgZW5kLlxuICAgICAgem9vbUVuZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7XG4gICAgICAgICAgc3RhcnRab29tOiBudWxsLFxuICAgICAgICAgIHN0YXJ0Wm9vbUxuZ0xhdDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gRXhhY3QsIGN1cnNvci1hbmNob3JlZCBwYW46IHRoZSBnZW8gcG9pbnQgZ3JhYmJlZCBvbiBtb3VzZWRvd24gc3RheXNcbiAgICAgIC8vIGxvY2tlZCB1bmRlciB0aGUgY3Vyc29yIGZvciB0aGUgd2hvbGUgZHJhZy5cbiAgICAgIC8vXG4gICAgICAvLyBkZWNrLmdsIDkueCdzIEdsb2JlQ29udHJvbGxlciBwYW5zIHdpdGggYSAqbGluZWFyaXplZCwgY2VudGVyLWFuY2hvcmVkKlxuICAgICAgLy8gcm90YXRpb24gKEdsb2JlVmlld3BvcnQucGFuQnlQb3NpdGlvbihbbG5nLGxhdCx6b29tXSwgcGl4ZWwsIHN0YXJ0UGl4ZWwpOlxuICAgICAgLy8gbG9uZ2l0dWRlICs9ICgwLjI1L3NjYWxlKSooc3RhcnRQaXhlbC1waXhlbCkpLiBCZWNhdXNlIHRoZSBhbmNob3IgaXMgdGhlXG4gICAgICAvLyB2aWV3IENFTlRFUiByYXRoZXIgdGhhbiB0aGUgZ3JhYmJlZCBwb2ludCwgdGhlIGZpcnN0IGRyYWcgZnJhbWUgc25hcHMgdGhlXG4gICAgICAvLyBjZW50ZXIgdG8gc2F0aXNmeSB0aGUgbGluZWFyIGFwcHJveGltYXRpb24sIHByb2R1Y2luZyB0aGUgdmlzaWJsZSBcImp1bXAgdG9cbiAgICAgIC8vIHRoZSBzaWRlL3VwXCIgYXQgdGhlIHN0YXJ0IG9mIGEgcGFuIChtb3N0IG5vdGljZWFibGUgYXQgaGlnaCB6b29tKSwgYWZ0ZXJcbiAgICAgIC8vIHdoaWNoIGluY3JlbWVudGFsIGRlbHRhcyB0cmFjayBmaW5lLiBUaGUgZXhhY3QgYW5jaG9yIGJlbG93IHJlbW92ZXMgdGhhdFxuICAgICAgLy8gZmlyc3QtZnJhbWUgc25hcC5cbiAgICAgIHBhblN0YXJ0KHtwb3N9OiB7cG9zOiBbbnVtYmVyLCBudW1iZXJdfSkge1xuICAgICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fZ2V0VXBkYXRlZFN0YXRlKHtcbiAgICAgICAgICBzdGFydFBhbkxuZ0xhdDogKHRoaXMgYXMgYW55KS5fdW5wcm9qZWN0KHBvcylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHBhbih7cG9zLCBzdGFydFBvc306IHtwb3M6IFtudW1iZXIsIG51bWJlcl07IHN0YXJ0UG9zPzogW251bWJlciwgbnVtYmVyXX0pIHtcbiAgICAgICAgY29uc3Qgc3RhcnRQYW5MbmdMYXQgPVxuICAgICAgICAgICh0aGlzIGFzIGFueSkuZ2V0U3RhdGUoKS5zdGFydFBhbkxuZ0xhdCB8fCAodGhpcyBhcyBhbnkpLl91bnByb2plY3Qoc3RhcnRQb3MpO1xuICAgICAgICBpZiAoIXN0YXJ0UGFuTG5nTGF0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9wcyA9ICh0aGlzIGFzIGFueSkuZ2V0Vmlld3BvcnRQcm9wcygpO1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9ICh0aGlzIGFzIGFueSkubWFrZVZpZXdwb3J0KHByb3BzKTtcbiAgICAgICAgY29uc3QgZnJvbVBvc2l0aW9uID0gdmlld3BvcnQudW5wcm9qZWN0KHBvcyk7XG5cbiAgICAgICAgLy8gR3VhcmQ6IHBpeGVscyBvZmYgdGhlIHNwaGVyZSBzaWxob3VldHRlIHVucHJvamVjdCB0byBOYU4vdW5kZWZpbmVkLlxuICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgQXJyYXkuaXNBcnJheShmcm9tUG9zaXRpb24pICYmXG4gICAgICAgICAgTnVtYmVyLmlzRmluaXRlKGZyb21Qb3NpdGlvblswXSkgJiZcbiAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUoZnJvbVBvc2l0aW9uWzFdKTtcbiAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gc3RhcnRQYW5MbmdMYXRbMF0gLSBmcm9tUG9zaXRpb25bMF0gKyBwcm9wcy5sb25naXR1ZGU7XG4gICAgICAgIGxldCBsYXRpdHVkZSA9IHN0YXJ0UGFuTG5nTGF0WzFdIC0gZnJvbVBvc2l0aW9uWzFdICsgcHJvcHMubGF0aXR1ZGU7XG4gICAgICAgIGxhdGl0dWRlID0gY2xhbXAobGF0aXR1ZGUsIC1HTE9CRV9NQVhfTEFUSVRVREUsIEdMT0JFX01BWF9MQVRJVFVERSk7XG5cbiAgICAgICAgLy8gZGVjay5nbCA5J3MgR2xvYmVWaWV3cG9ydCBzY2FsZSA9IDJeKHpvb20gLSB6b29tQWRqdXN0KGxhdGl0dWRlKSksIHNvIGFcbiAgICAgICAgLy8gY29uc3RhbnQgem9vbSB3b3VsZCBtYWtlIHRoZSBnbG9iZSBncm93IG9uIHNjcmVlbiBhcyB0aGUgY2VudGVyIG1vdmVzXG4gICAgICAgIC8vIHRvd2FyZCB0aGUgcG9sZXMuIFJlLWNvdXBsZSB6b29tIHRvIHRoZSBuZXcgbGF0aXR1ZGUgKGFzIGRlY2suZ2wgOSdzIG93blxuICAgICAgICAvLyBwYW4gZG9lcykgdG8ga2VlcCB0aGUgb24tc2NyZWVuIHNjYWxlIOKAlCBhbmQgdGh1cyB0aWxlIExPRCDigJQgY29uc3RhbnQuXG4gICAgICAgIGNvbnN0IHZpc3VhbFpvb20gPSBwcm9wcy56b29tIC0gem9vbUFkanVzdChwcm9wcy5sYXRpdHVkZSk7XG4gICAgICAgIGNvbnN0IHpvb20gPSB2aXN1YWxab29tICsgem9vbUFkanVzdChsYXRpdHVkZSk7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX2dldFVwZGF0ZWRTdGF0ZSh7bG9uZ2l0dWRlLCBsYXRpdHVkZSwgem9vbX0pO1xuICAgICAgfVxuXG4gICAgICBwYW5FbmQoKSB7XG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9nZXRVcGRhdGVkU3RhdGUoe3N0YXJ0UGFuTG5nTGF0OiBudWxsfSk7XG4gICAgICB9XG4gICAgfSBhcyBhbnk7XG4gIH1cbn1cblxuLyoqXG4gKiBDdXN0b20gR2xvYmVWaWV3IHRoYXQgdXNlcyB6b29tLXRvLWN1cnNvciBjb250cm9sbGVyIGJlaGF2aW9yLlxuICovXG5leHBvcnQgY2xhc3MgS2VwbGVyR2xvYmVWaWV3IGV4dGVuZHMgRGVja0dsb2JlVmlldyB7XG4gIC8vIEZvcndhcmQgY29uc3RydWN0b3IgcHJvcHMgdG8gZGVjay5nbCdzIEdsb2JlVmlldy4gRGVjbGFyZWQgZXhwbGljaXRseSBiZWNhdXNlXG4gIC8vIHRoZSBiYXNlIGNsYXNzIGlzIGxvb3NlbHkgdHlwZWQgKHNlZSBEZWNrR2xvYmVWaWV3IGFib3ZlKSwgd2hpY2ggd291bGRcbiAgLy8gb3RoZXJ3aXNlIHN1cmZhY2UgYSBwYXJhbWV0ZXJsZXNzIGNvbnN0cnVjdG9yIHRvIGNhbGxlcnMuXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogYW55KSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgZ2V0IENvbnRyb2xsZXJUeXBlKCkge1xuICAgIHJldHVybiBab29tVG9DdXJzb3JHbG9iZUNvbnRyb2xsZXI7XG4gIH1cblxuICAvLyBkZWNrLmdsIDkncyBHbG9iZVZpZXcuZ2V0Vmlld3BvcnRUeXBlKCkgc3dhcHMgdGhlIHZpZXdwb3J0IGNsYXNzIGJhc2VkIG9uIHpvb206XG4gIC8vICAgYHJldHVybiB2aWV3U3RhdGUuem9vbSA+IDEyID8gV2ViTWVyY2F0b3JWaWV3cG9ydCA6IEdsb2JlVmlld3BvcnQ7YFxuICAvLyBDcm9zc2luZyB6b29tIDEyIHRoZXJlZm9yZSByZWNvbXB1dGVzIHRpbGUgYm91bmRzIHdpdGggY29tcGxldGVseSBkaWZmZXJlbnRcbiAgLy8gcHJvamVjdGlvbiBtYXRoIChnbG9iZSB2cyBmbGF0IG1lcmNhdG9yKS4gVGhhdCBtYWtlcyBkZWNrJ3MgVGlsZUxheWVyL01WVExheWVyXG4gIC8vIHJlc2VsZWN0IHRpbGVzIGluY29uc2lzdGVudGx5IGFjcm9zcyB0aGUgYm91bmRhcnkg4oCUIG1peGVkIExPRHMgKGUuZy4gYSB6NCB0aWxlXG4gIC8vIG5leHQgdG8gejExKSwgYSB2aXNpYmxlIFwiZmxpY2tlclwiIGF0IDEyLCBhbmQgdGlsZXMgdGhhdCBnZXQgZHJvcHBlZCBhbmQgc3RpY2tcbiAgLy8gYXMgYmxhY2svZW1wdHkgcXVhZHMgKG1vc3Qgb2Z0ZW4gY3Jvc3NpbmcgMTIgb24gdGhlIHdheSAqb3V0KikuXG4gIC8vXG4gIC8vIEZvcmNlIEdsb2JlVmlld3BvcnQgYXQgZXZlcnkgem9vbSB0byBlbGltaW5hdGUgdGhlIHo9MTIgdmlld3BvcnQgc3dhcCBzbyB0aWxlXG4gIC8vIHNlbGVjdGlvbiBzdGF5cyBjb25zaXN0ZW50LiBUaGUgdHJhZGUtb2ZmIGlzIHRoYXQgem9vbSA+IDEyIG5vdyB1c2VzIGZsb2F0MzJcbiAgLy8gZ2xvYmUgcHJlY2lzaW9uIChkZWNrJ3MgZG9jdW1lbnRlZCBcIm5vIGhpZ2gtcHJlY2lzaW9uIHJlbmRlcmluZyA+IDEyXCIgbGltaXQpXG4gIC8vIGluc3RlYWQgb2Ygc3dpdGNoaW5nIHRvIG1lcmNhdG9yIOKAlCBmYXIgcHJlZmVyYWJsZSB0byB0aGUgYmxhY2sgcXVhZHMuXG4gIGdldFZpZXdwb3J0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVja0dsb2JlVmlld3BvcnQ7XG4gIH1cbn1cblxuS2VwbGVyR2xvYmVWaWV3LmRpc3BsYXlOYW1l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LEVBQUN6QixRQUFRLEVBQUUsQ0FBQzBCLDZCQUFrQixFQUFFQSw2QkFBa0IsQ0FBQzs7VUFFbkU7VUFDQTtVQUNBO1VBQ0E7VUFDQSxJQUFNNEMsVUFBVSxHQUFHaEQsS0FBSyxDQUFDSyxJQUFJLEdBQUc1QixVQUFVLENBQUN1QixLQUFLLENBQUN0QixRQUFRLENBQUM7VUFDMUQsSUFBTTJCLElBQUksR0FBRzJDLFVBQVUsR0FBR3ZFLFVBQVUsQ0FBQ0MsUUFBUSxDQUFDO1VBRTlDLE9BQVEsSUFBSSxDQUFTb0QsZ0JBQWdCLENBQUM7WUFBQ0ksU0FBUyxFQUFUQSxTQUFTO1lBQUV4RCxRQUFRLEVBQVJBLFFBQVE7WUFBRTJCLElBQUksRUFBSkE7VUFBSSxDQUFDLENBQUM7UUFDcEU7TUFBQztRQUFBUixHQUFBO1FBQUFDLEtBQUEsRUFFRCxTQUFBbUQsTUFBTUEsQ0FBQSxFQUFHO1VBQ1AsT0FBUSxJQUFJLENBQVNuQixnQkFBZ0IsQ0FBQztZQUFDYSxjQUFjLEVBQUU7VUFBSSxDQUFDLENBQUM7UUFDL0Q7TUFBQztJQUFBLEVBbE1vRHBELGtCQUFrQixDQW1NakU7SUFBQyxPQUFBUCxLQUFBO0VBQ1g7RUFBQyxJQUFBVyxVQUFBLGFBQUFaLDJCQUFBLEVBQUFULGdCQUFBO0VBQUEsV0FBQXNCLGFBQUEsYUFBQWIsMkJBQUE7QUFBQSxFQTFNdUNWLGVBQWU7QUE2TXpEO0FBQ0E7QUFDQTtBQUZBLElBR2E2RSxlQUFlLEdBQUFDLE9BQUEsQ0FBQUQsZUFBQSwwQkFBQUUsY0FBQTtFQUMxQjtFQUNBO0VBQ0E7RUFDQSxTQUFBRixnQkFBWWxELEtBQVcsRUFBRTtJQUFBLElBQUFmLGdCQUFBLG1CQUFBaUUsZUFBQTtJQUFBLE9BQUF2RixVQUFBLE9BQUF1RixlQUFBLEdBQ2pCbEQsS0FBSztFQUNiO0VBQUMsSUFBQUwsVUFBQSxhQUFBdUQsZUFBQSxFQUFBRSxjQUFBO0VBQUEsV0FBQXhELGFBQUEsYUFBQXNELGVBQUE7SUFBQXJELEdBQUE7SUFBQTdELEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFCO01BQ25CLE9BQU8rQywyQkFBMkI7SUFDcEM7O0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQUE7SUFBQWMsR0FBQTtJQUFBQyxLQUFBLEVBQ0EsU0FBQXVELGVBQWVBLENBQUEsRUFBRztNQUNoQixPQUFPOUUsaUJBQWlCO0lBQzFCO0VBQUM7QUFBQSxFQTFCa0NKLGFBQWE7QUE2QmxEK0UsZUFBZSxDQUFDSSxXQUFXLEdBQUcsaUJBQWlCIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AtmosphereLayerRealistic, AtmosphereSkyLayerRealistic, getGlobeAtmosphereLayer, getGlobeAtmosphereSkyLayer } from './atmosphere-layer';
|
|
2
|
+
export { GlobeDepthDiskLayer, getGlobeDepthDiskLayer } from './globe-depth-disk-layer';
|
|
3
|
+
export { getGlobeBaseLayers, getGlobeTopLayers, getGlobeClearColor, getGlobeBasemapAttributions, resolveGlobeBasemapProvider, DEFAULT_BASEMAP_COLOR, getBasemapColors, getBasemapColorsForStyle } from './globe-layers';
|
|
4
|
+
export type { GlobeBasemapProvider, GlobeAttribution } from './globe-layers';
|
|
5
|
+
export { MVTLabelLayer } from './mvt-label-layer';
|
|
6
|
+
export { default as EnhancedMultiIconLayer } from './enhanced-multi-icon-layer';
|
|
7
|
+
export { KeplerGlobeView } from './globe-view';
|
|
8
|
+
export { getStarsBackgroundImage } from './globe-stars-layer';
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "AtmosphereLayerRealistic", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _atmosphereLayer.AtmosphereLayerRealistic;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "AtmosphereSkyLayerRealistic", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _atmosphereLayer.AtmosphereSkyLayerRealistic;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "DEFAULT_BASEMAP_COLOR", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _globeLayers.DEFAULT_BASEMAP_COLOR;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "EnhancedMultiIconLayer", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _enhancedMultiIconLayer["default"];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "GlobeDepthDiskLayer", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function get() {
|
|
34
|
+
return _globeDepthDiskLayer.GlobeDepthDiskLayer;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "KeplerGlobeView", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _globeView.KeplerGlobeView;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "MVTLabelLayer", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function get() {
|
|
46
|
+
return _mvtLabelLayer.MVTLabelLayer;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "getBasemapColors", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _globeLayers.getBasemapColors;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "getBasemapColorsForStyle", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function get() {
|
|
58
|
+
return _globeLayers.getBasemapColorsForStyle;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "getGlobeAtmosphereLayer", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function get() {
|
|
64
|
+
return _atmosphereLayer.getGlobeAtmosphereLayer;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, "getGlobeAtmosphereSkyLayer", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function get() {
|
|
70
|
+
return _atmosphereLayer.getGlobeAtmosphereSkyLayer;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "getGlobeBaseLayers", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function get() {
|
|
76
|
+
return _globeLayers.getGlobeBaseLayers;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, "getGlobeBasemapAttributions", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function get() {
|
|
82
|
+
return _globeLayers.getGlobeBasemapAttributions;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, "getGlobeClearColor", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function get() {
|
|
88
|
+
return _globeLayers.getGlobeClearColor;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(exports, "getGlobeDepthDiskLayer", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function get() {
|
|
94
|
+
return _globeDepthDiskLayer.getGlobeDepthDiskLayer;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, "getGlobeTopLayers", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function get() {
|
|
100
|
+
return _globeLayers.getGlobeTopLayers;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(exports, "getStarsBackgroundImage", {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
get: function get() {
|
|
106
|
+
return _globeStarsLayer.getStarsBackgroundImage;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(exports, "resolveGlobeBasemapProvider", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function get() {
|
|
112
|
+
return _globeLayers.resolveGlobeBasemapProvider;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var _atmosphereLayer = require("./atmosphere-layer");
|
|
116
|
+
var _globeDepthDiskLayer = require("./globe-depth-disk-layer");
|
|
117
|
+
var _globeLayers = require("./globe-layers");
|
|
118
|
+
var _mvtLabelLayer = require("./mvt-label-layer");
|
|
119
|
+
var _enhancedMultiIconLayer = _interopRequireDefault(require("./enhanced-multi-icon-layer"));
|
|
120
|
+
var _globeView = require("./globe-view");
|
|
121
|
+
var _globeStarsLayer = require("./globe-stars-layer");
|
|
122
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXRtb3NwaGVyZUxheWVyIiwicmVxdWlyZSIsIl9nbG9iZURlcHRoRGlza0xheWVyIiwiX2dsb2JlTGF5ZXJzIiwiX212dExhYmVsTGF5ZXIiLCJfZW5oYW5jZWRNdWx0aUljb25MYXllciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ2xvYmVWaWV3IiwiX2dsb2JlU3RhcnNMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBHbG9iZSBtb2RlIGxheWVyIGFkanVzdG1lbnRzLlxuLy9cbi8vIEdsb2JlLXNwZWNpZmljIGFkanVzdG1lbnRzIGhhbmRsZWQgaGVyZTpcbi8vIC0gR3JpZCAvIEhleGFnb24gYWdncmVnYXRpb24gY2VsbHMgb24gdGhlIGdsb2JlOiBkZWNrLmdsIDkueCdzIEdyaWRDZWxsTGF5ZXIgL1xuLy8gICBIZXhhZ29uQ2VsbExheWVyIHBvc2l0aW9uIGNlbGxzIGluIGZsYXQgbWVyY2F0b3IgY29tbW9uIHNwYWNlIGFuZCBkcmF3IHRoZW0gd2l0aFxuLy8gICBwcm9qZWN0X2NvbW1vbl9wb3NpdGlvbl90b19jbGlwc3BhY2UsIHdoaWNoIGxlYXZlcyB0aGVtIG9uIHRoZSBYWSBwbGFuZSB0aHJvdWdoIHRoZVxuLy8gICBnbG9iZSBjZW50ZXIgcmF0aGVyIHRoYW4gb24gaXRzIHN1cmZhY2UuIFNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIgL1xuLy8gICBTY2FsZUVuaGFuY2VkSGV4YWdvbkxheWVyIHN3YXAgaW4gYSBnbG9iZS1hd2FyZSBjZWxsIHN1YmNsYXNzIChzZWVcbi8vICAgbGF5ZXItdXRpbHMvZ2xvYmUtY2VsbC11dGlscykgdGhhdCByZW1hcHMgZWFjaCBjZWxsIHZlcnRleCBmcm9tIGNvbW1vbiBzcGFjZSBiYWNrIHRvXG4vLyAgIGxuZy9sYXQgYW5kIG9udG8gdGhlIHNwaGVyZS5cbi8vIC0gVGV4dC9MYWJlbCByZW5kZXJpbmcgd2l0aCBiYWNrLWZhY2UgY3VsbGluZzogTVZUTGFiZWxMYXllciByZW5kZXJzIHBsYWNlIGxhYmVscyB2aWEgYVxuLy8gICBUZXh0TGF5ZXIgd2hvc2UgZ2x5cGggc3VibGF5ZXIgaXMgRW5oYW5jZWRNdWx0aUljb25MYXllciwgd2hpY2ggZGVnZW5lcmF0ZXMgZ2x5cGhcbi8vICAgdmVydGljZXMgb24gdGhlIGZhciBzaWRlIG9mIHRoZSBnbG9iZSAoZG90KHN1cmZhY2VOb3JtYWwsIHRvQ2FtZXJhKSA8IDAuMSkgc28gbGFiZWxzXG4vLyAgIGRvbid0IHNob3cgdGhyb3VnaCB0aGUgcGxhbmV0LiBJbXBsZW1lbnRlZCBhcyBhIEdMU0wgaW5qZWN0LlxuXG5leHBvcnQge1xuICBBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMsXG4gIEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyxcbiAgZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIsXG4gIGdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyXG59IGZyb20gJy4vYXRtb3NwaGVyZS1sYXllcic7XG5leHBvcnQge0dsb2JlRGVwdGhEaXNrTGF5ZXIsIGdldEdsb2JlRGVwdGhEaXNrTGF5ZXJ9IGZyb20gJy4vZ2xvYmUtZGVwdGgtZGlzay1sYXllcic7XG5leHBvcnQge1xuICBnZXRHbG9iZUJhc2VMYXllcnMsXG4gIGdldEdsb2JlVG9wTGF5ZXJzLFxuICBnZXRHbG9iZUNsZWFyQ29sb3IsXG4gIGdldEdsb2JlQmFzZW1hcEF0dHJpYnV0aW9ucyxcbiAgcmVzb2x2ZUdsb2JlQmFzZW1hcFByb3ZpZGVyLFxuICBERUZBVUxUX0JBU0VNQVBfQ09MT1IsXG4gIGdldEJhc2VtYXBDb2xvcnMsXG4gIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZVxufSBmcm9tICcuL2dsb2JlLWxheWVycyc7XG5leHBvcnQgdHlwZSB7R2xvYmVCYXNlbWFwUHJvdmlkZXIsIEdsb2JlQXR0cmlidXRpb259IGZyb20gJy4vZ2xvYmUtbGF5ZXJzJztcbmV4cG9ydCB7TVZUTGFiZWxMYXllcn0gZnJvbSAnLi9tdnQtbGFiZWwtbGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEVuaGFuY2VkTXVsdGlJY29uTGF5ZXJ9IGZyb20gJy4vZW5oYW5jZWQtbXVsdGktaWNvbi1sYXllcic7XG5leHBvcnQge0tlcGxlckdsb2JlVmlld30gZnJvbSAnLi9nbG9iZS12aWV3JztcbmV4cG9ydCB7Z2V0U3RhcnNCYWNrZ3JvdW5kSW1hZ2V9IGZyb20gJy4vZ2xvYmUtc3RhcnMtbGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQU1BLElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFXQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|