geojs 1.12.3 → 1.12.5

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/geo.lean.js CHANGED
@@ -3445,6 +3445,7 @@ var _annotationLayer = function annotationLayer(arg) {
3445
3445
  m_options,
3446
3446
  m_mode = null,
3447
3447
  m_annotations = [],
3448
+ m_annotationIds = {},
3448
3449
  m_features = [],
3449
3450
  m_labelFeature,
3450
3451
  m_labelLayer,
@@ -3886,6 +3887,7 @@ var _annotationLayer = function annotationLayer(arg) {
3886
3887
  annotation: annotation
3887
3888
  });
3888
3889
  m_annotations.push(annotation);
3890
+ m_annotationIds[annotation.id()] = annotation;
3889
3891
  annotation.layer(m_this);
3890
3892
  var map = m_this.map();
3891
3893
  gcs = gcs === null ? map.gcs() : gcs === undefined ? map.ingcs() : gcs;
@@ -3918,6 +3920,9 @@ var _annotationLayer = function annotationLayer(arg) {
3918
3920
  if (annotation === m_this.currentAnnotation) {
3919
3921
  m_this.currentAnnotation = null;
3920
3922
  }
3923
+ if (m_annotationIds[annotation.id()] !== undefined) {
3924
+ delete m_annotationIds[annotation.id()];
3925
+ }
3921
3926
  annotation._exit();
3922
3927
  m_annotations.splice(pos, 1);
3923
3928
  if (update !== false) {
@@ -3980,12 +3985,7 @@ var _annotationLayer = function annotationLayer(arg) {
3980
3985
  if (id !== undefined && id !== null) {
3981
3986
  id = +id; /* Cast to int */
3982
3987
  }
3983
- var annotations = m_annotations.filter(function (annotation) {
3984
- return annotation.id() === id;
3985
- });
3986
- if (annotations.length) {
3987
- return annotations[0];
3988
- }
3988
+ return m_annotationIds[id];
3989
3989
  };
3990
3990
 
3991
3991
  /* A list of special modes */
@@ -4840,6 +4840,7 @@ var _annotationLayer = function annotationLayer(arg) {
4840
4840
  // Call super class exit
4841
4841
  s_exit.call(m_this);
4842
4842
  m_annotations = [];
4843
+ m_annotationIds = {};
4843
4844
  m_features = [];
4844
4845
  return m_this;
4845
4846
  };
@@ -16352,10 +16353,10 @@ var _map2 = function map(arg) {
16352
16353
  this.layers = this.children;
16353
16354
 
16354
16355
  /**
16355
- * Comapare two layers by zIndex. If the zIndex is the same, the order in
16356
- * the parent element is used. If the two layers don't have the same parent
16357
- * (for instance, one layer isn't attached to the map), layers in the map
16358
- * are sorted below detached layers.
16356
+ * Compare two layers by zIndex. If the zIndex is the same, the order in the
16357
+ * parent element is used. If the two layers don't have the same parent (for
16358
+ * instance, one layer isn't attached to the map), layers in the map are
16359
+ * sorted below detached layers.
16359
16360
  *
16360
16361
  * @param {geo.layer} a First layer to compare.
16361
16362
  * @param {geo.layer} b Second layer to compare.
@@ -17268,7 +17269,7 @@ var Mousetrap = __webpack_require__(7549);
17268
17269
  * @property {boolean} [keyboard.focusHighlight=true] If truthy, when the map
17269
17270
  * gains focus, a highlight style is shown around it. This gives an
17270
17271
  * indicator that keyboard events will affect the map, but may not be
17271
- * visuallly desirabel.
17272
+ * visually desirable.
17272
17273
  * @property {boolean} [alwaysTouch=false] If true, add touch support even if
17273
17274
  * the browser doesn't apepar to be touch-aware.
17274
17275
  * @property {number} [wheelScaleX=1] A scale multiplier for horizontal wheel
@@ -22015,7 +22016,7 @@ var _pointFeature = function pointFeature(arg) {
22015
22016
  m_clusterTree = new ClusterGroup(opts);
22016
22017
  m_allData.forEach(function (d, i) {
22017
22018
  // for each point in the data set normalize the coordinate
22018
- // representation and add the point to the cluster treee
22019
+ // representation and add the point to the cluster tree
22019
22020
  var pt = util.normalizeCoordinates(position(d, i));
22020
22021
  pt.index = i;
22021
22022
  m_clusterTree.addPoint(pt);
@@ -23200,7 +23201,7 @@ var _polygonFeature = function polygonFeature(arg) {
23200
23201
  return data;
23201
23202
  }
23202
23203
 
23203
- /* Set the reduced polgons as the data and use simple accessors. */
23204
+ /* Set the reduced polygons as the data and use simple accessors. */
23204
23205
  m_this.style('position', util.identityFunction);
23205
23206
  m_this.style('polygon', util.identityFunction);
23206
23207
  m_this.data(data);
@@ -25072,7 +25073,7 @@ module.exports = _sceneObject;
25072
25073
  * @constant
25073
25074
  * @type {string}
25074
25075
  */
25075
- module.exports = "9247bbff883ef9933b82df63c762b4d0dfcce9ae";
25076
+ module.exports = "1fd3450e4c094c4475819ff627ee93484c684c3c";
25076
25077
 
25077
25078
  /***/ }),
25078
25079
 
@@ -32276,7 +32277,7 @@ __webpack_require__(615);
32276
32277
  * that determine what round values are displayed.
32277
32278
  * @property {number} multiples.multiple The value that is selected for display.
32278
32279
  * @property {number} multiples.digit The number of significant digits in
32279
- * `mutliple`.
32280
+ * `multiple`.
32280
32281
  */
32281
32282
 
32282
32283
  /**
@@ -36911,7 +36912,7 @@ module.exports = _vectorFeature;
36911
36912
  * @constant
36912
36913
  * @type {string}
36913
36914
  */
36914
- module.exports = "1.12.3";
36915
+ module.exports = "1.12.5";
36915
36916
 
36916
36917
  /***/ }),
36917
36918
 
