gralobe 1.0.62 → 1.0.63

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.
@@ -1,2 +1,468 @@
1
1
  // https://github.com/topojson/topojson-client v3.1.0 Copyright 2019 Mike Bostock
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).topojson=e.topojson||{})}(this,function(e){"use strict";function t(e){return e}function r(e){if(null==e)return t;var r,n,o=e.scale[0],a=e.scale[1],i=e.translate[0],c=e.translate[1];return function(e,t){t||(r=n=0);var u=2,f=e.length,s=new Array(f);for(s[0]=(r+=e[0])*o+i,s[1]=(n+=e[1])*a+c;u<f;)s[u]=e[u],++u;return s}}function n(e){var t,n=r(e.transform),o=1/0,a=o,i=-o,c=-o;function u(e){(e=n(e))[0]<o&&(o=e[0]),e[0]>i&&(i=e[0]),e[1]<a&&(a=e[1]),e[1]>c&&(c=e[1])}function f(e){switch(e.type){case"GeometryCollection":e.geometries.forEach(f);break;case"Point":u(e.coordinates);break;case"MultiPoint":e.coordinates.forEach(u)}}for(t in e.arcs.forEach(function(e){for(var t,r=-1,u=e.length;++r<u;)(t=n(e[r],r))[0]<o&&(o=t[0]),t[0]>i&&(i=t[0]),t[1]<a&&(a=t[1]),t[1]>c&&(c=t[1])}),e.objects)f(e.objects[t]);return[o,a,i,c]}function o(e,t){var r=t.id,n=t.bbox,o=null==t.properties?{}:t.properties,i=a(e,t);return null==r&&null==n?{type:"Feature",properties:o,geometry:i}:null==n?{type:"Feature",id:r,properties:o,geometry:i}:{type:"Feature",id:r,bbox:n,properties:o,geometry:i}}function a(e,t){var n=r(e.transform),o=e.arcs;function a(e,t){t.length&&t.pop();for(var r=o[e<0?~e:e],a=0,i=r.length;a<i;++a)t.push(n(r[a],a));e<0&&function(e,t){for(var r,n=e.length,o=n-t;o<--n;)r=e[o],e[o++]=e[n],e[n]=r}(t,i)}function i(e){return n(e)}function c(e){for(var t=[],r=0,n=e.length;r<n;++r)a(e[r],t);return t.length<2&&t.push(t[0]),t}function u(e){for(var t=c(e);t.length<4;)t.push(t[0]);return t}function f(e){return e.map(u)}return function e(t){var r,n=t.type;switch(n){case"GeometryCollection":return{type:n,geometries:t.geometries.map(e)};case"Point":r=i(t.coordinates);break;case"MultiPoint":r=t.coordinates.map(i);break;case"LineString":r=c(t.arcs);break;case"MultiLineString":r=t.arcs.map(c);break;case"Polygon":r=f(t.arcs);break;case"MultiPolygon":r=t.arcs.map(f);break;default:return null}return{type:n,coordinates:r}}(t)}function i(e,t){var r={},n={},o={},a=[],i=-1;function c(e,t){for(var n in e){var o=e[n];delete t[o.start],delete o.start,delete o.end,o.forEach(function(e){r[e<0?~e:e]=1}),a.push(o)}}return t.forEach(function(r,n){var o,a=e.arcs[r<0?~r:r];a.length<3&&!a[1][0]&&!a[1][1]&&(o=t[++i],t[i]=r,t[n]=o)}),t.forEach(function(t){var r,a,i=function(t){var r,n=e.arcs[t<0?~t:t],o=n[0];e.transform?(r=[0,0],n.forEach(function(e){r[0]+=e[0],r[1]+=e[1]})):r=n[n.length-1];return t<0?[r,o]:[o,r]}(t),c=i[0],u=i[1];if(r=o[c])if(delete o[r.end],r.push(t),r.end=u,a=n[u]){delete n[a.start];var f=a===r?r:r.concat(a);n[f.start=r.start]=o[f.end=a.end]=f}else n[r.start]=o[r.end]=r;else if(r=n[u])if(delete n[r.start],r.unshift(t),r.start=c,a=o[c]){delete o[a.end];var s=a===r?r:a.concat(r);n[s.start=a.start]=o[s.end=r.end]=s}else n[r.start]=o[r.end]=r;else n[(r=[t]).start=c]=o[r.end=u]=r}),c(o,n),c(n,o),t.forEach(function(e){r[e<0?~e:e]||a.push([e])}),a}function c(e,t,r){var n,o,a;if(arguments.length>1)n=function(e,t,r){var n,o=[],a=[];function i(e){var t=e<0?~e:e;(a[t]||(a[t]=[])).push({i:e,g:n})}function c(e){e.forEach(i)}function u(e){e.forEach(c)}return function e(t){switch(n=t,t.type){case"GeometryCollection":t.geometries.forEach(e);break;case"LineString":c(t.arcs);break;case"MultiLineString":case"Polygon":u(t.arcs);break;case"MultiPolygon":!function(e){e.forEach(u)}(t.arcs)}}(t),a.forEach(null==r?function(e){o.push(e[0].i)}:function(e){r(e[0].g,e[e.length-1].g)&&o.push(e[0].i)}),o}(0,t,r);else for(o=0,n=new Array(a=e.arcs.length);o<a;++o)n[o]=o;return{type:"MultiLineString",arcs:i(e,n)}}function u(e,t){var r={},n=[],o=[];function c(e){e.forEach(function(t){t.forEach(function(t){(r[t=t<0?~t:t]||(r[t]=[])).push(e)})}),n.push(e)}function u(t){return function(e){for(var t,r=-1,n=e.length,o=e[n-1],a=0;++r<n;)t=o,o=e[r],a+=t[0]*o[1]-t[1]*o[0];return Math.abs(a)}(a(e,{type:"Polygon",arcs:[t]}).coordinates[0])}return t.forEach(function e(t){switch(t.type){case"GeometryCollection":t.geometries.forEach(e);break;case"Polygon":c(t.arcs);break;case"MultiPolygon":t.arcs.forEach(c)}}),n.forEach(function(e){if(!e._){var t=[],n=[e];for(e._=1,o.push(t);e=n.pop();)t.push(e),e.forEach(function(e){e.forEach(function(e){r[e<0?~e:e].forEach(function(e){e._||(e._=1,n.push(e))})})})}}),n.forEach(function(e){delete e._}),{type:"MultiPolygon",arcs:o.map(function(t){var n,o=[];if(t.forEach(function(e){e.forEach(function(e){e.forEach(function(e){r[e<0?~e:e].length<2&&o.push(e)})})}),(n=(o=i(e,o)).length)>1)for(var a,c,f=1,s=u(o[0]);f<n;++f)(a=u(o[f]))>s&&(c=o[0],o[0]=o[f],o[f]=c,s=a);return o}).filter(function(e){return e.length>0})}}function f(e,t){for(var r=0,n=e.length;r<n;){var o=r+n>>>1;e[o]<t?r=o+1:n=o}return r}function s(e){if(null==e)return t;var r,n,o=e.scale[0],a=e.scale[1],i=e.translate[0],c=e.translate[1];return function(e,t){t||(r=n=0);var u=2,f=e.length,s=new Array(f),l=Math.round((e[0]-i)/o),h=Math.round((e[1]-c)/a);for(s[0]=l-r,r=l,s[1]=h-n,n=h;u<f;)s[u]=e[u],++u;return s}}e.bbox=n,e.feature=function(e,t){return"string"==typeof t&&(t=e.objects[t]),"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return o(e,t)})}:o(e,t)},e.merge=function(e){return a(e,u.apply(this,arguments))},e.mergeArcs=u,e.mesh=function(e){return a(e,c.apply(this,arguments))},e.meshArcs=c,e.neighbors=function(e){var t={},r=e.map(function(){return[]});function n(e,r){e.forEach(function(e){e<0&&(e=~e);var n=t[e];n?n.push(r):t[e]=[r]})}function o(e,t){e.forEach(function(e){n(e,t)})}var a={LineString:n,MultiLineString:o,Polygon:o,MultiPolygon:function(e,t){e.forEach(function(e){o(e,t)})}};for(var i in e.forEach(function e(t,r){"GeometryCollection"===t.type?t.geometries.forEach(function(t){e(t,r)}):t.type in a&&a[t.type](t.arcs,r)}),t)for(var c=t[i],u=c.length,s=0;s<u;++s)for(var l=s+1;l<u;++l){var h,p=c[s],g=c[l];(h=r[p])[i=f(h,g)]!==g&&h.splice(i,0,g),(h=r[g])[i=f(h,p)]!==p&&h.splice(i,0,p)}return r},e.quantize=function(e,t){if(e.transform)throw new Error("already quantized");if(t&&t.scale)u=e.bbox;else{if(!((r=Math.floor(t))>=2))throw new Error("n must be ≥2");var r,o=(u=e.bbox||n(e))[0],a=u[1],i=u[2],c=u[3];t={scale:[i-o?(i-o)/(r-1):1,c-a?(c-a)/(r-1):1],translate:[o,a]}}var u,f,l=s(t),h=e.objects,p={};function g(e){return l(e)}function y(e){var t;switch(e.type){case"GeometryCollection":t={type:"GeometryCollection",geometries:e.geometries.map(y)};break;case"Point":t={type:"Point",coordinates:g(e.coordinates)};break;case"MultiPoint":t={type:"MultiPoint",coordinates:e.coordinates.map(g)};break;default:return e}return null!=e.id&&(t.id=e.id),null!=e.bbox&&(t.bbox=e.bbox),null!=e.properties&&(t.properties=e.properties),t}for(f in h)p[f]=y(h[f]);return{type:"Topology",bbox:u,transform:t,objects:p,arcs:e.arcs.map(function(e){var t,r=0,n=1,o=e.length,a=new Array(o);for(a[0]=l(e[0],0);++r<o;)((t=l(e[r],r))[0]||t[1])&&(a[n++]=t);return 1===n&&(a[n++]=[0,0]),a.length=n,a})}},e.transform=r,e.untransform=s,Object.defineProperty(e,"__esModule",{value:!0})});
2
+ !((e, t) => {
3
+ "object" == typeof exports && "undefined" != typeof module
4
+ ? t(exports)
5
+ : "function" == typeof define && define.amd
6
+ ? define(["exports"], t)
7
+ : t(((e = e || self).topojson = e.topojson || {}));
8
+ })(this, (e) => {
9
+ function t(e) {
10
+ return e;
11
+ }
12
+ function r(e) {
13
+ if (null == e) return t;
14
+ var r,
15
+ n,
16
+ o = e.scale[0],
17
+ a = e.scale[1],
18
+ i = e.translate[0],
19
+ c = e.translate[1];
20
+ return (e, t) => {
21
+ t || (r = n = 0);
22
+ var u = 2,
23
+ f = e.length,
24
+ s = new Array(f);
25
+ for (s[0] = (r += e[0]) * o + i, s[1] = (n += e[1]) * a + c; u < f; ) (s[u] = e[u]), ++u;
26
+ return s;
27
+ };
28
+ }
29
+ function n(e) {
30
+ var t,
31
+ n = r(e.transform),
32
+ o = 1 / 0,
33
+ a = o,
34
+ i = -o,
35
+ c = -o;
36
+ function u(e) {
37
+ (e = n(e))[0] < o && (o = e[0]),
38
+ e[0] > i && (i = e[0]),
39
+ e[1] < a && (a = e[1]),
40
+ e[1] > c && (c = e[1]);
41
+ }
42
+ function f(e) {
43
+ switch (e.type) {
44
+ case "GeometryCollection":
45
+ e.geometries.forEach(f);
46
+ break;
47
+ case "Point":
48
+ u(e.coordinates);
49
+ break;
50
+ case "MultiPoint":
51
+ e.coordinates.forEach(u);
52
+ }
53
+ }
54
+ for (t in (e.arcs.forEach((e) => {
55
+ for (var t, r = -1, u = e.length; ++r < u; )
56
+ (t = n(e[r], r))[0] < o && (o = t[0]),
57
+ t[0] > i && (i = t[0]),
58
+ t[1] < a && (a = t[1]),
59
+ t[1] > c && (c = t[1]);
60
+ }),
61
+ e.objects))
62
+ f(e.objects[t]);
63
+ return [o, a, i, c];
64
+ }
65
+ function o(e, t) {
66
+ var r = t.id,
67
+ n = t.bbox,
68
+ o = null == t.properties ? {} : t.properties,
69
+ i = a(e, t);
70
+ return null == r && null == n
71
+ ? { type: "Feature", properties: o, geometry: i }
72
+ : null == n
73
+ ? { type: "Feature", id: r, properties: o, geometry: i }
74
+ : { type: "Feature", id: r, bbox: n, properties: o, geometry: i };
75
+ }
76
+ function a(e, t) {
77
+ var n = r(e.transform),
78
+ o = e.arcs;
79
+ function a(e, t) {
80
+ t.length && t.pop();
81
+ for (var r = o[e < 0 ? ~e : e], a = 0, i = r.length; a < i; ++a) t.push(n(r[a], a));
82
+ e < 0 &&
83
+ ((e, t) => {
84
+ for (var r, n = e.length, o = n - t; o < --n; ) (r = e[o]), (e[o++] = e[n]), (e[n] = r);
85
+ })(t, i);
86
+ }
87
+ function i(e) {
88
+ return n(e);
89
+ }
90
+ function c(e) {
91
+ for (var t = [], r = 0, n = e.length; r < n; ++r) a(e[r], t);
92
+ return t.length < 2 && t.push(t[0]), t;
93
+ }
94
+ function u(e) {
95
+ for (var t = c(e); t.length < 4; ) t.push(t[0]);
96
+ return t;
97
+ }
98
+ function f(e) {
99
+ return e.map(u);
100
+ }
101
+ return (function e(t) {
102
+ var r,
103
+ n = t.type;
104
+ switch (n) {
105
+ case "GeometryCollection":
106
+ return { type: n, geometries: t.geometries.map(e) };
107
+ case "Point":
108
+ r = i(t.coordinates);
109
+ break;
110
+ case "MultiPoint":
111
+ r = t.coordinates.map(i);
112
+ break;
113
+ case "LineString":
114
+ r = c(t.arcs);
115
+ break;
116
+ case "MultiLineString":
117
+ r = t.arcs.map(c);
118
+ break;
119
+ case "Polygon":
120
+ r = f(t.arcs);
121
+ break;
122
+ case "MultiPolygon":
123
+ r = t.arcs.map(f);
124
+ break;
125
+ default:
126
+ return null;
127
+ }
128
+ return { type: n, coordinates: r };
129
+ })(t);
130
+ }
131
+ function i(e, t) {
132
+ var r = {},
133
+ n = {},
134
+ o = {},
135
+ a = [],
136
+ i = -1;
137
+ function c(e, t) {
138
+ for (var n in e) {
139
+ var o = e[n];
140
+ delete t[o.start],
141
+ delete o.start,
142
+ delete o.end,
143
+ o.forEach((e) => {
144
+ r[e < 0 ? ~e : e] = 1;
145
+ }),
146
+ a.push(o);
147
+ }
148
+ }
149
+ return (
150
+ t.forEach((r, n) => {
151
+ var o,
152
+ a = e.arcs[r < 0 ? ~r : r];
153
+ a.length < 3 && !a[1][0] && !a[1][1] && ((o = t[++i]), (t[i] = r), (t[n] = o));
154
+ }),
155
+ t.forEach((t) => {
156
+ var r,
157
+ a,
158
+ i = ((t) => {
159
+ var r,
160
+ n = e.arcs[t < 0 ? ~t : t],
161
+ o = n[0];
162
+ e.transform
163
+ ? ((r = [0, 0]),
164
+ n.forEach((e) => {
165
+ (r[0] += e[0]), (r[1] += e[1]);
166
+ }))
167
+ : (r = n[n.length - 1]);
168
+ return t < 0 ? [r, o] : [o, r];
169
+ })(t),
170
+ c = i[0],
171
+ u = i[1];
172
+ if ((r = o[c]))
173
+ if ((delete o[r.end], r.push(t), (r.end = u), (a = n[u]))) {
174
+ delete n[a.start];
175
+ var f = a === r ? r : r.concat(a);
176
+ n[(f.start = r.start)] = o[(f.end = a.end)] = f;
177
+ } else n[r.start] = o[r.end] = r;
178
+ else if ((r = n[u]))
179
+ if ((delete n[r.start], r.unshift(t), (r.start = c), (a = o[c]))) {
180
+ delete o[a.end];
181
+ var s = a === r ? r : a.concat(r);
182
+ n[(s.start = a.start)] = o[(s.end = r.end)] = s;
183
+ } else n[r.start] = o[r.end] = r;
184
+ else n[((r = [t]).start = c)] = o[(r.end = u)] = r;
185
+ }),
186
+ c(o, n),
187
+ c(n, o),
188
+ t.forEach((e) => {
189
+ r[e < 0 ? ~e : e] || a.push([e]);
190
+ }),
191
+ a
192
+ );
193
+ }
194
+ function c(e, t, r) {
195
+ var n, o, a;
196
+ if (arguments.length > 1)
197
+ n = ((e, t, r) => {
198
+ var n,
199
+ o = [],
200
+ a = [];
201
+ function i(e) {
202
+ var t = e < 0 ? ~e : e;
203
+ (a[t] || (a[t] = [])).push({ i: e, g: n });
204
+ }
205
+ function c(e) {
206
+ e.forEach(i);
207
+ }
208
+ function u(e) {
209
+ e.forEach(c);
210
+ }
211
+ return (
212
+ (function e(t) {
213
+ switch (((n = t), t.type)) {
214
+ case "GeometryCollection":
215
+ t.geometries.forEach(e);
216
+ break;
217
+ case "LineString":
218
+ c(t.arcs);
219
+ break;
220
+ case "MultiLineString":
221
+ case "Polygon":
222
+ u(t.arcs);
223
+ break;
224
+ case "MultiPolygon":
225
+ !((e) => {
226
+ e.forEach(u);
227
+ })(t.arcs);
228
+ }
229
+ })(t),
230
+ a.forEach(
231
+ null == r
232
+ ? (e) => {
233
+ o.push(e[0].i);
234
+ }
235
+ : (e) => {
236
+ r(e[0].g, e[e.length - 1].g) && o.push(e[0].i);
237
+ },
238
+ ),
239
+ o
240
+ );
241
+ })(0, t, r);
242
+ else for (o = 0, n = new Array((a = e.arcs.length)); o < a; ++o) n[o] = o;
243
+ return { type: "MultiLineString", arcs: i(e, n) };
244
+ }
245
+ function u(e, t) {
246
+ var r = {},
247
+ n = [],
248
+ o = [];
249
+ function c(e) {
250
+ e.forEach((t) => {
251
+ t.forEach((t) => {
252
+ (r[(t = t < 0 ? ~t : t)] || (r[t] = [])).push(e);
253
+ });
254
+ }),
255
+ n.push(e);
256
+ }
257
+ function u(t) {
258
+ return ((e) => {
259
+ for (var t, r = -1, n = e.length, o = e[n - 1], a = 0; ++r < n; )
260
+ (t = o), (o = e[r]), (a += t[0] * o[1] - t[1] * o[0]);
261
+ return Math.abs(a);
262
+ })(a(e, { type: "Polygon", arcs: [t] }).coordinates[0]);
263
+ }
264
+ return (
265
+ t.forEach(function e(t) {
266
+ switch (t.type) {
267
+ case "GeometryCollection":
268
+ t.geometries.forEach(e);
269
+ break;
270
+ case "Polygon":
271
+ c(t.arcs);
272
+ break;
273
+ case "MultiPolygon":
274
+ t.arcs.forEach(c);
275
+ }
276
+ }),
277
+ n.forEach((e) => {
278
+ if (!e._) {
279
+ var t = [],
280
+ n = [e];
281
+ for (e._ = 1, o.push(t); (e = n.pop()); )
282
+ t.push(e),
283
+ e.forEach((e) => {
284
+ e.forEach((e) => {
285
+ r[e < 0 ? ~e : e].forEach((e) => {
286
+ e._ || ((e._ = 1), n.push(e));
287
+ });
288
+ });
289
+ });
290
+ }
291
+ }),
292
+ n.forEach((e) => {
293
+ delete e._;
294
+ }),
295
+ {
296
+ type: "MultiPolygon",
297
+ arcs: o
298
+ .map((t) => {
299
+ var n,
300
+ o = [];
301
+ if (
302
+ (t.forEach((e) => {
303
+ e.forEach((e) => {
304
+ e.forEach((e) => {
305
+ r[e < 0 ? ~e : e].length < 2 && o.push(e);
306
+ });
307
+ });
308
+ }),
309
+ (n = (o = i(e, o)).length) > 1)
310
+ )
311
+ for (var a, c, f = 1, s = u(o[0]); f < n; ++f)
312
+ (a = u(o[f])) > s && ((c = o[0]), (o[0] = o[f]), (o[f] = c), (s = a));
313
+ return o;
314
+ })
315
+ .filter((e) => e.length > 0),
316
+ }
317
+ );
318
+ }
319
+ function f(e, t) {
320
+ for (var r = 0, n = e.length; r < n; ) {
321
+ var o = (r + n) >>> 1;
322
+ e[o] < t ? (r = o + 1) : (n = o);
323
+ }
324
+ return r;
325
+ }
326
+ function s(e) {
327
+ if (null == e) return t;
328
+ var r,
329
+ n,
330
+ o = e.scale[0],
331
+ a = e.scale[1],
332
+ i = e.translate[0],
333
+ c = e.translate[1];
334
+ return (e, t) => {
335
+ t || (r = n = 0);
336
+ var u = 2,
337
+ f = e.length,
338
+ s = new Array(f),
339
+ l = Math.round((e[0] - i) / o),
340
+ h = Math.round((e[1] - c) / a);
341
+ for (s[0] = l - r, r = l, s[1] = h - n, n = h; u < f; ) (s[u] = e[u]), ++u;
342
+ return s;
343
+ };
344
+ }
345
+ (e.bbox = n),
346
+ (e.feature = (e, t) => (
347
+ "string" == typeof t && (t = e.objects[t]),
348
+ "GeometryCollection" === t.type
349
+ ? { type: "FeatureCollection", features: t.geometries.map((t) => o(e, t)) }
350
+ : o(e, t)
351
+ )),
352
+ (e.merge = function (e) {
353
+ return a(e, u.apply(this, arguments));
354
+ }),
355
+ (e.mergeArcs = u),
356
+ (e.mesh = function (e) {
357
+ return a(e, c.apply(this, arguments));
358
+ }),
359
+ (e.meshArcs = c),
360
+ (e.neighbors = (e) => {
361
+ var t = {},
362
+ r = e.map(() => []);
363
+ function n(e, r) {
364
+ e.forEach((e) => {
365
+ e < 0 && (e = ~e);
366
+ var n = t[e];
367
+ n ? n.push(r) : (t[e] = [r]);
368
+ });
369
+ }
370
+ function o(e, t) {
371
+ e.forEach((e) => {
372
+ n(e, t);
373
+ });
374
+ }
375
+ var a = {
376
+ LineString: n,
377
+ MultiLineString: o,
378
+ Polygon: o,
379
+ MultiPolygon: (e, t) => {
380
+ e.forEach((e) => {
381
+ o(e, t);
382
+ });
383
+ },
384
+ };
385
+ for (var i in (e.forEach(function e(t, r) {
386
+ "GeometryCollection" === t.type
387
+ ? t.geometries.forEach((t) => {
388
+ e(t, r);
389
+ })
390
+ : t.type in a && a[t.type](t.arcs, r);
391
+ }),
392
+ t))
393
+ for (var c = t[i], u = c.length, s = 0; s < u; ++s)
394
+ for (var l = s + 1; l < u; ++l) {
395
+ var h,
396
+ p = c[s],
397
+ g = c[l];
398
+ (h = r[p])[(i = f(h, g))] !== g && h.splice(i, 0, g),
399
+ (h = r[g])[(i = f(h, p))] !== p && h.splice(i, 0, p);
400
+ }
401
+ return r;
402
+ }),
403
+ (e.quantize = (e, t) => {
404
+ if (e.transform) throw new Error("already quantized");
405
+ if (t && t.scale) u = e.bbox;
406
+ else {
407
+ if (!((r = Math.floor(t)) >= 2)) throw new Error("n must be ≥2");
408
+ var r,
409
+ o = (u = e.bbox || n(e))[0],
410
+ a = u[1],
411
+ i = u[2],
412
+ c = u[3];
413
+ t = {
414
+ scale: [i - o ? (i - o) / (r - 1) : 1, c - a ? (c - a) / (r - 1) : 1],
415
+ translate: [o, a],
416
+ };
417
+ }
418
+ var u,
419
+ f,
420
+ l = s(t),
421
+ h = e.objects,
422
+ p = {};
423
+ function g(e) {
424
+ return l(e);
425
+ }
426
+ function y(e) {
427
+ var t;
428
+ switch (e.type) {
429
+ case "GeometryCollection":
430
+ t = { type: "GeometryCollection", geometries: e.geometries.map(y) };
431
+ break;
432
+ case "Point":
433
+ t = { type: "Point", coordinates: g(e.coordinates) };
434
+ break;
435
+ case "MultiPoint":
436
+ t = { type: "MultiPoint", coordinates: e.coordinates.map(g) };
437
+ break;
438
+ default:
439
+ return e;
440
+ }
441
+ return (
442
+ null != e.id && (t.id = e.id),
443
+ null != e.bbox && (t.bbox = e.bbox),
444
+ null != e.properties && (t.properties = e.properties),
445
+ t
446
+ );
447
+ }
448
+ for (f in h) p[f] = y(h[f]);
449
+ return {
450
+ type: "Topology",
451
+ bbox: u,
452
+ transform: t,
453
+ objects: p,
454
+ arcs: e.arcs.map((e) => {
455
+ var t,
456
+ r = 0,
457
+ n = 1,
458
+ o = e.length,
459
+ a = new Array(o);
460
+ for (a[0] = l(e[0], 0); ++r < o; ) ((t = l(e[r], r))[0] || t[1]) && (a[n++] = t);
461
+ return 1 === n && (a[n++] = [0, 0]), (a.length = n), a;
462
+ }),
463
+ };
464
+ }),
465
+ (e.transform = r),
466
+ (e.untransform = s),
467
+ Object.defineProperty(e, "__esModule", { value: !0 });
468
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gralobe",
3
- "version": "1.0.62",
3
+ "version": "1.0.63",
4
4
  "description": "Interactive 3D globe visualization with statistics, smooth flat map ↔ globe transitions, and country labels",
5
5
  "type": "module",
6
6
  "main": "./dist/gralobe.umd.cjs",
@@ -43,21 +43,28 @@
43
43
  "build": "tsc && vite build",
44
44
  "build:lib": "tsc && vite build --mode lib",
45
45
  "preview": "vite preview",
46
- "test": "playwright test",
46
+ "test": "vitest run",
47
+ "test:watch": "vitest",
48
+ "test:e2e": "playwright test",
47
49
  "test:ui": "playwright test --ui",
50
+ "lint": "biome check .",
51
+ "format": "biome check --write .",
48
52
  "prepublishOnly": "npm run build:lib"
49
53
  },
50
54
  "peerDependencies": {
51
55
  "three": ">=0.150.0"
52
56
  },
53
57
  "devDependencies": {
58
+ "@biomejs/biome": "2.3.11",
54
59
  "@playwright/test": "^1.57.0",
55
60
  "@types/node": "^25.0.9",
56
61
  "@types/topojson-client": "^3.1.5",
57
62
  "@types/topojson-specification": "^1.0.5",
63
+ "@vitest/coverage-v8": "^4.0.18",
58
64
  "typescript": "~5.9.3",
59
65
  "vite": "^7.2.4",
60
- "vite-plugin-dts": "^4.5.4"
66
+ "vite-plugin-dts": "^4.5.4",
67
+ "vitest": "^4.0.18"
61
68
  },
62
69
  "dependencies": {
63
70
  "@types/three": "^0.181.0",