@undp/data-viz 1.5.5 → 1.5.6

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.
Files changed (56) hide show
  1. package/dist/BiVariateChoroplethMap.cjs +1 -1
  2. package/dist/BiVariateChoroplethMap.js +2 -2
  3. package/dist/ChoroplethMap.cjs +1 -1
  4. package/dist/ChoroplethMap.cjs.map +1 -1
  5. package/dist/ChoroplethMap.d.ts +0 -2
  6. package/dist/ChoroplethMap.js +2 -2
  7. package/dist/ChoroplethMap.js.map +1 -1
  8. package/dist/DotDensityMap.cjs +1 -1
  9. package/dist/DotDensityMap.js +2 -2
  10. package/dist/GraphEl-C6yjl1VM.cjs +2 -0
  11. package/dist/GraphEl-C6yjl1VM.cjs.map +1 -0
  12. package/dist/{GraphEl-CMWeARJ3.js → GraphEl-CqWzvOyr.js} +1 -2
  13. package/dist/GraphEl-CqWzvOyr.js.map +1 -0
  14. package/dist/GriddedGraphs.cjs +1 -1
  15. package/dist/GriddedGraphs.d.ts +1 -1
  16. package/dist/GriddedGraphs.js +1 -1
  17. package/dist/GriddedGraphsFromConfig.d.ts +1 -1
  18. package/dist/MultiGraphDashboard.d.ts +1 -1
  19. package/dist/MultiGraphDashboardFromConfig.d.ts +1 -1
  20. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -1
  21. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -1
  22. package/dist/PerformanceIntensiveScrollStory.d.ts +1 -1
  23. package/dist/ScrollStory.d.ts +1 -1
  24. package/dist/SingleGraphDashboard.cjs +1 -1
  25. package/dist/SingleGraphDashboard.d.ts +1 -1
  26. package/dist/SingleGraphDashboard.js +1 -1
  27. package/dist/SingleGraphDashboardFromConfig.d.ts +1 -1
  28. package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -1
  29. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -1
  30. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  31. package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
  32. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -1
  33. package/dist/SingleGraphDashboardThreeDGraphs.js +2 -2
  34. package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
  35. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -1
  36. package/dist/ThreeDGlobe.cjs +1 -1
  37. package/dist/ThreeDGlobe.cjs.map +1 -1
  38. package/dist/ThreeDGlobe.d.ts +2 -2
  39. package/dist/ThreeDGlobe.js +394 -333
  40. package/dist/ThreeDGlobe.js.map +1 -1
  41. package/dist/Types.d.ts +1 -1
  42. package/dist/index-9tDEUqOZ.js +752 -0
  43. package/dist/{index-qfWCwobm.js.map → index-9tDEUqOZ.js.map} +1 -1
  44. package/dist/index-CoZbeNM9.cjs +2 -0
  45. package/dist/{index-D05lK1Te.cjs.map → index-CoZbeNM9.cjs.map} +1 -1
  46. package/dist/index.d.ts +3 -5
  47. package/dist/{zoom-Bsbhil-K.cjs → zoom-BiMNsz72.cjs} +2 -2
  48. package/dist/{zoom-Bsbhil-K.cjs.map → zoom-BiMNsz72.cjs.map} +1 -1
  49. package/dist/{zoom-DAu91HKr.js → zoom-QipiAl5W.js} +2 -2
  50. package/dist/{zoom-DAu91HKr.js.map → zoom-QipiAl5W.js.map} +1 -1
  51. package/package.json +2 -1
  52. package/dist/GraphEl-BcYgMnN2.cjs +0 -2
  53. package/dist/GraphEl-BcYgMnN2.cjs.map +0 -1
  54. package/dist/GraphEl-CMWeARJ3.js.map +0 -1
  55. package/dist/index-D05lK1Te.cjs +0 -2
  56. package/dist/index-qfWCwobm.js +0 -682