@@ -41676,7 +41677,7 @@ var _vtkjsRenderer = function vtkjsRenderer(arg) {
41676
41677
  /* If we are already scheduled to render, don't schedule again. Rather,
41677
41678
  * mark that we should render after other animation frame requests occur.
41678
41679
  * It would be nice if we could just reschedule the call by removing and
41679
- * readding the animation frame request, but this doesn't work for if the
41680
+ * re-adding the animation frame request, but this doesn't work for if the
41680
41681
  * reschedule occurs during another animation frame callback (it then waits
41681
41682
  * until a subsequent frame). */
41682
41683
  m_this.layer().map().scheduleAnimationFrame(m_this._renderFrame, true);
@@ -44664,7 +44665,8 @@ var _webgl_polygonFeature = function webgl_polygonFeature(arg) {
44664
44665
  arg = arg || {};
44665
44666
  polygonFeature.call(this, arg);
44666
44667
  var vgl = __webpack_require__(1611);
44667
- var earcut = __webpack_require__(5230);
44668
+ var earcut = __webpack_require__(9747);
44669
+ earcut = earcut.__esModule ? earcut.default : earcut;
44668
44670
  var transform = __webpack_require__(5325);
44669
44671
  var util = __webpack_require__(642);
44670
44672
  var object = __webpack_require__(4084);
@@ -46433,695 +46435,6 @@ module.exports = function (item) {
46433
46435
  return [content].join("\n");
46434
46436
  };
46435
46437
 
46436
- /***/ }),
46437
-
46438
- /***/ 5230:
46439
- /***/ (function(module) {
46440
-
46441
- "use strict";
46442
-
46443
-
46444
- module.exports = earcut;
46445
- module.exports["default"] = earcut;
46446
-
46447
- function earcut(data, holeIndices, dim) {
46448
-
46449
- dim = dim || 2;
46450
-
46451
- var hasHoles = holeIndices && holeIndices.length,
46452
- outerLen = hasHoles ? holeIndices[0] * dim : data.length,
46453
- outerNode = linkedList(data, 0, outerLen, dim, true),
46454
- triangles = [];
46455
-
46456
- if (!outerNode || outerNode.next === outerNode.prev) return triangles;
46457
-
46458
- var minX, minY, maxX, maxY, x, y, invSize;
46459
-
46460
- if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
46461
-
46462
- // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
46463
- if (data.length > 80 * dim) {
46464
- minX = maxX = data[0];
46465
- minY = maxY = data[1];
46466
-
46467
- for (var i = dim; i < outerLen; i += dim) {
46468
- x = data[i];
46469
- y = data[i + 1];
46470
- if (x < minX) minX = x;
46471
- if (y < minY) minY = y;
46472
- if (x > maxX) maxX = x;
46473
- if (y > maxY) maxY = y;
46474
- }
46475
-
46476
- // minX, minY and invSize are later used to transform coords into integers for z-order calculation
46477
- invSize = Math.max(maxX - minX, maxY - minY);
46478
- invSize = invSize !== 0 ? 32767 / invSize : 0;
46479
- }
46480
-
46481
- earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);
46482
-
46483
- return triangles;
46484
- }
46485
-
46486
- // create a circular doubly linked list from polygon points in the specified winding order
46487
- function linkedList(data, start, end, dim, clockwise) {
46488
- var i, last;
46489
-
46490
- if (clockwise === (signedArea(data, start, end, dim) > 0)) {
46491
- for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);
46492
- } else {
46493
- for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);
46494
- }
46495
-
46496
- if (last && equals(last, last.next)) {
46497
- removeNode(last);
46498
- last = last.next;
46499
- }
46500
-
46501
- return last;
46502
- }
46503
-
46504
- // eliminate colinear or duplicate points
46505
- function filterPoints(start, end) {
46506
- if (!start) return start;
46507
- if (!end) end = start;
46508
-
46509
- var p = start,
46510
- again;
46511
- do {
46512
- again = false;
46513
-
46514
- if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
46515
- removeNode(p);
46516
- p = end = p.prev;
46517
- if (p === p.next) break;
46518
- again = true;
46519
-
46520
- } else {
46521
- p = p.next;
46522
- }
46523
- } while (again || p !== end);
46524
-
46525
- return end;
46526
- }
46527
-
46528
- // main ear slicing loop which triangulates a polygon (given as a linked list)
46529
- function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {
46530
- if (!ear) return;
46531
-
46532
- // interlink polygon nodes in z-order
46533
- if (!pass && invSize) indexCurve(ear, minX, minY, invSize);
46534
-
46535
- var stop = ear,
46536
- prev, next;
46537
-
46538
- // iterate through ears, slicing them one by one
46539
- while (ear.prev !== ear.next) {
46540
- prev = ear.prev;
46541
- next = ear.next;
46542
-
46543
- if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {
46544
- // cut off the triangle
46545
- triangles.push(prev.i / dim | 0);
46546
- triangles.push(ear.i / dim | 0);
46547
- triangles.push(next.i / dim | 0);
46548
-
46549
- removeNode(ear);
46550
-
46551
- // skipping the next vertex leads to less sliver triangles
46552
- ear = next.next;
46553
- stop = next.next;
46554
-
46555
- continue;
46556
- }
46557
-
46558
- ear = next;
46559
-
46560
- // if we looped through the whole remaining polygon and can't find any more ears
46561
- if (ear === stop) {
46562
- // try filtering points and slicing again
46563
- if (!pass) {
46564
- earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);
46565
-
46566
- // if this didn't work, try curing all small self-intersections locally
46567
- } else if (pass === 1) {
46568
- ear = cureLocalIntersections(filterPoints(ear), triangles, dim);
46569
- earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);
46570
-
46571
- // as a last resort, try splitting the remaining polygon into two
46572
- } else if (pass === 2) {
46573
- splitEarcut(ear, triangles, dim, minX, minY, invSize);
46574
- }
46575
-
46576
- break;
46577
- }
46578
- }
46579
- }
46580
-
46581
- // check whether a polygon node forms a valid ear with adjacent nodes
46582
- function isEar(ear) {
46583
- var a = ear.prev,
46584
- b = ear,
46585
- c = ear.next;
46586
-
46587
- if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
46588
-
46589
- // now make sure we don't have other points inside the potential ear
46590
- var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;
46591
-
46592
- // triangle bbox; min & max are calculated like this for speed
46593
- var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),
46594
- y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),
46595
- x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),
46596
- y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);
46597
-
46598
- var p = c.next;
46599
- while (p !== a) {
46600
- if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&
46601
- pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&
46602
- area(p.prev, p, p.next) >= 0) return false;
46603
- p = p.next;
46604
- }
46605
-
46606
- return true;
46607
- }
46608
-
46609
- function isEarHashed(ear, minX, minY, invSize) {
46610
- var a = ear.prev,
46611
- b = ear,
46612
- c = ear.next;
46613
-
46614
- if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
46615
-
46616
- var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;
46617
-
46618
- // triangle bbox; min & max are calculated like this for speed
46619
- var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),
46620
- y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),
46621
- x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),
46622
- y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);
46623
-
46624
- // z-order range for the current triangle bbox;
46625
- var minZ = zOrder(x0, y0, minX, minY, invSize),
46626
- maxZ = zOrder(x1, y1, minX, minY, invSize);
46627
-
46628
- var p = ear.prevZ,
46629
- n = ear.nextZ;
46630
-
46631
- // look for points inside the triangle in both directions
46632
- while (p && p.z >= minZ && n && n.z <= maxZ) {
46633
- if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&
46634
- pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;
46635
- p = p.prevZ;
46636
-
46637
- if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&
46638
- pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;
46639
- n = n.nextZ;
46640
- }
46641
-
46642
- // look for remaining points in decreasing z-order
46643
- while (p && p.z >= minZ) {
46644
- if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&
46645
- pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;
46646
- p = p.prevZ;
46647
- }
46648
-
46649
- // look for remaining points in increasing z-order
46650
- while (n && n.z <= maxZ) {
46651
- if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&
46652
- pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;
46653
- n = n.nextZ;
46654
- }
46655
-
46656
- return true;
46657
- }
46658
-
46659
- // go through all polygon nodes and cure small local self-intersections
46660
- function cureLocalIntersections(start, triangles, dim) {
46661
- var p = start;
46662
- do {
46663
- var a = p.prev,
46664
- b = p.next.next;
46665
-
46666
- if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
46667
-
46668
- triangles.push(a.i / dim | 0);
46669
- triangles.push(p.i / dim | 0);
46670
- triangles.push(b.i / dim | 0);
46671
-
46672
- // remove two nodes involved
46673
- removeNode(p);
46674
- removeNode(p.next);
46675
-
46676
- p = start = b;
46677
- }
46678
- p = p.next;
46679
- } while (p !== start);
46680
-
46681
- return filterPoints(p);
46682
- }
46683
-
46684
- // try splitting polygon into two and triangulate them independently
46685
- function splitEarcut(start, triangles, dim, minX, minY, invSize) {
46686
- // look for a valid diagonal that divides the polygon into two
46687
- var a = start;
46688
- do {
46689
- var b = a.next.next;
46690
- while (b !== a.prev) {
46691
- if (a.i !== b.i && isValidDiagonal(a, b)) {
46692
- // split the polygon in two by the diagonal
46693
- var c = splitPolygon(a, b);
46694
-
46695
- // filter colinear points around the cuts
46696
- a = filterPoints(a, a.next);
46697
- c = filterPoints(c, c.next);
46698
-
46699
- // run earcut on each half
46700
- earcutLinked(a, triangles, dim, minX, minY, invSize, 0);
46701
- earcutLinked(c, triangles, dim, minX, minY, invSize, 0);
46702
- return;
46703
- }
46704
- b = b.next;
46705
- }
46706
- a = a.next;
46707
- } while (a !== start);
46708
- }
46709
-
46710
- // link every hole into the outer loop, producing a single-ring polygon without holes
46711
- function eliminateHoles(data, holeIndices, outerNode, dim) {
46712
- var queue = [],
46713
- i, len, start, end, list;
46714
-
46715
- for (i = 0, len = holeIndices.length; i < len; i++) {
46716
- start = holeIndices[i] * dim;
46717
- end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
46718
- list = linkedList(data, start, end, dim, false);
46719
- if (list === list.next) list.steiner = true;
46720
- queue.push(getLeftmost(list));
46721
- }
46722
-
46723
- queue.sort(compareX);
46724
-
46725
- // process holes from left to right
46726
- for (i = 0; i < queue.length; i++) {
46727
- outerNode = eliminateHole(queue[i], outerNode);
46728
- }
46729
-
46730
- return outerNode;
46731
- }
46732
-
46733
- function compareX(a, b) {
46734
- return a.x - b.x;
46735
- }
46736
-
46737
- // find a bridge between vertices that connects hole with an outer ring and and link it
46738
- function eliminateHole(hole, outerNode) {
46739
- var bridge = findHoleBridge(hole, outerNode);
46740
- if (!bridge) {
46741
- return outerNode;
46742
- }
46743
-
46744
- var bridgeReverse = splitPolygon(bridge, hole);
46745
-
46746
- // filter collinear points around the cuts
46747
- filterPoints(bridgeReverse, bridgeReverse.next);
46748
- return filterPoints(bridge, bridge.next);
46749
- }
46750
-
46751
- // David Eberly's algorithm for finding a bridge between hole and outer polygon
46752
- function findHoleBridge(hole, outerNode) {
46753
- var p = outerNode,
46754
- hx = hole.x,
46755
- hy = hole.y,
46756
- qx = -Infinity,
46757
- m;
46758
-
46759
- // find a segment intersected by a ray from the hole's leftmost point to the left;
46760
- // segment's endpoint with lesser x will be potential connection point
46761
- do {
46762
- if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {
46763
- var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);
46764
- if (x <= hx && x > qx) {
46765
- qx = x;
46766
- m = p.x < p.next.x ? p : p.next;
46767
- if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint
46768
- }
46769
- }
46770
- p = p.next;
46771
- } while (p !== outerNode);
46772
-
46773
- if (!m) return null;
46774
-
46775
- // look for points inside the triangle of hole point, segment intersection and endpoint;
46776
- // if there are no points found, we have a valid connection;
46777
- // otherwise choose the point of the minimum angle with the ray as connection point
46778
-
46779
- var stop = m,
46780
- mx = m.x,
46781
- my = m.y,
46782
- tanMin = Infinity,
46783
- tan;
46784
-
46785
- p = m;
46786
-
46787
- do {
46788
- if (hx >= p.x && p.x >= mx && hx !== p.x &&
46789
- pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
46790
-
46791
- tan = Math.abs(hy - p.y) / (hx - p.x); // tangential
46792
-
46793
- if (locallyInside(p, hole) &&
46794
- (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {
46795
- m = p;
46796
- tanMin = tan;
46797
- }
46798
- }
46799
-
46800
- p = p.next;
46801
- } while (p !== stop);
46802
-
46803
- return m;
46804
- }
46805
-
46806
- // whether sector in vertex m contains sector in vertex p in the same coordinates
46807
- function sectorContainsSector(m, p) {
46808
- return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;
46809
- }
46810
-
46811
- // interlink polygon nodes in z-order
46812
- function indexCurve(start, minX, minY, invSize) {
46813
- var p = start;
46814
- do {
46815
- if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);
46816
- p.prevZ = p.prev;
46817
- p.nextZ = p.next;
46818
- p = p.next;
46819
- } while (p !== start);
46820
-
46821
- p.prevZ.nextZ = null;
46822
- p.prevZ = null;
46823
-
46824
- sortLinked(p);
46825
- }
46826
-
46827
- // Simon Tatham's linked list merge sort algorithm
46828
- // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
46829
- function sortLinked(list) {
46830
- var i, p, q, e, tail, numMerges, pSize, qSize,
46831
- inSize = 1;
46832
-
46833
- do {
46834
- p = list;
46835
- list = null;
46836
- tail = null;
46837
- numMerges = 0;
46838
-
46839
- while (p) {
46840
- numMerges++;
46841
- q = p;
46842
- pSize = 0;
46843
- for (i = 0; i < inSize; i++) {
46844
- pSize++;
46845
- q = q.nextZ;
46846
- if (!q) break;
46847
- }
46848
- qSize = inSize;
46849
-
46850
- while (pSize > 0 || (qSize > 0 && q)) {
46851
-
46852
- if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
46853
- e = p;
46854
- p = p.nextZ;
46855
- pSize--;
46856
- } else {
46857
- e = q;
46858
- q = q.nextZ;
46859
- qSize--;
46860
- }
46861
-
46862
- if (tail) tail.nextZ = e;
46863
- else list = e;
46864
-
46865
- e.prevZ = tail;
46866
- tail = e;
46867
- }
46868
-
46869
- p = q;
46870
- }
46871
-
46872
- tail.nextZ = null;
46873
- inSize *= 2;
46874
-
46875
- } while (numMerges > 1);
46876
-
46877
- return list;
46878
- }
46879
-
46880
- // z-order of a point given coords and inverse of the longer side of data bbox
46881
- function zOrder(x, y, minX, minY, invSize) {
46882
- // coords are transformed into non-negative 15-bit integer range
46883
- x = (x - minX) * invSize | 0;
46884
- y = (y - minY) * invSize | 0;
46885
-
46886
- x = (x | (x << 8)) & 0x00FF00FF;
46887
- x = (x | (x << 4)) & 0x0F0F0F0F;
46888
- x = (x | (x << 2)) & 0x33333333;
46889
- x = (x | (x << 1)) & 0x55555555;
46890
-
46891
- y = (y | (y << 8)) & 0x00FF00FF;
46892
- y = (y | (y << 4)) & 0x0F0F0F0F;
46893
- y = (y | (y << 2)) & 0x33333333;
46894
- y = (y | (y << 1)) & 0x55555555;
46895
-
46896
- return x | (y << 1);
46897
- }
46898
-
46899
- // find the leftmost node of a polygon ring
46900
- function getLeftmost(start) {
46901
- var p = start,
46902
- leftmost = start;
46903
- do {
46904
- if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;
46905
- p = p.next;
46906
- } while (p !== start);
46907
-
46908
- return leftmost;
46909
- }
46910
-
46911
- // check if a point lies within a convex triangle
46912
- function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
46913
- return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&
46914
- (ax - px) * (by - py) >= (bx - px) * (ay - py) &&
46915
- (bx - px) * (cy - py) >= (cx - px) * (by - py);
46916
- }
46917
-
46918
- // check if a diagonal between two polygon nodes is valid (lies in polygon interior)
46919
- function isValidDiagonal(a, b) {
46920
- return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges
46921
- (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible
46922
- (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors
46923
- equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case
46924
- }
46925
-
46926
- // signed area of a triangle
46927
- function area(p, q, r) {
46928
- return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
46929
- }
46930
-
46931
- // check if two points are equal
46932
- function equals(p1, p2) {
46933
- return p1.x === p2.x && p1.y === p2.y;
46934
- }
46935
-
46936
- // check if two segments intersect
46937
- function intersects(p1, q1, p2, q2) {
46938
- var o1 = sign(area(p1, q1, p2));
46939
- var o2 = sign(area(p1, q1, q2));
46940
- var o3 = sign(area(p2, q2, p1));
46941
- var o4 = sign(area(p2, q2, q1));
46942
-
46943
- if (o1 !== o2 && o3 !== o4) return true; // general case
46944
-
46945
- if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1
46946
- if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1
46947
- if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2
46948
- if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2
46949
-
46950
- return false;
46951
- }
46952
-
46953
- // for collinear points p, q, r, check if point q lies on segment pr
46954
- function onSegment(p, q, r) {
46955
- return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);
46956
- }
46957
-
46958
- function sign(num) {
46959
- return num > 0 ? 1 : num < 0 ? -1 : 0;
46960
- }
46961
-
46962
- // check if a polygon diagonal intersects any polygon segments
46963
- function intersectsPolygon(a, b) {
46964
- var p = a;
46965
- do {
46966
- if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&
46967
- intersects(p, p.next, a, b)) return true;
46968
- p = p.next;
46969
- } while (p !== a);
46970
-
46971
- return false;
46972
- }
46973
-
46974
- // check if a polygon diagonal is locally inside the polygon
46975
- function locallyInside(a, b) {
46976
- return area(a.prev, a, a.next) < 0 ?
46977
- area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :
46978
- area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
46979
- }
46980
-
46981
- // check if the middle point of a polygon diagonal is inside the polygon
46982
- function middleInside(a, b) {
46983
- var p = a,
46984
- inside = false,
46985
- px = (a.x + b.x) / 2,
46986
- py = (a.y + b.y) / 2;
46987
- do {
46988
- if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&
46989
- (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))
46990
- inside = !inside;
46991
- p = p.next;
46992
- } while (p !== a);
46993
-
46994
- return inside;
46995
- }
46996
-
46997
- // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;
46998
- // if one belongs to the outer ring and another to a hole, it merges it into a single ring
46999
- function splitPolygon(a, b) {
47000
- var a2 = new Node(a.i, a.x, a.y),
47001
- b2 = new Node(b.i, b.x, b.y),
47002
- an = a.next,
47003
- bp = b.prev;
47004
-
47005
- a.next = b;
47006
- b.prev = a;
47007
-
47008
- a2.next = an;
47009
- an.prev = a2;
47010
-
47011
- b2.next = a2;
47012
- a2.prev = b2;
47013
-
47014
- bp.next = b2;
47015
- b2.prev = bp;
47016
-
47017
- return b2;
47018
- }
47019
-
47020
- // create a node and optionally link it with previous one (in a circular doubly linked list)
47021
- function insertNode(i, x, y, last) {
47022
- var p = new Node(i, x, y);
47023
-
47024
- if (!last) {
47025
- p.prev = p;
47026
- p.next = p;
47027
-
47028
- } else {
47029
- p.next = last.next;
47030
- p.prev = last;
47031
- last.next.prev = p;
47032
- last.next = p;
47033
- }
47034
- return p;
47035
- }
47036
-
47037
- function removeNode(p) {
47038
- p.next.prev = p.prev;
47039
- p.prev.next = p.next;
47040
-
47041
- if (p.prevZ) p.prevZ.nextZ = p.nextZ;
47042
- if (p.nextZ) p.nextZ.prevZ = p.prevZ;
47043
- }
47044
-
47045
- function Node(i, x, y) {
47046
- // vertex index in coordinates array
47047
- this.i = i;
47048
-
47049
- // vertex coordinates
47050
- this.x = x;
47051
- this.y = y;
47052
-
47053
- // previous and next vertex nodes in a polygon ring
47054
- this.prev = null;
47055
- this.next = null;
47056
-
47057
- // z-order curve value
47058
- this.z = 0;
47059
-
47060
- // previous and next nodes in z-order
47061
- this.prevZ = null;
47062
- this.nextZ = null;
47063
-
47064
- // indicates whether this is a steiner point
47065
- this.steiner = false;
47066
- }
47067
-
47068
- // return a percentage difference between the polygon area and its triangulation area;
47069
- // used to verify correctness of triangulation
47070
- earcut.deviation = function (data, holeIndices, dim, triangles) {
47071
- var hasHoles = holeIndices && holeIndices.length;
47072
- var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
47073
-
47074
- var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
47075
- if (hasHoles) {
47076
- for (var i = 0, len = holeIndices.length; i < len; i++) {
47077
- var start = holeIndices[i] * dim;
47078
- var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
47079
- polygonArea -= Math.abs(signedArea(data, start, end, dim));
47080
- }
47081
- }
47082
-
47083
- var trianglesArea = 0;
47084
- for (i = 0; i < triangles.length; i += 3) {
47085
- var a = triangles[i] * dim;
47086
- var b = triangles[i + 1] * dim;
47087
- var c = triangles[i + 2] * dim;
47088
- trianglesArea += Math.abs(
47089
- (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -
47090
- (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
47091
- }
47092
-
47093
- return polygonArea === 0 && trianglesArea === 0 ? 0 :
47094
- Math.abs((trianglesArea - polygonArea) / polygonArea);
47095
- };
47096
-
47097
- function signedArea(data, start, end, dim) {
47098
- var sum = 0;
47099
- for (var i = start, j = end - dim; i < end; i += dim) {
47100
- sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
47101
- j = i;
47102
- }
47103
- return sum;
47104
- }
47105
-
47106
- // turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts
47107
- earcut.flatten = function (data) {
47108
- var dim = data[0][0].length,
47109
- result = {vertices: [], holes: [], dimensions: dim},
47110
- holeIndex = 0;
47111
-
47112
- for (var i = 0; i < data.length; i++) {
47113
- for (var j = 0; j < data[i].length; j++) {
47114
- for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);
47115
- }
47116
- if (i > 0) {
47117
- holeIndex += data[i - 1].length;
47118
- result.holes.push(holeIndex);
47119
- }
47120
- }
47121
- return result;
47122
- };
47123
-
47124
-
47125
46438
  /***/ }),
