raain-ui 2.3.7 → 2.3.8

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/globe/dom.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function newElement(tagName: any, className?: any): any;
2
+ export declare function newSVG(tagName: any, attributes: any): any;
package/globe/dom.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newElement = newElement;
4
+ exports.newSVG = newSVG;
5
+ function newElement(tagName, className) {
6
+ const el = document.createElement(tagName);
7
+ if (className !== undefined) {
8
+ el.className = className;
9
+ }
10
+ return el;
11
+ }
12
+ function newSVG(tagName, attributes) {
13
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', tagName);
14
+ Object.entries(attributes).forEach(([k, v]) => svg.setAttribute(k, v));
15
+ return svg;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdDQU1DO0FBRUQsd0JBSUM7QUFaRCxTQUFnQixVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVU7SUFDMUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQixFQUFFLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMifQ==
@@ -0,0 +1,11 @@
1
+ export declare function initInfoBox(globeDiv: any, infoDiv: any): {
2
+ showInfo: () => any;
3
+ hideInfo: () => any;
4
+ destroy: () => any;
5
+ infoCloseButton?: undefined;
6
+ } | {
7
+ showInfo: ([lon, lat]: [any, any]) => void;
8
+ hideInfo: () => void;
9
+ infoCloseButton: any;
10
+ destroy: () => void;
11
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initInfoBox = initInfoBox;
4
+ const dom_1 = require("./dom");
5
+ function initInfoBox(globeDiv, infoDiv) {
6
+ const nullFn = () => null;
7
+ if (!infoDiv) {
8
+ return { showInfo: nullFn, hideInfo: nullFn, destroy: nullFn };
9
+ }
10
+ // Construct a slider div, with coords div and close button in a top bar
11
+ const infoSlider = (0, dom_1.newElement)('div', 'infoslider');
12
+ globeDiv.parentNode.appendChild(infoSlider);
13
+ const topBar = infoSlider.appendChild((0, dom_1.newElement)('div', 'infoTopBar'));
14
+ const coords = topBar.appendChild((0, dom_1.newElement)('span'));
15
+ const infoCloseButton = topBar.appendChild((0, dom_1.newElement)('button'));
16
+ infoCloseButton.appendChild((0, dom_1.newSVG)('svg', { class: 'icon stroke' }))
17
+ .appendChild((0, dom_1.newSVG)('use', { href: '#close' }));
18
+ infoCloseButton.addEventListener('click', hideInfo);
19
+ // Store original position of info div, then wrap it inside the slider div
20
+ const { parentNode, nextSibling } = infoDiv;
21
+ infoSlider.appendChild(infoDiv);
22
+ infoDiv.classList.add('infobox');
23
+ return { showInfo, hideInfo, infoCloseButton, destroy };
24
+ function showInfo([lon, lat]) {
25
+ coords.innerHTML = lon.toFixed(4) + ' ' + lat.toFixed(4);
26
+ infoSlider.classList.add('slid');
27
+ globeDiv.classList.add('shifted');
28
+ }
29
+ function hideInfo() {
30
+ infoSlider.classList.remove('slid');
31
+ globeDiv.classList.remove('shifted');
32
+ }
33
+ function destroy() {
34
+ // Restore info div to original position
35
+ if (nextSibling) {
36
+ parentNode.insertBefore(infoDiv, nextSibling);
37
+ }
38
+ else {
39
+ parentNode.appendChild(infoDiv);
40
+ }
41
+ infoSlider.remove();
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mb2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9pbmZvYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0NBMkNDO0FBN0NELCtCQUF5QztBQUV6QyxTQUFnQixXQUFXLENBQUMsUUFBUSxFQUFFLE9BQU87SUFDekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNYLE9BQU8sRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsTUFBTSxVQUFVLEdBQUcsSUFBQSxnQkFBVSxFQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRCxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUEsZ0JBQVUsRUFBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN2RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsZ0JBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSxnQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFBLFlBQU0sRUFBQyxLQUFLLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQztTQUM3RCxXQUFXLENBQUMsSUFBQSxZQUFNLEVBQUMsS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxlQUFlLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXBELDBFQUEwRTtJQUMxRSxNQUFNLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxHQUFHLE9BQU8sQ0FBQztJQUMxQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWpDLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsQ0FBQztJQUV0RCxTQUFTLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLFFBQVE7UUFDYixVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUyxPQUFPO1FBQ1osd0NBQXdDO1FBQ3hDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNKLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ export declare function initGlobe(userParams: {
2
+ container: HTMLElement;
3
+ center: number[];
4
+ altitude: number;
5
+ }): any;
package/globe/main.js ADDED
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.initGlobe = initGlobe;
37
+ const spinningBall = __importStar(require("../utils/spinning-ball-wrapper"));
38
+ const params_1 = require("./params");
39
+ const map_1 = require("./map");
40
+ const tooltip_1 = require("./tooltip");
41
+ const markers_1 = require("./markers");
42
+ const infobox_1 = require("./infobox");
43
+ // CSS is provided separately to allow users to handle it with their own bundler
44
+ // Users should import '../data/globe.css' manually
45
+ function initGlobe(userParams) {
46
+ const params = (0, params_1.setParams)(userParams);
47
+ const { ballParams, globeDiv, infoDiv } = params;
48
+ const ball = spinningBall.init(ballParams);
49
+ return (0, map_1.initMap)(ball, params)
50
+ .then(map => setup(map, ball, globeDiv, infoDiv));
51
+ }
52
+ function setup(map, ball, globeDiv, infoDiv) {
53
+ let requestID;
54
+ const markers = (0, markers_1.initMarkers)(ball, globeDiv);
55
+ const toolTip = (0, tooltip_1.initToolTip)(ball, globeDiv);
56
+ const infoBox = (0, infobox_1.initInfoBox)(globeDiv, infoDiv);
57
+ return Object.assign({}, map, infoBox, {
58
+ startAnimation: () => {
59
+ requestID = requestAnimationFrame(animate);
60
+ },
61
+ stopAnimation: () => cancelAnimationFrame(requestID),
62
+ update, // For requestAnimationFrame loops managed by the parent program
63
+ cameraPos: ball.cameraPos,
64
+ cursorPos: ball.cursorPos,
65
+ isMoving: ball.camMoving,
66
+ wasTapped: ball.wasTapped,
67
+ addMarker: markers.add,
68
+ removeMarker: markers.remove,
69
+ destroy: () => (map.destroy(), infoBox.destroy(), globeDiv.remove()),
70
+ });
71
+ function animate(time) {
72
+ update(time);
73
+ requestID = requestAnimationFrame(animate);
74
+ }
75
+ function update(time) {
76
+ const moving = ball.update(time * 0.001); // Convert time from ms to seconds
77
+ if (moving || map.mapLoaded() < 1.0) {
78
+ map.update(ball.cameraPos());
79
+ }
80
+ if (moving) {
81
+ markers.update();
82
+ }
83
+ if (ball.cursorChanged()) {
84
+ toolTip.update();
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsOEJBWUM7QUF2QkQsNkVBQStEO0FBRS9ELHFDQUFtQztBQUNuQywrQkFBOEI7QUFDOUIsdUNBQXNDO0FBQ3RDLHVDQUFzQztBQUN0Qyx1Q0FBc0M7QUFFdEMsZ0ZBQWdGO0FBQ2hGLG1EQUFtRDtBQUVuRCxTQUFnQixTQUFTLENBQUMsVUFJekI7SUFDRyxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFTLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsTUFBTSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9DLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0MsT0FBTyxJQUFBLGFBQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPO0lBQ3ZDLElBQUksU0FBUyxDQUFDO0lBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQkFBVyxFQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFBLHFCQUFXLEVBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUEscUJBQVcsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFL0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO1FBQ25DLGNBQWMsRUFBRSxHQUFHLEVBQUU7WUFDakIsU0FBUyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO1FBQ3BELE1BQU0sRUFBRyxnRUFBZ0U7UUFFekUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztRQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7UUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBRXpCLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRztRQUN0QixZQUFZLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFFNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDdkUsQ0FBQyxDQUFDO0lBRUgsU0FBUyxPQUFPLENBQUMsSUFBSTtRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixTQUFTLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFNBQVMsTUFBTSxDQUFDLElBQUk7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFFNUUsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyJ9
package/globe/map.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function initMap(ball: any, params: any): any;
package/globe/map.js ADDED
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.initMap = initMap;
37
+ const tileSetter = __importStar(require("tile-setter"));
38
+ const yawgl_1 = require("yawgl");
39
+ const dom_1 = require("./dom");
40
+ const reproject_1 = require("./reproject");
41
+ const basic_style_geojson_1 = require("./basic-style-geojson");
42
+ function initMap(ball, params) {
43
+ const { width, height, mapboxToken, globeDiv } = params;
44
+ const canvas = globeDiv.appendChild((0, dom_1.newElement)('canvas', 'map'));
45
+ const context = (0, yawgl_1.initContext)(canvas);
46
+ const framebuffer = context.initFramebuffer({ width, height });
47
+ const renderer = (0, reproject_1.initReprojection)(ball, context, framebuffer.sampler);
48
+ return tileSetter
49
+ .init({ context, framebuffer, style: basic_style_geojson_1.style, mapboxToken, projScale: true })
50
+ .promise.then(map => setup(map, ball, renderer));
51
+ }
52
+ function setup(map, ball, renderer) {
53
+ let loadStatus = 0;
54
+ return {
55
+ mapLoaded: () => loadStatus,
56
+ select,
57
+ showLayer: (l) => (loadStatus = 0, map.showLayer(l)),
58
+ hideLayer: (l) => (loadStatus = 0, map.hideLayer(l)),
59
+ getZoom: map.getZoom,
60
+ destroy: renderer.destroy,
61
+ update,
62
+ };
63
+ function update(satellitePos) {
64
+ const hNorm = satellitePos[2] / ball.radius();
65
+ const rayTanPerPixel = ball.view.topEdge() * 2 / ball.view.height();
66
+ const dMap = hNorm * rayTanPerPixel * map.projection.scale(satellitePos);
67
+ const k = 1.0 / dMap;
68
+ const zoom = Math.log2(k) - 9;
69
+ map.setCenterZoom(satellitePos, zoom);
70
+ const dzScale = 2 ** (zoom - map.getZoom());
71
+ loadStatus = map.draw({ dzScale });
72
+ renderer.reproject(map, satellitePos);
73
+ }
74
+ function select(layer, radius) {
75
+ return map.select({ layer, point: ball.cursorPos(), radius });
76
+ }
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLDBCQVlDO0FBbkJELHdEQUEwQztBQUMxQyxpQ0FBa0M7QUFFbEMsK0JBQWlDO0FBQ2pDLDJDQUE2QztBQUM3QywrREFBMkQ7QUFFM0QsU0FBZ0IsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNO0lBQ2hDLE1BQU0sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFFdEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGdCQUFVLEVBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFBLDRCQUFnQixFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRFLE9BQU8sVUFBVTtTQUNaLElBQUksQ0FBQyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLDJCQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztTQUM5RSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRO0lBQzlCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUVuQixPQUFPO1FBQ0gsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVU7UUFDM0IsTUFBTTtRQUNOLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLE1BQU07S0FDVCxDQUFDO0lBRUYsU0FBUyxNQUFNLENBQUMsWUFBWTtRQUN4QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEUsTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6RSxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLEdBQUcsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM1QyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFFakMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNMLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ export declare function initMarkers(globe: any, container: any): {
2
+ add: ({ element, type, position }: {
3
+ element: any;
4
+ type: any;
5
+ position: any;
6
+ }) => {
7
+ element: any;
8
+ position: Float64Array<ArrayBuffer>;
9
+ screenPos: Float64Array<ArrayBuffer>;
10
+ };
11
+ remove: (marker: any) => void;
12
+ update: () => void;
13
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initMarkers = initMarkers;
4
+ const dom_1 = require("./dom");
5
+ function initMarkers(globe, container) {
6
+ const markerList = [];
7
+ return {
8
+ add,
9
+ remove,
10
+ update: () => markerList.forEach(setPosition),
11
+ };
12
+ function add({ element, type, position }) {
13
+ const [lon, lat, alt = 0.0] = position;
14
+ const marker = {
15
+ element: container.appendChild(getMarkerElement(element, type)),
16
+ position: new Float64Array([lon, lat, alt]),
17
+ screenPos: new Float64Array(2),
18
+ };
19
+ setPosition(marker);
20
+ // Add to the list, and return the pointer to the user
21
+ markerList.push(marker);
22
+ return marker;
23
+ }
24
+ function getMarkerElement(element, type) {
25
+ const validNodeNames = ['DIV', 'div', 'IMG', 'img', 'SVG', 'svg'];
26
+ return (element && validNodeNames.includes(element.nodeName))
27
+ ? element
28
+ : createSVG(type);
29
+ }
30
+ function createSVG(type = 'marker') {
31
+ const svg = (0, dom_1.newSVG)('svg', { class: type });
32
+ svg.appendChild((0, dom_1.newSVG)('use', { href: '#' + type }));
33
+ return svg;
34
+ }
35
+ function remove(marker) {
36
+ const index = markerList.indexOf(marker);
37
+ if (index < 0) {
38
+ return;
39
+ }
40
+ container.removeChild(marker.element);
41
+ markerList.splice(index, 1);
42
+ }
43
+ function setPosition(marker) {
44
+ const visible = globe.project(marker.screenPos, marker.position);
45
+ Object.assign(marker.element.style, {
46
+ display: (visible) ? 'inline-block' : 'none',
47
+ left: marker.screenPos[0] + 'px',
48
+ top: marker.screenPos[1] + 'px',
49
+ });
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS9tYXJrZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0NBdURDO0FBekRELCtCQUE2QjtBQUU3QixTQUFnQixXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRXRCLE9BQU87UUFDSCxHQUFHO1FBQ0gsTUFBTTtRQUNOLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUNoRCxDQUFDO0lBRUYsU0FBUyxHQUFHLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQztRQUNsQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHO1lBQ1gsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9ELFFBQVEsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsU0FBUyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQztTQUNqQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLHNEQUFzRDtRQUN0RCxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJO1FBQ25DLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsSUFBSSxHQUFHLFFBQVE7UUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBQSxZQUFNLEVBQUMsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFBLFlBQU0sRUFBQyxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1gsQ0FBQztRQUVELFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUFNO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNoQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQzVDLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7WUFDaEMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtTQUNsQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,18 @@
1
+ export declare function setParams(userParams: any): {
2
+ style: any;
3
+ mapboxToken: any;
4
+ width: number;
5
+ height: number;
6
+ globeDiv: any;
7
+ infoDiv: Element;
8
+ ballParams: {
9
+ display: any;
10
+ position: any[];
11
+ minLongitude: any;
12
+ minLatitude: any;
13
+ minAltitude: any;
14
+ maxLongitude: any;
15
+ maxLatitude: any;
16
+ maxAltitude: any;
17
+ };
18
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setParams = setParams;
4
+ const dom_1 = require("./dom");
5
+ function setParams(userParams) {
6
+ // Get the containing DIV element, and set its CSS class
7
+ const container = (typeof userParams.container === 'string')
8
+ ? document.getElementById(userParams.container)
9
+ : userParams.container;
10
+ if (!(container.style)) {
11
+ fail('missing container element');
12
+ }
13
+ container.classList.add('globe');
14
+ if (container.clientWidth <= 64 || container.clientHeight <= 64) {
15
+ fail('container must be at least 64x64 pixels');
16
+ }
17
+ // Add Elements for globe interface, svg sprite
18
+ const globeDiv = container.appendChild((0, dom_1.newElement)('div', 'main'));
19
+ // globeDiv.insertAdjacentHTML('afterbegin', sprite);
20
+ // Get user-supplied parameters
21
+ const { style, mapboxToken, width: rawWidth = globeDiv.clientWidth + 512, height: rawHeight = globeDiv.clientHeight + 512, center = [0.0, 0.0], altitude = 20000, infobox, minLongitude, minLatitude, minAltitude, maxLongitude, maxLatitude, maxAltitude, } = userParams;
22
+ // Get the DIV element for the infobox, if supplied
23
+ const infoDiv = (typeof infobox === 'string' && infobox.length)
24
+ ? document.getElementById(infobox)
25
+ : (infobox instanceof Element) ? infobox : null;
26
+ // Force width >= height, and both powers of 2
27
+ const nextPowerOf2 = v => 2 ** Math.ceil(Math.log2(v));
28
+ const height = nextPowerOf2(rawHeight);
29
+ const width = Math.max(nextPowerOf2(rawWidth), height);
30
+ const ballParams = {
31
+ display: globeDiv,
32
+ position: [center[0], center[1], altitude],
33
+ minLongitude, minLatitude, minAltitude,
34
+ maxLongitude, maxLatitude, maxAltitude,
35
+ };
36
+ return { style, mapboxToken, width, height, globeDiv, infoDiv, ballParams };
37
+ }
38
+ function fail(message) {
39
+ throw Error('globe: ' + message);
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDhCQStDQztBQWpERCwrQkFBaUM7QUFFakMsU0FBZ0IsU0FBUyxDQUFDLFVBQVU7SUFDaEMsd0RBQXdEO0lBQ3hELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxVQUFVLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQztRQUN4RCxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQzNCLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELCtDQUErQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUEsZ0JBQVUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxxREFBcUQ7SUFFckQsK0JBQStCO0lBQy9CLE1BQU0sRUFDRixLQUFLLEVBQUUsV0FBVyxFQUNsQixLQUFLLEVBQUUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUM1QyxNQUFNLEVBQUUsU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUMvQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQ25CLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLE9BQU8sRUFDUCxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFDdEMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQ3pDLEdBQUcsVUFBVSxDQUFDO0lBRWYsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDM0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDLE9BQU8sWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFcEQsOENBQThDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV2RCxNQUFNLFVBQVUsR0FBRztRQUNmLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQzFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVztRQUN0QyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVc7S0FDekMsQ0FBQztJQUVGLE9BQU8sRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsT0FBTztJQUNqQixNQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ export declare function initReprojection(ball: any, context: any, sampler: any): {
2
+ reproject: (map: any, satellitePos: any) => void;
3
+ destroy: any;
4
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.initReprojection = initReprojection;
37
+ const satelliteView = __importStar(require("satellite-view"));
38
+ function initReprojection(ball, context, sampler) {
39
+ const camPos = new Float64Array([0.5, 0.5]);
40
+ const scale = new Float64Array(2);
41
+ const satView = satelliteView.init({
42
+ context,
43
+ map: { sampler, camPos, scale },
44
+ globeRadius: ball.radius(),
45
+ flipY: false,
46
+ units: 'degrees',
47
+ });
48
+ function reproject(map, satellitePos) {
49
+ scale.set(map.getScale());
50
+ camPos.set(map.getCamPos());
51
+ context.updateMips(sampler);
52
+ satView.draw(satellitePos, ball.view.maxRay);
53
+ }
54
+ return { reproject, destroy: satView.destroy };
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlL3JlcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDRDQW9CQztBQXRCRCw4REFBZ0Q7QUFFaEQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQztRQUNqQyxPQUFPO1FBQ1AsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDL0IsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDMUIsS0FBSyxFQUFFLEtBQUs7UUFDWixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDLENBQUM7SUFFSCxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsWUFBWTtRQUNsQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakQsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ export declare function initToolTip(ball: any, globeDiv: any): {
2
+ update: () => void;
3
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initToolTip = initToolTip;
4
+ const dom_1 = require("./dom");
5
+ function initToolTip(ball, globeDiv) {
6
+ const toolTip = globeDiv.appendChild((0, dom_1.newElement)('div', 'status'));
7
+ function update() {
8
+ const cameraPos = ball.cameraPos();
9
+ const alt = cameraPos[2].toPrecision(5);
10
+ const lat = cameraPos.latitude;
11
+ const lng = cameraPos.longitude;
12
+ toolTip.innerHTML = alt + 'km ' + lonLatString(lng, lat);
13
+ }
14
+ return { update };
15
+ }
16
+ function lonLatString(longitude, latitude) {
17
+ const ew = (longitude < 0.0) ? 'W' : 'E';
18
+ const lonString = degMinSec(longitude) + ew;
19
+ const ns = (latitude < 0.0) ? 'S' : 'N';
20
+ const latString = degMinSec(latitude) + ns;
21
+ return lonString + latString;
22
+ }
23
+ function degMinSec(degrees) {
24
+ const deg = Math.abs(degrees);
25
+ const min = 60.0 * (deg - Math.floor(deg));
26
+ const sec = 60.0 * (min - Math.floor(min));
27
+ // Combine into fixed-width string
28
+ const iStr = f => Math.floor(f).toString();
29
+ const d = iStr(deg).padStart(3, ' ').replace(/ /g, '&nbsp;') + '&#176;';
30
+ const m = iStr(min).padStart(2, '0') + '\'';
31
+ const s = iStr(sec).padStart(2, '0') + '"';
32
+ return d + m + s;
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iZS90b29sdGlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0NBWUM7QUFkRCwrQkFBaUM7QUFFakMsU0FBZ0IsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBQSxnQkFBVSxFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRWxFLFNBQVMsTUFBTTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUNoQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUTtJQUNyQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDekMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU1QyxNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUUzQyxPQUFPLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLE9BQU87SUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFM0Msa0NBQWtDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUUzQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUN4RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raain-ui",
3
- "version": "2.3.7",
3
+ "version": "2.3.8",
4
4
  "author": "contact@raain.io",
5
5
  "homepage": "https://github.com/raainio/raain-ui",
6
6
  "description": "raain.io ui layers",
@@ -12,26 +12,45 @@
12
12
  "license": "MIT",
13
13
  "main": "./index.js",
14
14
  "types": "./index.d.ts",
15
- "dependencies": {
15
+ "peerDependencies": {
16
16
  "chart.js": "^4.4.7",
17
- "chartjs-chart-geo": "^4.3.4",
18
17
  "chartjs-plugin-dragdata": "^2.3.1",
19
- "geolib": "^3.3.4",
20
18
  "leaflet": "^1.9.4",
21
19
  "pixi.js": "^5.3.12",
22
- "raain-model": "^2.6.5"
20
+ "raain-model": "^3.0.9"
23
21
  },
24
- "peerDependencies": {
22
+ "scripts": {
23
+ "bp:_clean": "rm -rf package-lock.json node_modules .gen .logs .nyc_output .logs .output.txt .coverage .coverage_temp dist app && npm i",
24
+ "bp:bump": "OLD_VERSION=\"v$(node -e \"console.log(require('./package.json').version)\")\" && VERSION=\"$(npm version patch --no-git-tag-version)\" && npm i && echo \"export const bpInfo={version:'$VERSION'}\" > ./src/bpInfo.ts && git tag $OLD_VERSION && git checkout -b $VERSION",
25
+ "bp:update-changelog": "node ./scripts/bp/update-changelog-date.js",
26
+ "bp:use-local-deps": "node ./scripts/bp/switch-dependencies.js local && npm run bp:_clean",
27
+ "bp:use-remote-deps": "node ./scripts/bp/switch-dependencies.js remote && npm run bp:_clean",
28
+ "bp:branch:push": "git add . && git commit -m \"chore: release v$(node -p \"require('./package.json').version\")\" && git push",
29
+ "bp:branch:squash": "node ./scripts/bp/squash-commits.js",
30
+ "test": "nyc ./node_modules/.bin/_mocha --require ./tools/register.js 'specs/**/**.spec.ts'",
31
+ "build": "npm run build-dist",
32
+ "build-dist": "rm -rf dist/ && tsc --project tsconfig.json && cp *.md dist/ && cp package.json dist/ && cp -r src/data dist/"
33
+ },
34
+ "dependencies": {
25
35
  "chart.js": "^4.4.7",
36
+ "chartjs-chart-geo": "^4.3.4",
26
37
  "chartjs-plugin-dragdata": "^2.3.1",
38
+ "geolib": "^3.3.4",
27
39
  "leaflet": "^1.9.4",
28
40
  "pixi.js": "^5.3.12",
29
- "raain-model": "^2.6.5"
41
+ "raain-model": "^3.0.9",
42
+ "satellite-view": "^2.1.2",
43
+ "spinning-ball": "^0.5.0",
44
+ "tile-setter": "^0.1.12",
45
+ "yawgl": "^0.4.3"
30
46
  },
31
47
  "devDependencies": {
32
48
  "@testdeck/mocha": "^0.3.3",
49
+ "@types/chai": "^5.2.1",
50
+ "@types/jsdom": "^21.1.7",
33
51
  "@types/leaflet": "^1.9.3",
34
52
  "@types/mocha": "^10.0.1",
53
+ "@types/sinon": "^17.0.4",
35
54
  "assert": "^2.0.0",
36
55
  "chai": "4.3.4",
37
56
  "chai-as-promised": "^7.1.1",
@@ -40,16 +59,10 @@
40
59
  "mocha": "^10.2.0",
41
60
  "mock-browser": "^0.92.14",
42
61
  "nyc": "^15.1.0",
62
+ "sinon": "^15.2.0",
43
63
  "ts-mockito": "^2.6.1",
44
64
  "ts-node": "^8.3.0",
45
65
  "tslint": "^5.20.1",
46
66
  "typescript": "^5.0.3"
47
- },
48
- "scripts": {
49
- "_clean": "rm -rf .gen .logs .nyc_output .coverage dist node_modules package-lock.json && npm i",
50
- "test": "nyc ./node_modules/.bin/_mocha --require ./tools/register.js 'specs/**/**.spec.ts'",
51
- "build": "npm run build-dist",
52
- "build-version": "VERSION=\"$(npm version patch --no-git-tag-version)\"",
53
- "build-dist": "rm -rf dist/ && tsc --project tsconfig.json && cp *.md dist/ && cp package.json dist/"
54
67
  }
55
68
  }