@@ -1,204 +1,263 @@
1
- import { j as r, m as fe } from "./index-CHPV5EwG-BPSP-7Jg.js";
2
- import { useState as j, useRef as ge, useEffect as N, useCallback as me } from "react";
3
- import { y as xe } from "./Spinner-C85UF28E.js";
4
- import ve from "react-globe.gl";
5
- import { i as we } from "./index-Bwrro8-q.js";
6
- import * as O from "three";
7
- import { X as be } from "./Modal-DVVwpKhP.js";
8
- import { u as ue } from "./Typography-Ctgfl1J5.js";
9
- import { t as Ce } from "./index-qfWCwobm.js";
10
- import { T as je } from "./Tooltip-CVCGWyzw.js";
11
- import { n as ke } from "./numberFormattingFunction-14YCbkN2.js";
12
- import { X as Se } from "./index-BmCqpO1B.js";
13
- import { s as De } from "./string2HTML-oFCROsus.js";
14
- import { o as Ne } from "./ordinal-w9Lu4Stb.js";
15
- import { t as Me } from "./threshold-DFfqcDMa.js";
16
- import { GraphHeader as Le } from "./GraphHeader.js";
17
- import { GraphFooter as ze } from "./GraphFooter.js";
18
- import { f as Oe } from "./fetchAndParseData-sapWbnYk.js";
19
- import { Colors as A } from "./Colors.js";
20
- import { g as Re } from "./getUniqValue-DiCh_MOD.js";
21
- import { g as Pe } from "./getJenks-BbngDoBQ.js";
22
- function Te(e) {
23
- let a;
1
+ import { j as o, m as je } from "./index-CHPV5EwG-BPSP-7Jg.js";
2
+ import { useState as L, useRef as we, useEffect as M, useCallback as ue } from "react";
3
+ import { y as Se } from "./Spinner-C85UF28E.js";
4
+ import ke from "react-globe.gl";
5
+ import { i as De } from "./index-Bwrro8-q.js";
6
+ import * as A from "three";
7
+ import { X as Ne } from "./Modal-DVVwpKhP.js";
8
+ import { u as ge } from "./Typography-Ctgfl1J5.js";
9
+ import { g as Me, e as ye, t as fe } from "./index-9tDEUqOZ.js";
10
+ import { T as Le } from "./Tooltip-CVCGWyzw.js";
11
+ import { n as Pe } from "./numberFormattingFunction-14YCbkN2.js";
12
+ import { X as Oe } from "./index-BmCqpO1B.js";
13
+ import { s as Re } from "./string2HTML-oFCROsus.js";
14
+ import { o as ze } from "./ordinal-w9Lu4Stb.js";
15
+ import { t as Ae } from "./threshold-DFfqcDMa.js";
16
+ import { GraphHeader as Te } from "./GraphHeader.js";
17
+ import { GraphFooter as Ee } from "./GraphFooter.js";
18
+ import { f as He } from "./fetchAndParseData-sapWbnYk.js";
19
+ import { Colors as $ } from "./Colors.js";
20
+ import { g as $e } from "./getUniqValue-DiCh_MOD.js";
21
+ import { g as Ie } from "./getJenks-BbngDoBQ.js";
22
+ function _e(e) {
23
+ return Me(
24
+ e,
25
+ (t, n) => t + Ge(n),
26
+ 0
27
+ );
28
+ }
29
+ function Ge(e) {
30
+ let t = 0, n;
31
+ switch (e.type) {
32
+ case "Polygon":
33
+ return xe(e.coordinates);
34
+ case "MultiPolygon":
35
+ for (n = 0; n < e.coordinates.length; n++)
36
+ t += xe(e.coordinates[n]);
37
+ return t;
38
+ case "Point":
39
+ case "MultiPoint":
40
+ case "LineString":
41
+ case "MultiLineString":
42
+ return 0;
43
+ }
44
+ return 0;
45
+ }
46
+ function xe(e) {
47
+ let t = 0;
48
+ if (e && e.length > 0) {
49
+ t += Math.abs(ve(e[0]));
50
+ for (let n = 1; n < e.length; n++)
51
+ t -= Math.abs(ve(e[n]));
52
+ }
53
+ return t;
54
+ }
55
+ var Fe = ye * ye / 2, he = Math.PI / 180;
56
+ function ve(e) {
57
+ const t = e.length - 1;
58
+ if (t <= 2) return 0;
59
+ let n = 0, c = 0;
60
+ for (; c < t; ) {
61
+ const v = e[c], y = e[c + 1 === t ? 0 : c + 1], m = e[c + 2 >= t ? (c + 2) % t : c + 2], l = v[0] * he, p = y[1] * he, T = m[0] * he;
62
+ n += (T - l) * Math.sin(p), c++;
63
+ }
64
+ return n * Fe;
65
+ }
66
+ var Be = _e;
67
+ function Ue(e) {
68
+ if (e.geometry.type === "Polygon")
69
+ return fe(e);
70
+ if (e.geometry.type === "MultiPolygon") {
71
+ let t = 0, n = null;
72
+ for (const c of e.geometry.coordinates) {
73
+ const v = {
74
+ type: "Feature",
75
+ geometry: {
76
+ type: "Polygon",
77
+ coordinates: c
78
+ },
79
+ properties: {}
80
+ }, y = Be(v);
81
+ y > t && (t = y, n = v);
82
+ }
83
+ return fe(n);
84
+ }
85
+ throw new Error("Unsupported geometry type");
86
+ }
87
+ function We(e) {
88
+ let t;
24
89
  switch (e.type) {
25
90
  case "ambient":
26
- a = new O.AmbientLight(e.color, e.intensity);
91
+ t = new A.AmbientLight(e.color, e.intensity);
27
92
  break;
28
93
  case "directional":
29
- a = new O.DirectionalLight(e.color, e.intensity), e.position && (e.position === "camera" ? a.position.set(0, 0, 0) : a.position.set(e.position.x, e.position.y, e.position.z)), (e.target || e.position === "camera") && a.target.position.set(
94
+ t = new A.DirectionalLight(e.color, e.intensity), e.position && (e.position === "camera" ? t.position.set(0, 0, 0) : t.position.set(e.position.x, e.position.y, e.position.z)), (e.target || e.position === "camera") && t.target.position.set(
30
95
  e.target?.x || 0,
31
96
  e.target?.y || 0,
32
97
  e.target?.z === void 0 ? -1 : e.target.z
33
- ), e.castShadow && (a.castShadow = !0, e.shadow && (a.shadow.mapSize.width = e.shadow.mapSize.width, a.shadow.mapSize.height = e.shadow.mapSize.height, a.shadow.camera.near = e.shadow.camera.near, a.shadow.camera.far = e.shadow.camera.far));
98
+ ), e.castShadow && (t.castShadow = !0, e.shadow && (t.shadow.mapSize.width = e.shadow.mapSize.width, t.shadow.mapSize.height = e.shadow.mapSize.height, t.shadow.camera.near = e.shadow.camera.near, t.shadow.camera.far = e.shadow.camera.far));
34
99
  break;
35
100
  case "point":
36
- a = new O.PointLight(
101
+ t = new A.PointLight(
37
102
  e.color,
38
103
  e.intensity,
39
104
  e.distance || 0,
40
105
  e.decay || 2
41
- ), e.position && (e.position === "camera" ? a.position.set(0, 0, 0) : a.position.set(e.position.x, e.position.y, e.position.z));
106
+ ), e.position && (e.position === "camera" ? t.position.set(0, 0, 0) : t.position.set(e.position.x, e.position.y, e.position.z));
42
107
  break;
43
108
  case "spot":
44
- a = new O.SpotLight(
109
+ t = new A.SpotLight(
45
110
  e.color,
46
111
  e.intensity,
47
112
  e.distance || 0,
48
113
  e.angle || Math.PI / 3,
49
114
  e.penumbra || 0,
50
115
  e.decay || 2
51
- ), e.position && (e.position === "camera" ? a.position.set(0, 0, 0) : a.position.set(e.position.x, e.position.y, e.position.z)), (e.target || e.position === "camera") && a.target.position.set(
116
+ ), e.position && (e.position === "camera" ? t.position.set(0, 0, 0) : t.position.set(e.position.x, e.position.y, e.position.z)), (e.target || e.position === "camera") && t.target.position.set(
52
117
  e.target?.x || 0,
53
118
  e.target?.y || 0,
54
119
  e.target?.z || 0
55
- ), e.castShadow && (a.castShadow = !0, e.shadow && (a.shadow.mapSize.width = e.shadow.mapSize.width, a.shadow.mapSize.height = e.shadow.mapSize.height, a.shadow.camera.near = e.shadow.camera.near, a.shadow.camera.far = e.shadow.camera.far));
120
+ ), e.castShadow && (t.castShadow = !0, e.shadow && (t.shadow.mapSize.width = e.shadow.mapSize.width, t.shadow.mapSize.height = e.shadow.mapSize.height, t.shadow.camera.near = e.shadow.camera.near, t.shadow.camera.far = e.shadow.camera.far));
56
121
  break;
57
122
  default:
58
123
  throw new Error("Unknown light type");
59
124
  }
60
- return a;
125
+ return t;
61
126
  }
62
- function Ee(e) {
127
+ function Xe(e) {
63
128
  const {
64
- width: a,
65
- autoRotate: v,
66
- data: w,
67
- enableZoom: H,
68
- categorical: R,
69
- colorDomain: p,
70
- colors: n,
71
- globeMaterial: l,
72
- height: W,
73
- polygonData: oe,
129
+ width: t,
130
+ autoRotate: n,
131
+ data: c,
132
+ enableZoom: v,
133
+ categorical: y,
134
+ colorDomain: m,
135
+ colors: l,
136
+ globeMaterial: p,
137
+ height: T,
138
+ polygonData: I,
74
139
  mapProperty: h,
75
- mapBorderColor: $,
76
- atmosphereColor: _,
140
+ mapBorderColor: _,
141
+ atmosphereColor: V,
77
142
  tooltip: q,
78
- styles: k,
143
+ styles: S,
79
144
  classNames: re,
80
- mapNoDataColor: m,
81
- colorLegendTitle: F,
82
- showColorScale: ae,
83
- hoverStrokeColor: ie,
84
- detailsOnClick: b,
85
- onSeriesMouseClick: M,
86
- onSeriesMouseOver: f,
87
- resetSelectionOnDoubleClick: P,
88
- highlightedIds: V,
89
- scale: u,
90
- globeOffset: S,
91
- polygonAltitude: G,
145
+ mapNoDataColor: f,
146
+ colorLegendTitle: G,
147
+ showColorScale: oe,
148
+ hoverStrokeColor: ae,
149
+ detailsOnClick: C,
150
+ onSeriesMouseClick: P,
151
+ onSeriesMouseOver: w,
152
+ resetSelectionOnDoubleClick: E,
153
+ highlightedIds: Z,
154
+ scale: x,
155
+ globeOffset: k,
156
+ polygonAltitude: F,
92
157
  centerLng: B,
93
- centerLat: I,
94
- atmosphereAltitude: X,
95
- globeCurvatureResolution: se,
96
- fogSettings: L,
97
- lights: z,
98
- highlightedAltitude: Z
99
- } = e, [J, ne] = j(!1), s = ge(void 0), [x, T] = j(void 0), [E, Y] = j(
100
- void 0
101
- ), [le, K] = j(!(a < 680)), [Q, de] = j({ x: 0, y: 0 }), [C, U] = j(void 0), g = R ? Ne().domain(p).range(n) : Me().domain(p).range(n);
102
- N(() => {
103
- s.current && (s.current.controls().enableZoom = H);
104
- }, [H]), N(() => {
105
- s.current && (C || x ? s.current.controls().autoRotate = !1 : (s.current.controls().autoRotate = v !== 0, s.current.controls().autoRotateSpeed = v));
106
- }, [C, x, v]), N(() => {
107
- s.current && E && s.current.pointOfView(
108
- { lat: E[1], lng: E[0], altitude: u },
109
- 1e3
110
- );
111
- }, [E, u]), N(() => {
112
- const t = s.current?.renderer().domElement;
113
- if (!t) return;
114
- const i = (o) => {
115
- de({ x: o.clientX, y: o.clientY });
158
+ centerLat: U,
159
+ atmosphereAltitude: J,
160
+ globeCurvatureResolution: ie,
161
+ fogSettings: O,
162
+ lights: R,
163
+ highlightedAltitude: Y,
164
+ selectedId: D
165
+ } = e, [K, se] = L(!1), d = we(void 0), [b, H] = L(void 0), [ne, Q] = L(!(t < 680)), [ee, le] = L({ x: 0, y: 0 }), [N, de] = L(void 0), W = y ? ze().domain(m).range(l) : Ae().domain(m).range(l);
166
+ M(() => {
167
+ d.current && (d.current.controls().enableZoom = v);
168
+ }, [v]), M(() => {
169
+ d.current && (N || b || D ? d.current.controls().autoRotate = !1 : (d.current.controls().autoRotate = n !== 0, d.current.controls().autoRotateSpeed = n));
170
+ }, [N, b, D, n]), M(() => {
171
+ if (d.current && D) {
172
+ const r = I.find(
173
+ (g) => g.properties[h] === D
174
+ ), [a, s] = Ue(r).geometry.coordinates;
175
+ d.current.pointOfView({ lat: s, lng: a, altitude: x }, 1e3);
176
+ }
177
+ }, [D, x, I, h]), M(() => {
178
+ const r = d.current?.renderer().domElement;
179
+ if (!r) return;
180
+ const a = (s) => {
181
+ le({ x: s.clientX, y: s.clientY });
116
182
  };
117
- return t.addEventListener("mousemove", i), () => t.removeEventListener("mousemove", i);
118
- }, []), N(() => {
119
- s.current && s.current.pointOfView({ lat: I, lng: B, altitude: u }, 1e3);
120
- }, [u, B, I]);
121
- const ee = l || new O.MeshBasicMaterial({
183
+ return r.addEventListener("mousemove", a), () => r.removeEventListener("mousemove", a);
184
+ }, []), M(() => {
185
+ d.current && d.current.pointOfView({ lat: U, lng: B, altitude: x }, 1e3);
186
+ }, [x, B, U]);
187
+ const X = p || new A.MeshBasicMaterial({
122
188
  color: "#FFF"
123
- }), D = me(() => {
124
- if (!s.current) return;
125
- const t = s.current.scene(), i = s.current.camera();
126
- let o = [];
127
- t.traverse((d) => {
128
- d instanceof O.Light && o.push(d);
129
- }), o = [...o, ...i.children], o.forEach((d) => d.parent?.remove(d)), z.map((d) => Te(d)).forEach((d, y) => {
130
- z[y].type !== "ambient" && z[y].position === "camera" ? (i.add(d), z[y].type !== "point" && i.add(d.target)) : t.add(d);
131
- }), L && (t.fog = new O.Fog(L.color, L.near, L.far));
132
- }, [z, L]), te = me(() => {
133
- ne(!0), D();
134
- }, [D]);
135
- return N(() => {
136
- J && D();
137
- }, [J, D]), /* @__PURE__ */ r.jsxs("div", { className: "relative", children: [
138
- /* @__PURE__ */ r.jsx(
139
- ve,
189
+ }), u = ue(() => {
190
+ if (!d.current) return;
191
+ const r = d.current.scene(), a = d.current.camera();
192
+ let s = [];
193
+ r.traverse((i) => {
194
+ i instanceof A.Light && s.push(i);
195
+ }), s = [...s, ...a.children], s.forEach((i) => i.parent?.remove(i)), R.map((i) => We(i)).forEach((i, j) => {
196
+ R[j].type !== "ambient" && R[j].position === "camera" ? (a.add(i), R[j].type !== "point" && a.add(i.target)) : r.add(i);
197
+ }), O && (r.fog = new A.Fog(O.color, O.near, O.far));
198
+ }, [R, O]), te = ue(() => {
199
+ se(!0), u();
200
+ }, [u]);
201
+ return M(() => {
202
+ K && u();
203
+ }, [K, u]), /* @__PURE__ */ o.jsxs("div", { className: "relative", children: [
204
+ /* @__PURE__ */ o.jsx(
205
+ ke,
140
206
  {
141
- ref: s,
142
- height: W,
143
- width: a,
144
- globeOffset: S,
207
+ ref: d,
208
+ height: T,
209
+ width: t,
210
+ globeOffset: k,
145
211
  lineHoverPrecision: 0,
146
- polygonsData: oe,
147
- polygonAltitude: (t) => V.includes(t?.properties?.[h]) || t?.properties?.[h] === C?.id || t?.properties?.[h] === x?.id ? Z : G,
148
- polygonCapColor: (t) => {
149
- const i = t?.properties?.[h], o = w.find((c) => c.id === i)?.x;
150
- return o != null ? g(o) : m;
212
+ polygonsData: I,
213
+ polygonAltitude: (r) => Z.includes(r?.properties?.[h]) || r?.properties?.[h] === D || r?.properties?.[h] === N?.id || r?.properties?.[h] === b?.id ? Y : F,
214
+ polygonCapColor: (r) => {
215
+ const a = r?.properties?.[h], s = c.find((g) => g.id === a)?.x;
216
+ return s != null ? W(s) : f;
151
217
  },
152
- polygonSideColor: (t) => {
153
- const i = t?.properties?.[h], o = w.find((d) => d.id === i)?.x, c = o != null ? g(o) : m;
154
- return V.includes(t?.properties?.[h]) ? c : "rgba(100,100,100,0)";
218
+ polygonSideColor: (r) => {
219
+ const a = r?.properties?.[h], s = c.find((i) => i.id === a)?.x, g = s != null ? W(s) : f;
220
+ return Z.includes(r?.properties?.[h]) ? g : "rgba(100,100,100,0)";
155
221
  },
156
- polygonStrokeColor: (t) => t?.properties?.[h] === C?.id ? ie : $,
222
+ polygonStrokeColor: (r) => r?.properties?.[h] === N?.id ? ae : _,
157
223
  onGlobeClick: () => {
158
- T(void 0);
224
+ H(void 0);
159
225
  },
160
- onPolygonClick: (t) => {
161
- const i = t?.properties?.[h] ? w.find((o) => o.id === t?.properties?.[h]) : void 0;
162
- if (M || b)
163
- if (we(x, i) && P && i)
164
- T(void 0), M?.(void 0), Y(void 0);
165
- else {
166
- T(i), M?.(i);
167
- const [o, c] = Ce(t).geometry.coordinates;
168
- Y([o, c]);
169
- }
226
+ onPolygonClick: (r) => {
227
+ const a = r?.properties?.[h] ? c.find((s) => s.id === r?.properties?.[h]) : void 0;
228
+ (P || C) && (De(b, a) && E && a ? (H(void 0), P?.(void 0)) : (H(a), P?.(a)));
170
229
  },
171
- onPolygonHover: (t) => {
172
- const i = t?.properties?.[h] ? w.find((o) => o.id === t?.properties?.[h]) : void 0;
173
- U(i), f?.(i);
230
+ onPolygonHover: (r) => {
231
+ const a = r?.properties?.[h] ? c.find((s) => s.id === r?.properties?.[h]) : void 0;
232
+ de(a), w?.(a);
174
233
  },
175
- atmosphereColor: _,
176
- atmosphereAltitude: X,
177
- globeCurvatureResolution: se,
178
- globeMaterial: ee,
234
+ atmosphereColor: V,
235
+ atmosphereAltitude: J,
236
+ globeCurvatureResolution: ie,
237
+ globeMaterial: X,
179
238
  backgroundColor: "rgba(0, 0, 0, 0)",
180
239
  polygonsTransitionDuration: 100,
181
240
  onGlobeReady: () => {
182
- if (s.current) {
183
- s.current.pointOfView({
184
- lat: I,
241
+ if (d.current) {
242
+ d.current.pointOfView({
243
+ lat: U,
185
244
  lng: B
186
245
  });
187
- const t = s.current.scene();
246
+ const r = d.current.scene();
188
247
  setTimeout(() => {
189
- (t.children[3]?.children[0]?.children[4]?.children || []).forEach((c) => {
190
- const d = c.children[1];
191
- d.renderOrder = 2;
248
+ (r.children[3]?.children[0]?.children[4]?.children || []).forEach((g) => {
249
+ const i = g.children[1];
250
+ i.renderOrder = 2;
192
251
  });
193
252
  }, 300);
194
- const i = s.current.camera();
195
- t.add(i), te();
253
+ const a = d.current.camera();
254
+ r.add(a), te();
196
255
  }
197
256
  }
198
257
  }
199
258
  ),
200
- ae === !1 ? null : /* @__PURE__ */ r.jsx("div", { className: "absolute left-4 bottom-4", children: le ? /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
201
- /* @__PURE__ */ r.jsx(
259
+ oe === !1 ? null : /* @__PURE__ */ o.jsx("div", { className: "absolute left-4 bottom-4", children: ne ? /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
260
+ /* @__PURE__ */ o.jsx(
202
261
  "div",
203
262
  {
204
263
  style: {
@@ -215,22 +274,22 @@ function Ee(e) {
215
274
  top: "-0.75rem"
216
275
  },
217
276
  onClick: () => {
218
- K(!1);
277
+ Q(!1);
219
278
  },
220
- children: /* @__PURE__ */ r.jsx(Se, {})
279
+ children: /* @__PURE__ */ o.jsx(Oe, {})
221
280
  }
222
281
  ),
223
- /* @__PURE__ */ r.jsxs(
282
+ /* @__PURE__ */ o.jsxs(
224
283
  "div",
225
284
  {
226
285
  className: "p-2",
227
286
  style: {
228
287
  backgroundColor: "rgba(240,240,240, 0.7)",
229
- width: R ? void 0 : "340px"
288
+ width: y ? void 0 : "340px"
230
289
  },
231
290
  children: [
232
- F && F !== "" ? /* @__PURE__ */ r.jsx(
233
- ue,
291
+ G && G !== "" ? /* @__PURE__ */ o.jsx(
292
+ ge,
234
293
  {
235
294
  size: "xs",
236
295
  marginBottom: "xs",
@@ -240,54 +299,54 @@ function Ee(e) {
240
299
  WebkitLineClamp: "1",
241
300
  WebkitBoxOrient: "vertical"
242
301
  },
243
- children: F
302
+ children: G
244
303
  }
245
304
  ) : null,
246
- R ? /* @__PURE__ */ r.jsx("div", { className: "flex flex-col gap-3", children: p.map((t, i) => /* @__PURE__ */ r.jsxs("div", { className: "flex gap-2 items-center", children: [
247
- /* @__PURE__ */ r.jsx(
305
+ y ? /* @__PURE__ */ o.jsx("div", { className: "flex flex-col gap-3", children: m.map((r, a) => /* @__PURE__ */ o.jsxs("div", { className: "flex gap-2 items-center", children: [
306
+ /* @__PURE__ */ o.jsx(
248
307
  "div",
249
308
  {
250
309
  className: "w-2 h-2 rounded-full",
251
- style: { backgroundColor: n[i % n.length] }
310
+ style: { backgroundColor: l[a % l.length] }
252
311
  }
253
312
  ),
254
- /* @__PURE__ */ r.jsx(ue, { size: "sm", marginBottom: "none", leading: "none", children: t })
255
- ] }, i)) }) : /* @__PURE__ */ r.jsx("svg", { width: "100%", viewBox: "0 0 320 30", direction: "ltr", children: /* @__PURE__ */ r.jsxs("g", { children: [
256
- p.map((t, i) => /* @__PURE__ */ r.jsxs("g", { className: "cursor-pointer", children: [
257
- /* @__PURE__ */ r.jsx(
313
+ /* @__PURE__ */ o.jsx(ge, { size: "sm", marginBottom: "none", leading: "none", children: r })
314
+ ] }, a)) }) : /* @__PURE__ */ o.jsx("svg", { width: "100%", viewBox: "0 0 320 30", direction: "ltr", children: /* @__PURE__ */ o.jsxs("g", { children: [
315
+ m.map((r, a) => /* @__PURE__ */ o.jsxs("g", { className: "cursor-pointer", children: [
316
+ /* @__PURE__ */ o.jsx(
258
317
  "rect",
259
318
  {
260
- x: i * 320 / n.length + 1,
319
+ x: a * 320 / l.length + 1,
261
320
  y: 1,
262
- width: 320 / n.length - 2,
321
+ width: 320 / l.length - 2,
263
322
  height: 8,
264
323
  style: {
265
- fill: n[i],
266
- stroke: n[i]
324
+ fill: l[a],
325
+ stroke: l[a]
267
326
  }
268
327
  }
269
328
  ),
270
- /* @__PURE__ */ r.jsx(
329
+ /* @__PURE__ */ o.jsx(
271
330
  "text",
272
331
  {
273
- x: (i + 1) * 320 / n.length,
332
+ x: (a + 1) * 320 / l.length,
274
333
  y: 25,
275
334
  className: "fill-primary-gray-700 dark:fill-primary-gray-300 text-xs",
276
335
  style: { textAnchor: "middle" },
277
- children: ke(t, "NA")
336
+ children: Pe(r, "NA")
278
337
  }
279
338
  )
280
- ] }, i)),
281
- /* @__PURE__ */ r.jsx("g", { children: /* @__PURE__ */ r.jsx(
339
+ ] }, a)),
340
+ /* @__PURE__ */ o.jsx("g", { children: /* @__PURE__ */ o.jsx(
282
341
  "rect",
283
342
  {
284
- x: p.length * 320 / n.length + 1,
343
+ x: m.length * 320 / l.length + 1,
285
344
  y: 1,
286
- width: 320 / n.length - 2,
345
+ width: 320 / l.length - 2,
287
346
  height: 8,
288
347
  style: {
289
- fill: n[p.length],
290
- stroke: n[p.length]
348
+ fill: l[m.length],
349
+ stroke: l[m.length]
291
350
  }
292
351
  }
293
352
  ) })
@@ -295,95 +354,95 @@ function Ee(e) {
295
354
  ]
296
355
  }
297
356
  )
298
- ] }) : /* @__PURE__ */ r.jsx(
357
+ ] }) : /* @__PURE__ */ o.jsx(
299
358
  "button",
300
359
  {
301
360
  type: "button",
302
361
  className: "mb-0 border-0 bg-transparent p-0 self-start",
303
362
  onClick: () => {
304
- K(!0);
363
+ Q(!0);
305
364
  },
306
- children: /* @__PURE__ */ r.jsx("div", { className: "items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500", children: "Show Legend" })
365
+ children: /* @__PURE__ */ o.jsx("div", { className: "items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500", children: "Show Legend" })
307
366
  }
308
367
  ) }),
309
- C && q ? /* @__PURE__ */ r.jsx(
310
- je,
368
+ N && q ? /* @__PURE__ */ o.jsx(
369
+ Le,
311
370
  {
312
- data: C,
371
+ data: N,
313
372
  body: q,
314
- xPos: Q.x,
315
- yPos: Q.y,
316
- backgroundStyle: k?.tooltip,
373
+ xPos: ee.x,
374
+ yPos: ee.y,
375
+ backgroundStyle: S?.tooltip,
317
376
  className: re?.tooltip
318
377
  }
319
378
  ) : null,
320
- b && x !== void 0 ? /* @__PURE__ */ r.jsx(
321
- be,
379
+ C && b !== void 0 ? /* @__PURE__ */ o.jsx(
380
+ Ne,
322
381
  {
323
- open: x !== void 0,
382
+ open: b !== void 0,
324
383
  onClose: () => {
325
- T(void 0);
384
+ H(void 0);
326
385
  },
327
- children: /* @__PURE__ */ r.jsx(
386
+ children: /* @__PURE__ */ o.jsx(
328
387
  "div",
329
388
  {
330
389
  className: "graph-modal-content m-0",
331
- dangerouslySetInnerHTML: typeof b == "string" ? { __html: De(b, x) } : void 0,
332
- children: typeof b == "function" ? b(x) : null
390
+ dangerouslySetInnerHTML: typeof C == "string" ? { __html: Re(C, b) } : void 0,
391
+ children: typeof C == "function" ? C(b) : null
333
392
  }
334
393
  )
335
394
  }
336
395
  ) : null
337
396
  ] });
338
397
  }
339
- function ot(e) {
398
+ function mt(e) {
340
399
  const {
341
- data: a,
342
- mapData: v = "https://raw.githubusercontent.com/UNDP-Data/dv-country-geojson/refs/heads/main/worldMap-simplified.json",
343
- graphTitle: w,
344
- colors: H,
345
- sources: R,
346
- graphDescription: p,
347
- height: n,
348
- width: l,
349
- footNote: W = "The designations employed and the presentation of material on this map do not imply the expression of any opinion whatsoever on the part of the Secretariat of the United Nations or UNDP concerning the legal status of any country, territory, city or area or its authorities, or concerning the delimitation of its frontiers or boundaries.",
350
- colorDomain: oe,
400
+ data: t,
401
+ mapData: n = "https://raw.githubusercontent.com/UNDP-Data/dv-country-geojson/refs/heads/main/worldMap-simplified.json",
402
+ graphTitle: c,
403
+ colors: v,
404
+ sources: y,
405
+ graphDescription: m,
406
+ height: l,
407
+ width: p,
408
+ footNote: T = "The designations employed and the presentation of material on this map do not imply the expression of any opinion whatsoever on the part of the Secretariat of the United Nations or UNDP concerning the legal status of any country, territory, city or area or its authorities, or concerning the delimitation of its frontiers or boundaries.",
409
+ colorDomain: I,
351
410
  colorLegendTitle: h,
352
- scaleType: $ = "threshold",
353
- padding: _,
354
- mapNoDataColor: q = A.light.graphNoData,
355
- backgroundColor: k = !1,
356
- mapBorderColor: re = A.light.grays["gray-500"],
357
- relativeHeight: m,
358
- tooltip: F,
359
- graphID: ae,
360
- mapProperty: ie = "ISO3",
361
- dataDownload: b = !1,
362
- language: M = "en",
363
- minHeight: f = 0,
364
- theme: P = "light",
365
- ariaLabel: V,
366
- styles: u,
367
- classNames: S,
368
- autoRotate: G = !0,
411
+ scaleType: _ = "threshold",
412
+ padding: V,
413
+ mapNoDataColor: q = $.light.graphNoData,
414
+ backgroundColor: S = !1,
415
+ mapBorderColor: re = $.light.grays["gray-500"],
416
+ relativeHeight: f,
417
+ tooltip: G,
418
+ graphID: oe,
419
+ mapProperty: ae = "ISO3",
420
+ dataDownload: C = !1,
421
+ language: P = "en",
422
+ minHeight: w = 0,
423
+ theme: E = "light",
424
+ ariaLabel: Z,
425
+ styles: x,
426
+ classNames: k,
427
+ autoRotate: F = !0,
369
428
  enableZoom: B = !0,
370
- globeMaterial: I,
371
- centerPoint: X = [0, 0],
372
- atmosphereColor: se = "#999",
373
- showColorScale: L = !0,
374
- resetSelectionOnDoubleClick: z = !0,
375
- detailsOnClick: Z,
376
- onSeriesMouseOver: J,
377
- onSeriesMouseClick: ne,
378
- highlightedIds: s = [],
379
- highlightedAltitude: x = 0.1,
380
- scale: T = 1,
381
- globeOffset: E = [0, 0],
382
- polygonAltitude: Y = 0.01,
383
- globeCurvatureResolution: le = 4,
384
- atmosphereAltitude: K = 0.15,
385
- fogSettings: Q,
386
- lights: de = [
429
+ globeMaterial: U,
430
+ centerPoint: J = [0, 0],
431
+ atmosphereColor: ie = "#999",
432
+ showColorScale: O = !0,
433
+ resetSelectionOnDoubleClick: R = !0,
434
+ detailsOnClick: Y,
435
+ onSeriesMouseOver: D,
436
+ onSeriesMouseClick: K,
437
+ highlightedIds: se = [],
438
+ highlightedAltitude: d = 0.1,
439
+ scale: b = 1,
440
+ globeOffset: H = [0, 0],
441
+ polygonAltitude: ne = 0.01,
442
+ globeCurvatureResolution: Q = 4,
443
+ atmosphereAltitude: ee = 0.15,
444
+ fogSettings: le,
445
+ lights: N = [
387
446
  {
388
447
  type: "ambient",
389
448
  color: 4210752,
@@ -395,154 +454,156 @@ function ot(e) {
395
454
  intensity: 1,
396
455
  position: { x: 5, y: 10, z: 5 }
397
456
  }
398
- ]
399
- } = e, [C, U] = j(void 0), [g, ee] = j(0), [D, te] = j(0), t = ge(null);
400
- N(() => {
401
- const o = new ResizeObserver((c) => {
402
- ee(l || c[0].target.clientWidth || 760), te(n || c[0].target.clientHeight || 480);
457
+ ],
458
+ selectedId: de
459
+ } = e, [W, X] = L(void 0), [u, te] = L(0), [r, a] = L(0), s = we(null);
460
+ M(() => {
461
+ const i = new ResizeObserver((j) => {
462
+ te(p || j[0].target.clientWidth || 760), a(l || j[0].target.clientHeight || 480);
403
463
  });
404
- return t.current && (te(t.current.clientHeight || 480), ee(t.current.clientWidth || 760), l || o.observe(t.current)), () => o.disconnect();
405
- }, [l, n]), N(() => {
406
- typeof v == "string" ? Oe(v).then((c) => {
407
- if (v === "https://raw.githubusercontent.com/UNDP-Data/dv-country-geojson/refs/heads/main/worldMap-simplified.json") {
408
- const d = c.features.map((y) => {
409
- if (y.geometry.type === "Polygon") {
410
- const ce = [...y.geometry.coordinates[0]].reverse(), he = { ...y.geometry, coordinates: [ce] };
411
- return { ...y, geometry: he };
464
+ return s.current && (a(s.current.clientHeight || 480), te(s.current.clientWidth || 760), p || i.observe(s.current)), () => i.disconnect();
465
+ }, [p, l]), M(() => {
466
+ typeof n == "string" ? He(n).then((j) => {
467
+ if (n === "https://raw.githubusercontent.com/UNDP-Data/dv-country-geojson/refs/heads/main/worldMap-simplified.json") {
468
+ const be = j.features.map((z) => {
469
+ if (z.geometry.type === "Polygon") {
470
+ const ce = [...z.geometry.coordinates[0]].reverse(), pe = { ...z.geometry, coordinates: [ce] };
471
+ return { ...z, geometry: pe };
412
472
  }
413
- const pe = [];
414
- y.geometry.coordinates.forEach((ce) => {
415
- const he = [...ce[0]].reverse();
416
- pe.push([he]);
473
+ const me = [];
474
+ z.geometry.coordinates.forEach((ce) => {
475
+ const pe = [...ce[0]].reverse();
476
+ me.push([pe]);
417
477
  });
418
- const ye = { ...y.geometry, coordinates: pe };
419
- return { ...y, geometry: ye };
478
+ const Ce = { ...z.geometry, coordinates: me };
479
+ return { ...z, geometry: Ce };
420
480
  });
421
- U(d);
422
- } else U(c.features);
423
- }) : U(v.features);
424
- }, [v]);
425
- const i = oe || ($ === "categorical" ? Re(a, "x") : Pe(
426
- a.map((o) => o.x),
427
- H?.length || 4
481
+ X(be);
482
+ } else X(j.features);
483
+ }) : X(n.features);
484
+ }, [n]);
485
+ const g = I || (_ === "categorical" ? $e(t, "x") : Ie(
486
+ t.map((i) => i.x),
487
+ v?.length || 4
428
488
  ));
429
- return /* @__PURE__ */ r.jsx(
489
+ return /* @__PURE__ */ o.jsx(
430
490
  "div",
431
491
  {
432
- className: `${P || "light"} flex ${l ? "w-fit grow-0" : "w-full grow"}`,
433
- dir: M === "he" || M === "ar" ? "rtl" : void 0,
434
- children: /* @__PURE__ */ r.jsx(
492
+ className: `${E || "light"} flex ${p ? "w-fit grow-0" : "w-full grow"}`,
493
+ dir: P === "he" || P === "ar" ? "rtl" : void 0,
494
+ children: /* @__PURE__ */ o.jsx(
435
495
  "div",
436
496
  {
437
- className: fe(
438
- `${k ? k === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${M || "en"}`,
439
- l ? "w-fit" : "w-full",
440
- S?.graphContainer
497
+ className: je(
498
+ `${S ? S === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${P || "en"}`,
499
+ p ? "w-fit" : "w-full",
500
+ k?.graphContainer
441
501
  ),
442
502
  style: {
443
- ...u?.graphContainer || {},
444
- ...k && k !== !0 ? { backgroundColor: k } : {}
503
+ ...x?.graphContainer || {},
504
+ ...S && S !== !0 ? { backgroundColor: S } : {}
445
505
  },
446
- id: ae,
447
- "aria-label": V || `${w ? `The graph shows ${w}. ` : ""}This is a map.${p ? ` ${p}` : ""}`,
448
- children: /* @__PURE__ */ r.jsx(
506
+ id: oe,
507
+ "aria-label": Z || `${c ? `The graph shows ${c}. ` : ""}This is a map.${m ? ` ${m}` : ""}`,
508
+ children: /* @__PURE__ */ o.jsx(
449
509
  "div",
450
510
  {
451
511
  className: "flex grow",
452
- style: { padding: k ? _ || "1rem" : _ || 0 },
453
- children: /* @__PURE__ */ r.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
454
- w || p || b ? /* @__PURE__ */ r.jsx(
455
- Le,
512
+ style: { padding: S ? V || "1rem" : V || 0 },
513
+ children: /* @__PURE__ */ o.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
514
+ c || m || C ? /* @__PURE__ */ o.jsx(
515
+ Te,
456
516
  {
457
517
  styles: {
458
- title: u?.title,
459
- description: u?.description
518
+ title: x?.title,
519
+ description: x?.description
460
520
  },
461
521
  classNames: {
462
- title: S?.title,
463
- description: S?.description
522
+ title: k?.title,
523
+ description: k?.description
464
524
  },
465
- graphTitle: w,
466
- graphDescription: p,
467
- width: l,
525
+ graphTitle: c,
526
+ graphDescription: m,
527
+ width: p,
468
528
  graphDownload: void 0,
469
- dataDownload: b ? a.map((o) => o.data).filter((o) => o !== void 0).length > 0 ? a.map((o) => o.data).filter((o) => o !== void 0) : a.filter((o) => o !== void 0) : null
529
+ dataDownload: C ? t.map((i) => i.data).filter((i) => i !== void 0).length > 0 ? t.map((i) => i.data).filter((i) => i !== void 0) : t.filter((i) => i !== void 0) : null
470
530
  }
471
531
  ) : null,
472
- /* @__PURE__ */ r.jsx(
532
+ /* @__PURE__ */ o.jsx(
473
533
  "div",
474
534
  {
475
535
  className: "flex flex-col grow justify-center leading-0",
476
- ref: t,
536
+ ref: s,
477
537
  "aria-label": "Map area",
478
- children: (l || g) && (n || D) && C ? /* @__PURE__ */ r.jsx(
479
- Ee,
538
+ children: (p || u) && (l || r) && W ? /* @__PURE__ */ o.jsx(
539
+ Xe,
480
540
  {
481
- data: a,
482
- globeOffset: E,
483
- polygonData: C,
484
- colorDomain: i,
485
- width: l || g,
541
+ data: t,
542
+ globeOffset: H,
543
+ polygonData: W,
544
+ colorDomain: g,
545
+ width: p || u,
486
546
  height: Math.max(
487
- f,
488
- n || (m ? f ? (l || g) * m > f ? (l || g) * m : f : (l || g) * m : D)
547
+ w,
548
+ l || (f ? w ? (p || u) * f > w ? (p || u) * f : w : (p || u) * f : r)
489
549
  ),
490
- colors: H || ($ === "categorical" ? A[P].sequentialColors[`neutralColorsx0${i.length}`] : A[P].sequentialColors[`neutralColorsx0${i.length + 1}`]),
550
+ colors: v || (_ === "categorical" ? $[E].sequentialColors[`neutralColorsx0${g.length}`] : $[E].sequentialColors[`neutralColorsx0${g.length + 1}`]),
491
551
  mapNoDataColor: q,
492
- categorical: $ === "categorical",
552
+ categorical: _ === "categorical",
493
553
  mapBorderColor: re,
494
- tooltip: F,
495
- mapProperty: ie,
496
- styles: u,
497
- classNames: S,
498
- autoRotate: G === !0 ? 1.5 : G === !1 ? 0 : G,
554
+ tooltip: G,
555
+ mapProperty: ae,
556
+ styles: x,
557
+ classNames: k,
558
+ autoRotate: F === !0 ? 1.5 : F === !1 ? 0 : F,
499
559
  enableZoom: B,
500
- globeMaterial: I,
501
- atmosphereColor: se,
560
+ globeMaterial: U,
561
+ atmosphereColor: ie,
502
562
  colorLegendTitle: h,
503
- showColorScale: L,
504
- hoverStrokeColor: P === "light" ? A.light.grays["gray-700"] : A.light.grays["gray-300"],
505
- highlightedIds: s,
506
- resetSelectionOnDoubleClick: z,
507
- detailsOnClick: Z,
508
- onSeriesMouseOver: J,
509
- onSeriesMouseClick: ne,
510
- scale: T,
511
- polygonAltitude: Y,
512
- centerLat: X[0],
513
- centerLng: X[1],
514
- atmosphereAltitude: K,
515
- globeCurvatureResolution: le,
516
- fogSettings: Q,
517
- lights: de,
518
- highlightedAltitude: x
563
+ showColorScale: O,
564
+ hoverStrokeColor: E === "light" ? $.light.grays["gray-700"] : $.light.grays["gray-300"],
565
+ highlightedIds: se,
566
+ resetSelectionOnDoubleClick: R,
567
+ detailsOnClick: Y,
568
+ onSeriesMouseOver: D,
569
+ onSeriesMouseClick: K,
570
+ scale: b,
571
+ polygonAltitude: ne,
572
+ centerLat: J[0],
573
+ centerLng: J[1],
574
+ atmosphereAltitude: ee,
575
+ globeCurvatureResolution: Q,
576
+ fogSettings: le,
577
+ lights: N,
578
+ highlightedAltitude: d,
579
+ selectedId: de
519
580
  }
520
- ) : /* @__PURE__ */ r.jsx(
581
+ ) : /* @__PURE__ */ o.jsx(
521
582
  "div",
522
583
  {
523
584
  style: {
524
585
  height: `${Math.max(
525
- f,
526
- n || (m ? f ? (l || g) * m > f ? (l || g) * m : f : (l || g) * m : D)
586
+ w,
587
+ l || (f ? w ? (p || u) * f > w ? (p || u) * f : w : (p || u) * f : r)
527
588
  )}px`
528
589
  },
529
590
  className: "flex items-center justify-center",
530
- children: /* @__PURE__ */ r.jsx(xe, { "aria-label": "Loading graph" })
591
+ children: /* @__PURE__ */ o.jsx(Se, { "aria-label": "Loading graph" })
531
592
  }
532
593
  )
533
594
  }
534
595
  ),
535
- R || W ? /* @__PURE__ */ r.jsx(
536
- ze,
596
+ y || T ? /* @__PURE__ */ o.jsx(
597
+ Ee,
537
598
  {
538
- styles: { footnote: u?.footnote, source: u?.source },
599
+ styles: { footnote: x?.footnote, source: x?.source },
539
600
  classNames: {
540
- footnote: S?.footnote,
541
- source: S?.source
601
+ footnote: k?.footnote,
602
+ source: k?.source
542
603
  },
543
- sources: R,
544
- footNote: W,
545
- width: l
604
+ sources: y,
605
+ footNote: T,
606
+ width: p
546
607
  }
547
608
  ) : null
548
609
  ] })
@@ -554,6 +615,6 @@ function ot(e) {
554
615
  );
555
616
  }
556
617
  export {
557
- ot as ThreeDGlobe
618
+ mt as ThreeDGlobe
558
619
  };
559
620
  //# sourceMappingURL=ThreeDGlobe.js.map