47126
46439
 
47127
46440
  /***/ 3369:
@@ -65028,11 +64341,16 @@ __webpack_require__.d(__webpack_exports__, {
65028
64341
  "default": function() { return /* binding */ lib; }
65029
64342
  });
65030
64343
 
65031
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/global.js
64344
+ ;// ../node_modules/proj4/lib/global.js
65032
64345
  /* harmony default export */ function global(defs) {
65033
64346
  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
65034
64347
  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
65035
64348
  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
64349
+ // UTM WGS84
64350
+ for (var i = 0; i <= 60; ++i) {
64351
+ defs('EPSG:' + (32600 + i), "+proj=utm +zone=" + i + " +datum=WGS84 +units=m");
64352
+ defs('EPSG:' + (32700 + i), "+proj=utm +zone=" + i + " +south +datum=WGS84 +units=m");
64353
+ }
65036
64354
 
65037
64355
  defs.WGS84 = defs['EPSG:4326'];
65038
64356
  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
@@ -65043,7 +64361,7 @@ __webpack_require__.d(__webpack_exports__, {
65043
64361
 
65044
64362
  // EXTERNAL MODULE: ../node_modules/proj4/lib/constants/values.js
65045
64363
  var values = __webpack_require__(2556);
65046
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/constants/PrimeMeridian.js
64364
+ ;// ../node_modules/proj4/lib/constants/PrimeMeridian.js
65047
64365
  var PrimeMeridian_exports = {};
65048
64366
 
65049
64367
 
@@ -65061,13 +64379,31 @@ PrimeMeridian_exports.stockholm = 18.058277777778; //"18d3'29.8\"E",
65061
64379
  PrimeMeridian_exports.athens = 23.7163375; //"23d42'58.815\"E",
65062
64380
  PrimeMeridian_exports.oslo = 10.722916666667; //"10d43'22.5\"E"
65063
64381
 
65064
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/constants/units.js
64382
+ ;// ../node_modules/proj4/lib/constants/units.js
65065
64383
  /* harmony default export */ var units = ({
65066
- ft: {to_meter: 0.3048},
65067
- 'us-ft': {to_meter: 1200 / 3937}
64384
+ 'mm': {to_meter: 0.001},
64385
+ 'cm': {to_meter: 0.01},
64386
+ 'ft': {to_meter: 0.3048},
64387
+ 'us-ft': {to_meter: 1200 / 3937},
64388
+ 'fath': {to_meter: 1.8288},
64389
+ 'kmi': {to_meter: 1852},
64390
+ 'us-ch': {to_meter: 20.1168402336805},
64391
+ 'us-mi': {to_meter: 1609.34721869444},
64392
+ 'km': {to_meter: 1000},
64393
+ 'ind-ft': {to_meter: 0.30479841},
64394
+ 'ind-yd': {to_meter: 0.91439523},
64395
+ 'mi': {to_meter: 1609.344},
64396
+ 'yd': {to_meter: 0.9144},
64397
+ 'ch': {to_meter: 20.1168},
64398
+ 'link': {to_meter: 0.201168},
64399
+ 'dm': {to_meter: 0.01},
64400
+ 'in': {to_meter: 0.0254},
64401
+ 'ind-ch': {to_meter: 20.11669506},
64402
+ 'us-in': {to_meter: 0.025400050800101},
64403
+ 'us-yd': {to_meter: 0.914401828803658}
65068
64404
  });
65069
64405
 
65070
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/match.js
64406
+ ;// ../node_modules/proj4/lib/match.js
65071
64407
  var ignoredChar = /[\s_\-\/\(\)]/g;
65072
64408
  function match(obj, key) {
65073
64409
  if (obj[key]) {
@@ -65086,7 +64422,7 @@ function match(obj, key) {
65086
64422
  }
65087
64423
  }
65088
64424
 
65089
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projString.js
64425
+ ;// ../node_modules/proj4/lib/projString.js
65090
64426
 
65091
64427
 
65092
64428
 
@@ -65232,7 +64568,7 @@ function match(obj, key) {
65232
64568
  return self;
65233
64569
  }
65234
64570
 
65235
- ;// CONCATENATED MODULE: ../node_modules/wkt-parser/parser.js
64571
+ ;// ../node_modules/wkt-parser/parser.js
65236
64572
  /* harmony default export */ var parser = (parseString);
65237
64573
 
65238
64574
  var NEUTRAL = 1;
@@ -65403,7 +64739,7 @@ function parseString(txt) {
65403
64739
  return parser.output();
65404
64740
  }
65405
64741
 
65406
- ;// CONCATENATED MODULE: ../node_modules/wkt-parser/process.js
64742
+ ;// ../node_modules/wkt-parser/process.js
65407
64743
 
65408
64744
 
65409
64745
  function mapit(obj, key, value) {
@@ -65483,6 +64819,21 @@ function sExpr(v, obj) {
65483
64819
  sExpr(v[3], obj[key]);
65484
64820
  }
65485
64821
  return;
64822
+ case 'EDATUM':
64823
+ case 'ENGINEERINGDATUM':
64824
+ case 'LOCAL_DATUM':
64825
+ case 'DATUM':
64826
+ case 'VERT_CS':
64827
+ case 'VERTCRS':
64828
+ case 'VERTICALCRS':
64829
+ v[0] = ['name', v[0]];
64830
+ mapit(obj, key, v);
64831
+ return;
64832
+ case 'COMPD_CS':
64833
+ case 'COMPOUNDCRS':
64834
+ case 'FITTED_CS':
64835
+ // the followings are the crs defined in
64836
+ // https://github.com/proj4js/proj4js/blob/1da4ed0b865d0fcb51c136090569210cdcc9019e/lib/parseCode.js#L11
65486
64837
  case 'PROJECTEDCRS':
65487
64838
  case 'PROJCRS':
65488
64839
  case 'GEOGCS':
@@ -65492,20 +64843,11 @@ function sExpr(v, obj) {
65492
64843
  case 'GEODCRS':
65493
64844
  case 'GEODETICCRS':
65494
64845
  case 'GEODETICDATUM':
65495
- case 'EDATUM':
65496
- case 'ENGINEERINGDATUM':
65497
- case 'VERT_CS':
65498
- case 'VERTCRS':
65499
- case 'VERTICALCRS':
65500
- case 'COMPD_CS':
65501
- case 'COMPOUNDCRS':
65502
- case 'ENGINEERINGCRS':
65503
64846
  case 'ENGCRS':
65504
- case 'FITTED_CS':
65505
- case 'LOCAL_DATUM':
65506
- case 'DATUM':
64847
+ case 'ENGINEERINGCRS':
65507
64848
  v[0] = ['name', v[0]];
65508
64849
  mapit(obj, key, v);
64850
+ obj[key].type = key;
65509
64851
  return;
65510
64852
  default:
65511
64853
  i = -1;
@@ -65518,12 +64860,13 @@ function sExpr(v, obj) {
65518
64860
  }
65519
64861
  }
65520
64862
 
65521
- ;// CONCATENATED MODULE: ../node_modules/wkt-parser/index.js
64863
+ ;// ../node_modules/wkt-parser/index.js
65522
64864
  var D2R = 0.01745329251994329577;
65523
64865
 
65524
64866
 
65525
64867
 
65526
-
64868
+ var knownTypes = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS', 'GEOCCS', 'PROJCS', 'LOCAL_CS', 'GEODCRS',
64869
+ 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];
65527
64870
 
65528
64871
  function rename(obj, params) {
65529
64872
  var outName = params[0];
@@ -65541,6 +64884,27 @@ function d2r(input) {
65541
64884
  }
65542
64885
 
65543
64886
  function cleanWKT(wkt) {
64887
+ var keys = Object.keys(wkt);
64888
+ for (var i = 0, ii = keys.length; i <ii; ++i) {
64889
+ var key = keys[i];
64890
+ // the followings are the crs defined in
64891
+ // https://github.com/proj4js/proj4js/blob/1da4ed0b865d0fcb51c136090569210cdcc9019e/lib/parseCode.js#L11
64892
+ if (knownTypes.indexOf(key) !== -1) {
64893
+ setPropertiesFromWkt(wkt[key]);
64894
+ }
64895
+ if (typeof wkt[key] === 'object') {
64896
+ cleanWKT(wkt[key]);
64897
+ }
64898
+ }
64899
+ }
64900
+
64901
+ function setPropertiesFromWkt(wkt) {
64902
+ if (wkt.AUTHORITY) {
64903
+ var authority = Object.keys(wkt.AUTHORITY)[0];
64904
+ if (authority && authority in wkt.AUTHORITY) {
64905
+ wkt.title = authority + ':' + wkt.AUTHORITY[authority];
64906
+ }
64907
+ }
65544
64908
  if (wkt.type === 'GEOGCS') {
65545
64909
  wkt.projName = 'longlat';
65546
64910
  } else if (wkt.type === 'LOCAL_CS') {
@@ -65605,7 +64969,7 @@ function cleanWKT(wkt) {
65605
64969
  if (wkt.datumCode.slice(0, 2) === 'd_') {
65606
64970
  wkt.datumCode = wkt.datumCode.slice(2);
65607
64971
  }
65608
- if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
64972
+ if (wkt.datumCode === 'new_zealand_1949') {
65609
64973
  wkt.datumCode = 'nzgd49';
65610
64974
  }
65611
64975
  if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {
@@ -65614,13 +64978,7 @@ function cleanWKT(wkt) {
65614
64978
  }
65615
64979
  wkt.datumCode = 'wgs84';
65616
64980
  }
65617
- if (wkt.datumCode.slice(-6) === '_ferro') {
65618
- wkt.datumCode = wkt.datumCode.slice(0, - 6);
65619
- }
65620
- if (wkt.datumCode.slice(-8) === '_jakarta') {
65621
- wkt.datumCode = wkt.datumCode.slice(0, - 8);
65622
- }
65623
- if (~wkt.datumCode.indexOf('belge')) {
64981
+ if (wkt.datumCode === 'belge_1972') {
65624
64982
  wkt.datumCode = 'rnb72';
65625
64983
  }
65626
64984
  if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
@@ -65715,17 +65073,14 @@ function cleanWKT(wkt) {
65715
65073
  }
65716
65074
  /* harmony default export */ function wkt_parser(wkt) {
65717
65075
  var lisp = parser(wkt);
65718
- var type = lisp.shift();
65719
- var name = lisp.shift();
65720
- lisp.unshift(['name', name]);
65721
- lisp.unshift(['type', type]);
65076
+ var type = lisp[0];
65722
65077
  var obj = {};
65723
65078
  sExpr(lisp, obj);
65724
65079
  cleanWKT(obj);
65725
- return obj;
65080
+ return obj[type];
65726
65081
  }
65727
65082
 
65728
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/defs.js
65083
+ ;// ../node_modules/proj4/lib/defs.js
65729
65084
 
65730
65085
 
65731
65086
 
@@ -65782,7 +65137,7 @@ function defs(name) {
65782
65137
  global(defs);
65783
65138
  /* harmony default export */ var lib_defs = (defs);
65784
65139
 
65785
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/parseCode.js
65140
+ ;// ../node_modules/proj4/lib/parseCode.js
65786
65141
 
65787
65142
 
65788
65143
 
@@ -65846,7 +65201,7 @@ function parse(code){
65846
65201
 
65847
65202
  /* harmony default export */ var parseCode = (parse);
65848
65203
 
65849
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/extend.js
65204
+ ;// ../node_modules/proj4/lib/extend.js
65850
65205
  /* harmony default export */ function extend(destination, source) {
65851
65206
  destination = destination || {};
65852
65207
  var value, property;
@@ -65866,7 +65221,7 @@ function parse(code){
65866
65221
  var merc = __webpack_require__(2286);
65867
65222
  // EXTERNAL MODULE: ../node_modules/proj4/lib/projections/longlat.js
65868
65223
  var longlat = __webpack_require__(2848);
65869
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections.js
65224
+ ;// ../node_modules/proj4/lib/projections.js
65870
65225
 
65871
65226
 
65872
65227
  var projs = [merc["default"], longlat["default"]];
@@ -65907,7 +65262,7 @@ function start() {
65907
65262
  get: get
65908
65263
  });
65909
65264
 
65910
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/constants/Ellipsoid.js
65265
+ ;// ../node_modules/proj4/lib/constants/Ellipsoid.js
65911
65266
  var Ellipsoid_exports = {};
65912
65267
 
65913
65268
  Ellipsoid_exports.MERIT = {
@@ -66175,7 +65530,7 @@ Ellipsoid_exports.sphere = {
66175
65530
  ellipseName: "Normal Sphere (r=6370997)"
66176
65531
  };
66177
65532
 
66178
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/deriveConstants.js
65533
+ ;// ../node_modules/proj4/lib/deriveConstants.js
66179
65534
 
66180
65535
 
66181
65536
 
@@ -66225,121 +65580,111 @@ function sphere(a, b, rf, ellps, sphere) {
66225
65580
  };
66226
65581
  }
66227
65582
 
66228
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/constants/Datum.js
66229
- var Datum_exports = {};
66230
-
66231
- Datum_exports.wgs84 = {
66232
- towgs84: "0,0,0",
66233
- ellipse: "WGS84",
66234
- datumName: "WGS84"
66235
- };
66236
-
66237
- Datum_exports.ch1903 = {
66238
- towgs84: "674.374,15.056,405.346",
66239
- ellipse: "bessel",
66240
- datumName: "swiss"
66241
- };
66242
-
66243
- Datum_exports.ggrs87 = {
66244
- towgs84: "-199.87,74.79,246.62",
66245
- ellipse: "GRS80",
66246
- datumName: "Greek_Geodetic_Reference_System_1987"
66247
- };
66248
-
66249
- Datum_exports.nad83 = {
66250
- towgs84: "0,0,0",
66251
- ellipse: "GRS80",
66252
- datumName: "North_American_Datum_1983"
66253
- };
66254
-
66255
- Datum_exports.nad27 = {
66256
- nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
66257
- ellipse: "clrk66",
66258
- datumName: "North_American_Datum_1927"
66259
- };
66260
-
66261
- Datum_exports.potsdam = {
66262
- towgs84: "598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
66263
- ellipse: "bessel",
66264
- datumName: "Potsdam Rauenberg 1950 DHDN"
66265
- };
66266
-
66267
- Datum_exports.carthage = {
66268
- towgs84: "-263.0,6.0,431.0",
66269
- ellipse: "clark80",
66270
- datumName: "Carthage 1934 Tunisia"
66271
- };
66272
-
66273
- Datum_exports.hermannskogel = {
66274
- towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
66275
- ellipse: "bessel",
66276
- datumName: "Hermannskogel"
66277
- };
66278
-
66279
- Datum_exports.militargeographische_institut = {
66280
- towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
66281
- ellipse: "bessel",
66282
- datumName: "Militar-Geographische Institut"
66283
- };
66284
-
66285
- Datum_exports.osni52 = {
66286
- towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
66287
- ellipse: "airy",
66288
- datumName: "Irish National"
66289
- };
66290
-
66291
- Datum_exports.ire65 = {
66292
- towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
66293
- ellipse: "mod_airy",
66294
- datumName: "Ireland 1965"
66295
- };
66296
-
66297
- Datum_exports.rassadiran = {
66298
- towgs84: "-133.63,-157.5,-158.62",
66299
- ellipse: "intl",
66300
- datumName: "Rassadiran"
66301
- };
66302
-
66303
- Datum_exports.nzgd49 = {
66304
- towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
66305
- ellipse: "intl",
66306
- datumName: "New Zealand Geodetic Datum 1949"
66307
- };
66308
-
66309
- Datum_exports.osgb36 = {
66310
- towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
66311
- ellipse: "airy",
66312
- datumName: "Airy 1830"
66313
- };
66314
-
66315
- Datum_exports.s_jtsk = {
66316
- towgs84: "589,76,480",
66317
- ellipse: 'bessel',
66318
- datumName: 'S-JTSK (Ferro)'
66319
- };
66320
-
66321
- Datum_exports.beduaram = {
66322
- towgs84: '-106,-87,188',
66323
- ellipse: 'clrk80',
66324
- datumName: 'Beduaram'
65583
+ ;// ../node_modules/proj4/lib/constants/Datum.js
65584
+ var datums = {
65585
+ wgs84: {
65586
+ towgs84: "0,0,0",
65587
+ ellipse: "WGS84",
65588
+ datumName: "WGS84"
65589
+ },
65590
+ ch1903: {
65591
+ towgs84: "674.374,15.056,405.346",
65592
+ ellipse: "bessel",
65593
+ datumName: "swiss"
65594
+ },
65595
+ ggrs87: {
65596
+ towgs84: "-199.87,74.79,246.62",
65597
+ ellipse: "GRS80",
65598
+ datumName: "Greek_Geodetic_Reference_System_1987"
65599
+ },
65600
+ nad83: {
65601
+ towgs84: "0,0,0",
65602
+ ellipse: "GRS80",
65603
+ datumName: "North_American_Datum_1983"
65604
+ },
65605
+ nad27: {
65606
+ nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
65607
+ ellipse: "clrk66",
65608
+ datumName: "North_American_Datum_1927"
65609
+ },
65610
+ potsdam: {
65611
+ towgs84: "598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
65612
+ ellipse: "bessel",
65613
+ datumName: "Potsdam Rauenberg 1950 DHDN"
65614
+ },
65615
+ carthage: {
65616
+ towgs84: "-263.0,6.0,431.0",
65617
+ ellipse: "clark80",
65618
+ datumName: "Carthage 1934 Tunisia"
65619
+ },
65620
+ hermannskogel: {
65621
+ towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
65622
+ ellipse: "bessel",
65623
+ datumName: "Hermannskogel"
65624
+ },
65625
+ militargeographische_institut: {
65626
+ towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
65627
+ ellipse: "bessel",
65628
+ datumName: "Militar-Geographische Institut",
65629
+ },
65630
+ osni52: {
65631
+ towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
65632
+ ellipse: "airy",
65633
+ datumName: "Irish National"
65634
+ },
65635
+ ire65: {
65636
+ towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
65637
+ ellipse: "mod_airy",
65638
+ datumName: "Ireland 1965"
65639
+ },
65640
+ rassadiran: {
65641
+ towgs84: "-133.63,-157.5,-158.62",
65642
+ ellipse: "intl",
65643
+ datumName: "Rassadiran"
65644
+ },
65645
+ nzgd49: {
65646
+ towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
65647
+ ellipse: "intl",
65648
+ datumName: "New Zealand Geodetic Datum 1949"
65649
+ },
65650
+ osgb36: {
65651
+ towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
65652
+ ellipse: "airy",
65653
+ datumName: "Ordnance Survey of Great Britain 1936"
65654
+ },
65655
+ s_jtsk: {
65656
+ towgs84: "589,76,480",
65657
+ ellipse: 'bessel',
65658
+ datumName: 'S-JTSK (Ferro)'
65659
+ },
65660
+ beduaram: {
65661
+ towgs84: '-106,-87,188',
65662
+ ellipse: 'clrk80',
65663
+ datumName: 'Beduaram'
65664
+ },
65665
+ gunung_segara: {
65666
+ towgs84: '-403,684,41',
65667
+ ellipse: 'bessel',
65668
+ datumName: 'Gunung Segara Jakarta'
65669
+ },
65670
+ rnb72: {
65671
+ towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
65672
+ ellipse: "intl",
65673
+ datumName: "Reseau National Belge 1972"
65674
+ }
66325
65675
  };
66326
65676
 
66327
- Datum_exports.gunung_segara = {
66328
- towgs84: '-403,684,41',
66329
- ellipse: 'bessel',
66330
- datumName: 'Gunung Segara Jakarta'
66331
- };
65677
+ for (var key in datums) {
65678
+ var datum = datums[key];
65679
+ datums[datum.datumName] = datum;
65680
+ }
66332
65681
 
66333
- Datum_exports.rnb72 = {
66334
- towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
66335
- ellipse: "intl",
66336
- datumName: "Reseau National Belge 1972"
66337
- };
65682
+ /* harmony default export */ var Datum = (datums);
66338
65683
 
66339
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/datum.js
65684
+ ;// ../node_modules/proj4/lib/datum.js
66340
65685
 
66341
65686
 
66342
- function datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {
65687
+ function datum_datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {
66343
65688
  var out = {};
66344
65689
 
66345
65690
  if (datumCode === undefined || datumCode === 'none') {
@@ -66375,9 +65720,9 @@ function datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {
66375
65720
  return out;
66376
65721
  }
66377
65722
 
66378
- /* harmony default export */ var lib_datum = (datum);
65723
+ /* harmony default export */ var lib_datum = (datum_datum);
66379
65724
 
66380
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/nadgrid.js
65725
+ ;// ../node_modules/proj4/lib/nadgrid.js
66381
65726
  /**
66382
65727
  * Resources for details of NTv2 file formats:
66383
65728
  * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf
@@ -66519,7 +65864,7 @@ function readGridNodes(view, offset, gridHeader, isLittleEndian) {
66519
65864
  return gridShiftRecords;
66520
65865
  }
66521
65866
 
66522
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/Proj.js
65867
+ ;// ../node_modules/proj4/lib/Proj.js
66523
65868
 
66524
65869
 
66525
65870
 
@@ -66549,7 +65894,7 @@ function Projection(srsCode,callback) {
66549
65894
  return;
66550
65895
  }
66551
65896
  if (json.datumCode && json.datumCode !== 'none') {
66552
- var datumDef = match(Datum_exports, json.datumCode);
65897
+ var datumDef = match(Datum, json.datumCode);
66553
65898
  if (datumDef) {
66554
65899
  json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);
66555
65900
  json.ellps = datumDef.ellipse;
@@ -66599,7 +65944,7 @@ Projection.projections.start();
66599
65944
  var datumUtils = __webpack_require__(9160);
66600
65945
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/adjust_lon.js
66601
65946
  var adjust_lon = __webpack_require__(737);
66602
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/datum_transform.js
65947
+ ;// ../node_modules/proj4/lib/datum_transform.js
66603
65948
 
66604
65949
 
66605
65950
 
@@ -66789,7 +66134,7 @@ function nadInterpolate(pin, ct) {
66789
66134
  return val;
66790
66135
  }
66791
66136
 
66792
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/adjust_axis.js
66137
+ ;// ../node_modules/proj4/lib/adjust_axis.js
66793
66138
  /* harmony default export */ function adjust_axis(crs, denorm, point) {
66794
66139
  var xin = point.x,
66795
66140
  yin = point.y,
@@ -66852,7 +66197,7 @@ function nadInterpolate(pin, ct) {
66852
66197
  return out;
66853
66198
  }
66854
66199
 
66855
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/toPoint.js
66200
+ ;// ../node_modules/proj4/lib/common/toPoint.js
66856
66201
  /* harmony default export */ function toPoint(array){
66857
66202
  var out = {
66858
66203
  x: array[0],
@@ -66866,7 +66211,7 @@ function nadInterpolate(pin, ct) {
66866
66211
  }
66867
66212
  return out;
66868
66213
  }
66869
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/checkSanity.js
66214
+ ;// ../node_modules/proj4/lib/checkSanity.js
66870
66215
  /* harmony default export */ function checkSanity(point) {
66871
66216
  checkCoord(point.x);
66872
66217
  checkCoord(point.y);
@@ -66883,7 +66228,7 @@ function checkCoord(num) {
66883
66228
  }
66884
66229
  }
66885
66230
 
66886
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/transform.js
66231
+ ;// ../node_modules/proj4/lib/transform.js
66887
66232
 
66888
66233
 
66889
66234
 
@@ -66991,7 +66336,7 @@ function transform(source, dest, point, enforceAxis) {
66991
66336
  return point;
66992
66337
  }
66993
66338
 
66994
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/core.js
66339
+ ;// ../node_modules/proj4/lib/core.js
66995
66340
 
66996
66341
 
66997
66342
  var wgs84 = Proj('WGS84');
@@ -67003,12 +66348,12 @@ function transformer(from, to, coords, enforceAxis) {
67003
66348
  if (coords.length > 2) {
67004
66349
  if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {
67005
66350
  if (typeof transformedArray.z === 'number') {
67006
- return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));
66351
+ return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.slice(3));
67007
66352
  } else {
67008
- return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));
66353
+ return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.slice(3));
67009
66354
  }
67010
66355
  } else {
67011
- return [transformedArray.x, transformedArray.y].concat(coords.splice(2));
66356
+ return [transformedArray.x, transformedArray.y].concat(coords.slice(2));
67012
66357
  }
67013
66358
  } else {
67014
66359
  return [transformedArray.x, transformedArray.y];
@@ -67078,7 +66423,7 @@ function proj4(fromProj, toProj, coord) {
67078
66423
  }
67079
66424
  }
67080
66425
  /* harmony default export */ var core = (proj4);
67081
- ;// CONCATENATED MODULE: ../node_modules/mgrs/mgrs.js
66426
+ ;// ../node_modules/mgrs/mgrs.js
67082
66427
 
67083
66428
 
67084
66429
 
@@ -67826,7 +67171,7 @@ function getMinNorthing(zoneLetter) {
67826
67171
 
67827
67172
  }
67828
67173
 
67829
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/Point.js
67174
+ ;// ../node_modules/proj4/lib/Point.js
67830
67175
 
67831
67176
 
67832
67177
  function Point(x, y, z) {
@@ -67924,7 +67269,7 @@ var geos = __webpack_require__(469);
67924
67269
  var eqearth = __webpack_require__(7129);
67925
67270
  // EXTERNAL MODULE: ../node_modules/proj4/lib/projections/bonne.js
67926
67271
  var bonne = __webpack_require__(5789);
67927
- ;// CONCATENATED MODULE: ../node_modules/proj4/projs.js
67272
+ ;// ../node_modules/proj4/projs.js
67928
67273
 
67929
67274
 
67930
67275
 
@@ -67989,7 +67334,7 @@ var bonne = __webpack_require__(5789);
67989
67334
  proj4.Proj.projections.add(eqearth["default"]);
67990
67335
  proj4.Proj.projections.add(bonne["default"]);
67991
67336
  }
67992
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/index.js
67337
+ ;// ../node_modules/proj4/lib/index.js
67993
67338
 
67994
67339
 
67995
67340
 
@@ -68688,7 +68033,7 @@ var qsfnz = __webpack_require__(7200);
68688
68033
  var msfnz = __webpack_require__(444);
68689
68034
  // EXTERNAL MODULE: ../node_modules/proj4/lib/constants/values.js
68690
68035
  var values = __webpack_require__(2556);
68691
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/iqsfnz.js
68036
+ ;// ../node_modules/proj4/lib/common/iqsfnz.js
68692
68037
 
68693
68038
 
68694
68039
  /* harmony default export */ function iqsfnz(eccent, q) {
@@ -68722,7 +68067,7 @@ var values = __webpack_require__(2556);
68722
68067
  return NaN;
68723
68068
  }
68724
68069
 
68725
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections/cea.js
68070
+ ;// ../node_modules/proj4/lib/projections/cea.js
68726
68071
 
68727
68072
 
68728
68073
 
@@ -69198,7 +68543,7 @@ var tmerc = __webpack_require__(5602);
69198
68543
  var sinh = __webpack_require__(3882);
69199
68544
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/hypot.js
69200
68545
  var hypot = __webpack_require__(1708);
69201
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/log1py.js
68546
+ ;// ../node_modules/proj4/lib/common/log1py.js
69202
68547
  /* harmony default export */ function log1py(x) {
69203
68548
  var y = 1 + x;
69204
68549
  var z = y - 1;
@@ -69206,7 +68551,7 @@ var hypot = __webpack_require__(1708);
69206
68551
  return z === 0 ? x : x * Math.log(y) / z;
69207
68552
  }
69208
68553
 
69209
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/asinhy.js
68554
+ ;// ../node_modules/proj4/lib/common/asinhy.js
69210
68555
 
69211
68556
 
69212
68557
 
@@ -69217,7 +68562,7 @@ var hypot = __webpack_require__(1708);
69217
68562
  return x < 0 ? -y : y;
69218
68563
  }
69219
68564
 
69220
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/gatg.js
68565
+ ;// ../node_modules/proj4/lib/common/gatg.js
69221
68566
  /* harmony default export */ function gatg(pp, B) {
69222
68567
  var cos_2B = 2 * Math.cos(2 * B);
69223
68568
  var i = pp.length - 1;
@@ -69234,7 +68579,7 @@ var hypot = __webpack_require__(1708);
69234
68579
  return (B + h * Math.sin(2 * B));
69235
68580
  }
69236
68581
 
69237
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/clens.js
68582
+ ;// ../node_modules/proj4/lib/common/clens.js
69238
68583
  /* harmony default export */ function clens(pp, arg_r) {
69239
68584
  var r = 2 * Math.cos(arg_r);
69240
68585
  var i = pp.length - 1;
@@ -69253,7 +68598,7 @@ var hypot = __webpack_require__(1708);
69253
68598
 
69254
68599
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/cosh.js
69255
68600
  var cosh = __webpack_require__(4885);
69256
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/clens_cmplx.js
68601
+ ;// ../node_modules/proj4/lib/common/clens_cmplx.js
69257
68602
 
69258
68603
 
69259
68604
 
@@ -69289,7 +68634,7 @@ var cosh = __webpack_require__(4885);
69289
68634
 
69290
68635
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/adjust_lon.js
69291
68636
  var adjust_lon = __webpack_require__(737);
69292
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections/etmerc.js
68637
+ ;// ../node_modules/proj4/lib/projections/etmerc.js
69293
68638
  // Heavily based on this etmerc projection implementation
69294
68639
  // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js
69295
68640
 
@@ -69482,13 +68827,13 @@ __webpack_require__.d(__webpack_exports__, {
69482
68827
  names: function() { return /* binding */ names; }
69483
68828
  });
69484
68829
 
69485
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/srat.js
68830
+ ;// ../node_modules/proj4/lib/common/srat.js
69486
68831
  /* harmony default export */ function srat(esinp, exp) {
69487
68832
  return (Math.pow((1 - esinp) / (1 + esinp), exp));
69488
68833
  }
69489
68834
  // EXTERNAL MODULE: ../node_modules/proj4/lib/constants/values.js
69490
68835
  var values = __webpack_require__(2556);
69491
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections/gauss.js
68836
+ ;// ../node_modules/proj4/lib/projections/gauss.js
69492
68837
 
69493
68838
  var MAX_ITER = 20;
69494
68839
 
@@ -69897,7 +69242,7 @@ __webpack_require__.d(__webpack_exports__, {
69897
69242
 
69898
69243
  // EXTERNAL MODULE: ../node_modules/proj4/lib/constants/values.js
69899
69244
  var values = __webpack_require__(2556);
69900
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/latiso.js
69245
+ ;// ../node_modules/proj4/lib/common/latiso.js
69901
69246
 
69902
69247
 
69903
69248
  /* harmony default export */ function latiso(eccent, phi, sinphi) {
@@ -69919,14 +69264,14 @@ var values = __webpack_require__(2556);
69919
69264
  var sinh = __webpack_require__(3882);
69920
69265
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/cosh.js
69921
69266
  var cosh = __webpack_require__(4885);
69922
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/fL.js
69267
+ ;// ../node_modules/proj4/lib/common/fL.js
69923
69268
 
69924
69269
 
69925
69270
  /* harmony default export */ function fL(x, L) {
69926
69271
  return 2 * Math.atan(x * Math.exp(L)) - values/* HALF_PI */.sK;
69927
69272
  }
69928
69273
 
69929
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/invlatiso.js
69274
+ ;// ../node_modules/proj4/lib/common/invlatiso.js
69930
69275
 
69931
69276
 
69932
69277
  /* harmony default export */ function invlatiso(eccent, ts) {
@@ -69940,7 +69285,7 @@ var cosh = __webpack_require__(4885);
69940
69285
  } while (Math.abs(phi - Iphi) > 1.0e-12);
69941
69286
  return phi;
69942
69287
  }
69943
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections/gstmerc.js
69288
+ ;// ../node_modules/proj4/lib/projections/gstmerc.js
69944
69289
 
69945
69290
 
69946
69291
 
@@ -73196,7 +72541,7 @@ __webpack_require__.d(__webpack_exports__, {
73196
72541
 
73197
72542
  // EXTERNAL MODULE: ../node_modules/proj4/lib/common/adjust_lon.js
73198
72543
  var adjust_lon = __webpack_require__(737);
73199
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/common/adjust_zone.js
72544
+ ;// ../node_modules/proj4/lib/common/adjust_zone.js
73200
72545
 
73201
72546
 
73202
72547
  /* harmony default export */ function adjust_zone(zone, lon) {
@@ -73216,7 +72561,7 @@ var adjust_lon = __webpack_require__(737);
73216
72561
  var etmerc = __webpack_require__(994);
73217
72562
  // EXTERNAL MODULE: ../node_modules/proj4/lib/constants/values.js
73218
72563
  var values = __webpack_require__(2556);
73219
- ;// CONCATENATED MODULE: ../node_modules/proj4/lib/projections/utm.js
72564
+ ;// ../node_modules/proj4/lib/projections/utm.js
73220
72565
 
73221
72566
 
73222
72567
  var dependsOn = 'etmerc';
@@ -73633,9 +72978,7 @@ var options = {};
73633
72978
 
73634
72979
  options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
73635
72980
  options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
73636
-
73637
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73638
-
72981
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73639
72982
  options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
73640
72983
  options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
73641
72984
 
@@ -73682,9 +73025,7 @@ var options = {};
73682
73025
 
73683
73026
  options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
73684
73027
  options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
73685
-
73686
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73687
-
73028
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73688
73029
  options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
73689
73030
  options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
73690
73031
 
@@ -73731,9 +73072,7 @@ var options = {};
73731
73072
 
73732
73073
  options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
73733
73074
  options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
73734
-
73735
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73736
-
73075
+ options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
73737
73076
  options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
73738
73077
  options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
73739
73078
 
@@ -74064,6 +73403,630 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__7606__;
74064
73403
 
74065
73404
  /***/ }),
74066
73405
 
73406
+ /***/ 9747:
73407
+ /***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
73408
+
73409
+ "use strict";
73410
+ __webpack_require__.r(__webpack_exports__);
73411
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
73412
+ /* harmony export */ "default": function() { return /* binding */ earcut; },
73413
+ /* harmony export */ deviation: function() { return /* binding */ deviation; },
73414
+ /* harmony export */ flatten: function() { return /* binding */ flatten; }
73415
+ /* harmony export */ });
73416
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
73417
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
73418
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
73419
+ function earcut(data, holeIndices) {
73420
+ var dim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;
73421
+ var hasHoles = holeIndices && holeIndices.length;
73422
+ var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
73423
+ var outerNode = linkedList(data, 0, outerLen, dim, true);
73424
+ var triangles = [];
73425
+ if (!outerNode || outerNode.next === outerNode.prev) return triangles;
73426
+ var minX, minY, invSize;
73427
+ if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
73428
+
73429
+ // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
73430
+ if (data.length > 80 * dim) {
73431
+ minX = Infinity;
73432
+ minY = Infinity;
73433
+ var maxX = -Infinity;
73434
+ var maxY = -Infinity;
73435
+ for (var i = dim; i < outerLen; i += dim) {
73436
+ var x = data[i];
73437
+ var y = data[i + 1];
73438
+ if (x < minX) minX = x;
73439
+ if (y < minY) minY = y;
73440
+ if (x > maxX) maxX = x;
73441
+ if (y > maxY) maxY = y;
73442
+ }
73443
+
73444
+ // minX, minY and invSize are later used to transform coords into integers for z-order calculation
73445
+ invSize = Math.max(maxX - minX, maxY - minY);
73446
+ invSize = invSize !== 0 ? 32767 / invSize : 0;
73447
+ }
73448
+ earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);
73449
+ return triangles;
73450
+ }
73451
+
73452
+ // create a circular doubly linked list from polygon points in the specified winding order
73453
+ function linkedList(data, start, end, dim, clockwise) {
73454
+ var last;
73455
+ if (clockwise === signedArea(data, start, end, dim) > 0) {
73456
+ for (var i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);
73457
+ } else {
73458
+ for (var _i = end - dim; _i >= start; _i -= dim) last = insertNode(_i / dim | 0, data[_i], data[_i + 1], last);
73459
+ }
73460
+ if (last && equals(last, last.next)) {
73461
+ removeNode(last);
73462
+ last = last.next;
73463
+ }
73464
+ return last;
73465
+ }
73466
+
73467
+ // eliminate colinear or duplicate points
73468
+ function filterPoints(start, end) {
73469
+ if (!start) return start;
73470
+ if (!end) end = start;
73471
+ var p = start,
73472
+ again;
73473
+ do {
73474
+ again = false;
73475
+ if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
73476
+ removeNode(p);
73477
+ p = end = p.prev;
73478
+ if (p === p.next) break;
73479
+ again = true;
73480
+ } else {
73481
+ p = p.next;
73482
+ }
73483
+ } while (again || p !== end);
73484
+ return end;
73485
+ }
73486
+
73487
+ // main ear slicing loop which triangulates a polygon (given as a linked list)
73488
+ function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {
73489
+ if (!ear) return;
73490
+
73491
+ // interlink polygon nodes in z-order
73492
+ if (!pass && invSize) indexCurve(ear, minX, minY, invSize);
73493
+ var stop = ear;
73494
+
73495
+ // iterate through ears, slicing them one by one
73496
+ while (ear.prev !== ear.next) {
73497
+ var prev = ear.prev;
73498
+ var next = ear.next;
73499
+ if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {
73500
+ triangles.push(prev.i, ear.i, next.i); // cut off the triangle
73501
+
73502
+ removeNode(ear);
73503
+
73504
+ // skipping the next vertex leads to less sliver triangles
73505
+ ear = next.next;
73506
+ stop = next.next;
73507
+ continue;
73508
+ }
73509
+ ear = next;
73510
+
73511
+ // if we looped through the whole remaining polygon and can't find any more ears
73512
+ if (ear === stop) {
73513
+ // try filtering points and slicing again
73514
+ if (!pass) {
73515
+ earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);
73516
+
73517
+ // if this didn't work, try curing all small self-intersections locally
73518
+ } else if (pass === 1) {
73519
+ ear = cureLocalIntersections(filterPoints(ear), triangles);
73520
+ earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);
73521
+
73522
+ // as a last resort, try splitting the remaining polygon into two
73523
+ } else if (pass === 2) {
73524
+ splitEarcut(ear, triangles, dim, minX, minY, invSize);
73525
+ }
73526
+ break;
73527
+ }
73528
+ }
73529
+ }
73530
+
73531
+ // check whether a polygon node forms a valid ear with adjacent nodes
73532
+ function isEar(ear) {
73533
+ var a = ear.prev,
73534
+ b = ear,
73535
+ c = ear.next;
73536
+ if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
73537
+
73538
+ // now make sure we don't have other points inside the potential ear
73539
+ var ax = a.x,
73540
+ bx = b.x,
73541
+ cx = c.x,
73542
+ ay = a.y,
73543
+ by = b.y,
73544
+ cy = c.y;
73545
+
73546
+ // triangle bbox; min & max are calculated like this for speed
73547
+ var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx,
73548
+ y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy,
73549
+ x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx,
73550
+ y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;
73551
+ var p = c.next;
73552
+ while (p !== a) {
73553
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;
73554
+ p = p.next;
73555
+ }
73556
+ return true;
73557
+ }
73558
+ function isEarHashed(ear, minX, minY, invSize) {
73559
+ var a = ear.prev,
73560
+ b = ear,
73561
+ c = ear.next;
73562
+ if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
73563
+
73564
+ var ax = a.x,
73565
+ bx = b.x,
73566
+ cx = c.x,
73567
+ ay = a.y,
73568
+ by = b.y,
73569
+ cy = c.y;
73570
+
73571
+ // triangle bbox; min & max are calculated like this for speed
73572
+ var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx,
73573
+ y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy,
73574
+ x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx,
73575
+ y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;
73576
+
73577
+ // z-order range for the current triangle bbox;
73578
+ var minZ = zOrder(x0, y0, minX, minY, invSize),
73579
+ maxZ = zOrder(x1, y1, minX, minY, invSize);
73580
+ var p = ear.prevZ,
73581
+ n = ear.nextZ;
73582
+
73583
+ // look for points inside the triangle in both directions
73584
+ while (p && p.z >= minZ && n && n.z <= maxZ) {
73585
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;
73586
+ p = p.prevZ;
73587
+ if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;
73588
+ n = n.nextZ;
73589
+ }
73590
+
73591
+ // look for remaining points in decreasing z-order
73592
+ while (p && p.z >= minZ) {
73593
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;
73594
+ p = p.prevZ;
73595
+ }
73596
+
73597
+ // look for remaining points in increasing z-order
73598
+ while (n && n.z <= maxZ) {
73599
+ if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;
73600
+ n = n.nextZ;
73601
+ }
73602
+ return true;
73603
+ }
73604
+
73605
+ // go through all polygon nodes and cure small local self-intersections
73606
+ function cureLocalIntersections(start, triangles) {
73607
+ var p = start;
73608
+ do {
73609
+ var a = p.prev,
73610
+ b = p.next.next;
73611
+ if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
73612
+ triangles.push(a.i, p.i, b.i);
73613
+
73614
+ // remove two nodes involved
73615
+ removeNode(p);
73616
+ removeNode(p.next);
73617
+ p = start = b;
73618
+ }
73619
+ p = p.next;
73620
+ } while (p !== start);
73621
+ return filterPoints(p);
73622
+ }
73623
+
73624
+ // try splitting polygon into two and triangulate them independently
73625
+ function splitEarcut(start, triangles, dim, minX, minY, invSize) {
73626
+ // look for a valid diagonal that divides the polygon into two
73627
+ var a = start;
73628
+ do {
73629
+ var b = a.next.next;
73630
+ while (b !== a.prev) {
73631
+ if (a.i !== b.i && isValidDiagonal(a, b)) {
73632
+ // split the polygon in two by the diagonal
73633
+ var c = splitPolygon(a, b);
73634
+
73635
+ // filter colinear points around the cuts
73636
+ a = filterPoints(a, a.next);
73637
+ c = filterPoints(c, c.next);
73638
+
73639
+ // run earcut on each half
73640
+ earcutLinked(a, triangles, dim, minX, minY, invSize, 0);
73641
+ earcutLinked(c, triangles, dim, minX, minY, invSize, 0);
73642
+ return;
73643
+ }
73644
+ b = b.next;
73645
+ }
73646
+ a = a.next;
73647
+ } while (a !== start);
73648
+ }
73649
+
73650
+ // link every hole into the outer loop, producing a single-ring polygon without holes
73651
+ function eliminateHoles(data, holeIndices, outerNode, dim) {
73652
+ var queue = [];
73653
+ for (var i = 0, len = holeIndices.length; i < len; i++) {
73654
+ var start = holeIndices[i] * dim;
73655
+ var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
73656
+ var list = linkedList(data, start, end, dim, false);
73657
+ if (list === list.next) list.steiner = true;
73658
+ queue.push(getLeftmost(list));
73659
+ }
73660
+ queue.sort(compareX);
73661
+
73662
+ // process holes from left to right
73663
+ for (var _i2 = 0; _i2 < queue.length; _i2++) {
73664
+ outerNode = eliminateHole(queue[_i2], outerNode);
73665
+ }
73666
+ return outerNode;
73667
+ }
73668
+ function compareX(a, b) {
73669
+ return a.x - b.x;
73670
+ }
73671
+
73672
+ // find a bridge between vertices that connects hole with an outer ring and and link it
73673
+ function eliminateHole(hole, outerNode) {
73674
+ var bridge = findHoleBridge(hole, outerNode);
73675
+ if (!bridge) {
73676
+ return outerNode;
73677
+ }
73678
+ var bridgeReverse = splitPolygon(bridge, hole);
73679
+
73680
+ // filter collinear points around the cuts
73681
+ filterPoints(bridgeReverse, bridgeReverse.next);
73682
+ return filterPoints(bridge, bridge.next);
73683
+ }
73684
+
73685
+ // David Eberly's algorithm for finding a bridge between hole and outer polygon
73686
+ function findHoleBridge(hole, outerNode) {
73687
+ var p = outerNode;
73688
+ var hx = hole.x;
73689
+ var hy = hole.y;
73690
+ var qx = -Infinity;
73691
+ var m;
73692
+
73693
+ // find a segment intersected by a ray from the hole's leftmost point to the left;
73694
+ // segment's endpoint with lesser x will be potential connection point
73695
+ do {
73696
+ if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {
73697
+ var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);
73698
+ if (x <= hx && x > qx) {
73699
+ qx = x;
73700
+ m = p.x < p.next.x ? p : p.next;
73701
+ if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint
73702
+ }
73703
+ }
73704
+ p = p.next;
73705
+ } while (p !== outerNode);
73706
+ if (!m) return null;
73707
+
73708
+ // look for points inside the triangle of hole point, segment intersection and endpoint;
73709
+ // if there are no points found, we have a valid connection;
73710
+ // otherwise choose the point of the minimum angle with the ray as connection point
73711
+
73712
+ var stop = m;
73713
+ var mx = m.x;
73714
+ var my = m.y;
73715
+ var tanMin = Infinity;
73716
+ p = m;
73717
+ do {
73718
+ if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
73719
+ var tan = Math.abs(hy - p.y) / (hx - p.x); // tangential
73720
+
73721
+ if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {
73722
+ m = p;
73723
+ tanMin = tan;
73724
+ }
73725
+ }
73726
+ p = p.next;
73727
+ } while (p !== stop);
73728
+ return m;
73729
+ }
73730
+
73731
+ // whether sector in vertex m contains sector in vertex p in the same coordinates
73732
+ function sectorContainsSector(m, p) {
73733
+ return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;
73734
+ }
73735
+
73736
+ // interlink polygon nodes in z-order
73737
+ function indexCurve(start, minX, minY, invSize) {
73738
+ var p = start;
73739
+ do {
73740
+ if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);
73741
+ p.prevZ = p.prev;
73742
+ p.nextZ = p.next;
73743
+ p = p.next;
73744
+ } while (p !== start);
73745
+ p.prevZ.nextZ = null;
73746
+ p.prevZ = null;
73747
+ sortLinked(p);
73748
+ }
73749
+
73750
+ // Simon Tatham's linked list merge sort algorithm
73751
+ // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
73752
+ function sortLinked(list) {
73753
+ var numMerges;
73754
+ var inSize = 1;
73755
+ do {
73756
+ var p = list;
73757
+ var e = void 0;
73758
+ list = null;
73759
+ var tail = null;
73760
+ numMerges = 0;
73761
+ while (p) {
73762
+ numMerges++;
73763
+ var q = p;
73764
+ var pSize = 0;
73765
+ for (var i = 0; i < inSize; i++) {
73766
+ pSize++;
73767
+ q = q.nextZ;
73768
+ if (!q) break;
73769
+ }
73770
+ var qSize = inSize;
73771
+ while (pSize > 0 || qSize > 0 && q) {
73772
+ if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
73773
+ e = p;
73774
+ p = p.nextZ;
73775
+ pSize--;
73776
+ } else {
73777
+ e = q;
73778
+ q = q.nextZ;
73779
+ qSize--;
73780
+ }
73781
+ if (tail) tail.nextZ = e;else list = e;
73782
+ e.prevZ = tail;
73783
+ tail = e;
73784
+ }
73785
+ p = q;
73786
+ }
73787
+ tail.nextZ = null;
73788
+ inSize *= 2;
73789
+ } while (numMerges > 1);
73790
+ return list;
73791
+ }
73792
+
73793
+ // z-order of a point given coords and inverse of the longer side of data bbox
73794
+ function zOrder(x, y, minX, minY, invSize) {
73795
+ // coords are transformed into non-negative 15-bit integer range
73796
+ x = (x - minX) * invSize | 0;
73797
+ y = (y - minY) * invSize | 0;
73798
+ x = (x | x << 8) & 0x00FF00FF;
73799
+ x = (x | x << 4) & 0x0F0F0F0F;
73800
+ x = (x | x << 2) & 0x33333333;
73801
+ x = (x | x << 1) & 0x55555555;
73802
+ y = (y | y << 8) & 0x00FF00FF;
73803
+ y = (y | y << 4) & 0x0F0F0F0F;
73804
+ y = (y | y << 2) & 0x33333333;
73805
+ y = (y | y << 1) & 0x55555555;
73806
+ return x | y << 1;
73807
+ }
73808
+
73809
+ // find the leftmost node of a polygon ring
73810
+ function getLeftmost(start) {
73811
+ var p = start,
73812
+ leftmost = start;
73813
+ do {
73814
+ if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;
73815
+ p = p.next;
73816
+ } while (p !== start);
73817
+ return leftmost;
73818
+ }
73819
+
73820
+ // check if a point lies within a convex triangle
73821
+ function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
73822
+ return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py);
73823
+ }
73824
+
73825
+ // check if a diagonal between two polygon nodes is valid (lies in polygon interior)
73826
+ function isValidDiagonal(a, b) {
73827
+ return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (
73828
+ // dones't intersect other edges
73829
+ locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (
73830
+ // locally visible
73831
+ area(a.prev, a, b.prev) || area(a, b.prev, b)) ||
73832
+ // does not create opposite-facing sectors
73833
+ equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case
73834
+ }
73835
+
73836
+ // signed area of a triangle
73837
+ function area(p, q, r) {
73838
+ return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
73839
+ }
73840
+
73841
+ // check if two points are equal
73842
+ function equals(p1, p2) {
73843
+ return p1.x === p2.x && p1.y === p2.y;
73844
+ }
73845
+
73846
+ // check if two segments intersect
73847
+ function intersects(p1, q1, p2, q2) {
73848
+ var o1 = sign(area(p1, q1, p2));
73849
+ var o2 = sign(area(p1, q1, q2));
73850
+ var o3 = sign(area(p2, q2, p1));
73851
+ var o4 = sign(area(p2, q2, q1));
73852
+ if (o1 !== o2 && o3 !== o4) return true; // general case
73853
+
73854
+ if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1
73855
+ if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1
73856
+ if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2
73857
+ if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2
73858
+
73859
+ return false;
73860
+ }
73861
+
73862
+ // for collinear points p, q, r, check if point q lies on segment pr
73863
+ function onSegment(p, q, r) {
73864
+ return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);
73865
+ }
73866
+ function sign(num) {
73867
+ return num > 0 ? 1 : num < 0 ? -1 : 0;
73868
+ }
73869
+
73870
+ // check if a polygon diagonal intersects any polygon segments
73871
+ function intersectsPolygon(a, b) {
73872
+ var p = a;
73873
+ do {
73874
+ if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;
73875
+ p = p.next;
73876
+ } while (p !== a);
73877
+ return false;
73878
+ }
73879
+
73880
+ // check if a polygon diagonal is locally inside the polygon
73881
+ function locallyInside(a, b) {
73882
+ return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
73883
+ }
73884
+
73885
+ // check if the middle point of a polygon diagonal is inside the polygon
73886
+ function middleInside(a, b) {
73887
+ var p = a;
73888
+ var inside = false;
73889
+ var px = (a.x + b.x) / 2;
73890
+ var py = (a.y + b.y) / 2;
73891
+ do {
73892
+ if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;
73893
+ p = p.next;
73894
+ } while (p !== a);
73895
+ return inside;
73896
+ }
73897
+
73898
+ // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;
73899
+ // if one belongs to the outer ring and another to a hole, it merges it into a single ring
73900
+ function splitPolygon(a, b) {
73901
+ var a2 = createNode(a.i, a.x, a.y),
73902
+ b2 = createNode(b.i, b.x, b.y),
73903
+ an = a.next,
73904
+ bp = b.prev;
73905
+ a.next = b;
73906
+ b.prev = a;
73907
+ a2.next = an;
73908
+ an.prev = a2;
73909
+ b2.next = a2;
73910
+ a2.prev = b2;
73911
+ bp.next = b2;
73912
+ b2.prev = bp;
73913
+ return b2;
73914
+ }
73915
+
73916
+ // create a node and optionally link it with previous one (in a circular doubly linked list)
73917
+ function insertNode(i, x, y, last) {
73918
+ var p = createNode(i, x, y);
73919
+ if (!last) {
73920
+ p.prev = p;
73921
+ p.next = p;
73922
+ } else {
73923
+ p.next = last.next;
73924
+ p.prev = last;
73925
+ last.next.prev = p;
73926
+ last.next = p;
73927
+ }
73928
+ return p;
73929
+ }
73930
+ function removeNode(p) {
73931
+ p.next.prev = p.prev;
73932
+ p.prev.next = p.next;
73933
+ if (p.prevZ) p.prevZ.nextZ = p.nextZ;
73934
+ if (p.nextZ) p.nextZ.prevZ = p.prevZ;
73935
+ }
73936
+ function createNode(i, x, y) {
73937
+ return {
73938
+ i: i,
73939
+ // vertex index in coordinates array
73940
+ x: x,
73941
+ y: y,
73942
+ // vertex coordinates
73943
+ prev: null,
73944
+ // previous and next vertex nodes in a polygon ring
73945
+ next: null,
73946
+ z: 0,
73947
+ // z-order curve value
73948
+ prevZ: null,
73949
+ // previous and next nodes in z-order
73950
+ nextZ: null,
73951
+ steiner: false // indicates whether this is a steiner point
73952
+ };
73953
+ }
73954
+
73955
+ // return a percentage difference between the polygon area and its triangulation area;
73956
+ // used to verify correctness of triangulation
73957
+ function deviation(data, holeIndices, dim, triangles) {
73958
+ var hasHoles = holeIndices && holeIndices.length;
73959
+ var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
73960
+ var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
73961
+ if (hasHoles) {
73962
+ for (var i = 0, len = holeIndices.length; i < len; i++) {
73963
+ var start = holeIndices[i] * dim;
73964
+ var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
73965
+ polygonArea -= Math.abs(signedArea(data, start, end, dim));
73966
+ }
73967
+ }
73968
+ var trianglesArea = 0;
73969
+ for (var _i3 = 0; _i3 < triangles.length; _i3 += 3) {
73970
+ var a = triangles[_i3] * dim;
73971
+ var b = triangles[_i3 + 1] * dim;
73972
+ var c = triangles[_i3 + 2] * dim;
73973
+ trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
73974
+ }
73975
+ return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);
73976
+ }
73977
+ function signedArea(data, start, end, dim) {
73978
+ var sum = 0;
73979
+ for (var i = start, j = end - dim; i < end; i += dim) {
73980
+ sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
73981
+ j = i;
73982
+ }
73983
+ return sum;
73984
+ }
73985
+
73986
+ // turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts
73987
+ function flatten(data) {
73988
+ var vertices = [];
73989
+ var holes = [];
73990
+ var dimensions = data[0][0].length;
73991
+ var holeIndex = 0;
73992
+ var prevLen = 0;
73993
+ var _iterator = _createForOfIteratorHelper(data),
73994
+ _step;
73995
+ try {
73996
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
73997
+ var ring = _step.value;
73998
+ var _iterator2 = _createForOfIteratorHelper(ring),
73999
+ _step2;
74000
+ try {
74001
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
74002
+ var p = _step2.value;
74003
+ for (var d = 0; d < dimensions; d++) vertices.push(p[d]);
74004
+ }
74005
+ } catch (err) {
74006
+ _iterator2.e(err);
74007
+ } finally {
74008
+ _iterator2.f();
74009
+ }
74010
+ if (prevLen) {
74011
+ holeIndex += prevLen;
74012
+ holes.push(holeIndex);
74013
+ }
74014
+ prevLen = ring.length;
74015
+ }
74016
+ } catch (err) {
74017
+ _iterator.e(err);
74018
+ } finally {
74019
+ _iterator.f();
74020
+ }
74021
+ return {
74022
+ vertices: vertices,
74023
+ holes: holes,
74024
+ dimensions: dimensions
74025
+ };
74026
+ }
74027
+
74028
+ /***/ }),
74029
+
74067
74030
  /***/ 4279:
74068
74031
  /***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
74069
74032
 
@@ -74655,8 +74618,8 @@ __webpack_require__.r(__webpack_exports__);
74655
74618
  /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
74656
74619
  /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
74657
74620
  /******/ var installedChunks = {
74658
- /******/ 692: 0,
74659
- /******/ 294: 0
74621
+ /******/ 294: 0,
74622
+ /******/ 692: 0
74660
74623
  /******/ };
74661
74624
  /******/
74662
74625
  /******/ // no chunk on demand loading