@deck.gl/carto 8.9.25 → 8.9.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/LICENSE +19 -0
  2. package/dist/cartoRasterTile-worker.js +2 -2
  3. package/dist/cartoSpatialTile-worker.js +2 -2
  4. package/dist/cartoVectorTile-worker.js +502 -2
  5. package/dist/dist.dev.js +521 -17
  6. package/dist/es5/api/maps-v3-client.js +1 -1
  7. package/dist/es5/api/maps-v3-client.js.map +1 -1
  8. package/dist/es5/layers/carto-tile-layer.js +1 -10
  9. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  10. package/dist/es5/layers/h3-tile-layer.js +1 -2
  11. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  12. package/dist/es5/layers/quadbin-tile-layer.js +1 -2
  13. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  14. package/dist/es5/layers/schema/carto-raster-tile-loader.js +2 -2
  15. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -1
  16. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +2 -2
  17. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  18. package/dist/es5/layers/schema/carto-vector-tile-loader.js +53 -2
  19. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
  20. package/dist/esm/api/maps-v3-client.js +1 -1
  21. package/dist/esm/api/maps-v3-client.js.map +1 -1
  22. package/dist/esm/layers/carto-tile-layer.js +2 -10
  23. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  24. package/dist/esm/layers/h3-tile-layer.js +1 -2
  25. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  26. package/dist/esm/layers/quadbin-tile-layer.js +1 -2
  27. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  28. package/dist/esm/layers/schema/carto-raster-tile-loader.js +2 -2
  29. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -1
  30. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +2 -2
  31. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  32. package/dist/esm/layers/schema/carto-vector-tile-loader.js +53 -2
  33. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
  34. package/dist.min.js +24 -24
  35. package/package.json +8 -8
  36. package/src/api/maps-v3-client.ts +1 -1
  37. package/src/layers/carto-tile-layer.ts +2 -12
  38. package/src/layers/h3-tile-layer.ts +1 -2
  39. package/src/layers/quadbin-tile-layer.ts +1 -2
  40. package/src/layers/schema/carto-raster-tile-loader.ts +1 -1
  41. package/src/layers/schema/carto-spatial-tile-loader.ts +1 -1
  42. package/src/layers/schema/carto-vector-tile-loader.ts +57 -4
  43. package/typed/layers/carto-tile-layer.d.ts.map +1 -1
  44. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  45. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  46. package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
package/dist/dist.dev.js CHANGED
@@ -5355,6 +5355,473 @@ var __exports__ = (() => {
5355
5355
  }
5356
5356
  });
5357
5357
 
5358
+ // ../../node_modules/earcut/src/earcut.js
5359
+ var require_earcut = __commonJS({
5360
+ "../../node_modules/earcut/src/earcut.js"(exports, module) {
5361
+ "use strict";
5362
+ module.exports = earcut2;
5363
+ module.exports.default = earcut2;
5364
+ function earcut2(data, holeIndices, dim) {
5365
+ dim = dim || 2;
5366
+ var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = [];
5367
+ if (!outerNode || outerNode.next === outerNode.prev)
5368
+ return triangles;
5369
+ var minX, minY, maxX, maxY, x, y, invSize;
5370
+ if (hasHoles)
5371
+ outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
5372
+ if (data.length > 80 * dim) {
5373
+ minX = maxX = data[0];
5374
+ minY = maxY = data[1];
5375
+ for (var i = dim; i < outerLen; i += dim) {
5376
+ x = data[i];
5377
+ y = data[i + 1];
5378
+ if (x < minX)
5379
+ minX = x;
5380
+ if (y < minY)
5381
+ minY = y;
5382
+ if (x > maxX)
5383
+ maxX = x;
5384
+ if (y > maxY)
5385
+ maxY = y;
5386
+ }
5387
+ invSize = Math.max(maxX - minX, maxY - minY);
5388
+ invSize = invSize !== 0 ? 1 / invSize : 0;
5389
+ }
5390
+ earcutLinked(outerNode, triangles, dim, minX, minY, invSize);
5391
+ return triangles;
5392
+ }
5393
+ function linkedList(data, start, end, dim, clockwise) {
5394
+ var i, last;
5395
+ if (clockwise === signedArea(data, start, end, dim) > 0) {
5396
+ for (i = start; i < end; i += dim)
5397
+ last = insertNode(i, data[i], data[i + 1], last);
5398
+ } else {
5399
+ for (i = end - dim; i >= start; i -= dim)
5400
+ last = insertNode(i, data[i], data[i + 1], last);
5401
+ }
5402
+ if (last && equals(last, last.next)) {
5403
+ removeNode(last);
5404
+ last = last.next;
5405
+ }
5406
+ return last;
5407
+ }
5408
+ function filterPoints(start, end) {
5409
+ if (!start)
5410
+ return start;
5411
+ if (!end)
5412
+ end = start;
5413
+ var p = start, again;
5414
+ do {
5415
+ again = false;
5416
+ if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
5417
+ removeNode(p);
5418
+ p = end = p.prev;
5419
+ if (p === p.next)
5420
+ break;
5421
+ again = true;
5422
+ } else {
5423
+ p = p.next;
5424
+ }
5425
+ } while (again || p !== end);
5426
+ return end;
5427
+ }
5428
+ function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {
5429
+ if (!ear)
5430
+ return;
5431
+ if (!pass && invSize)
5432
+ indexCurve(ear, minX, minY, invSize);
5433
+ var stop = ear, prev, next;
5434
+ while (ear.prev !== ear.next) {
5435
+ prev = ear.prev;
5436
+ next = ear.next;
5437
+ if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {
5438
+ triangles.push(prev.i / dim);
5439
+ triangles.push(ear.i / dim);
5440
+ triangles.push(next.i / dim);
5441
+ removeNode(ear);
5442
+ ear = next.next;
5443
+ stop = next.next;
5444
+ continue;
5445
+ }
5446
+ ear = next;
5447
+ if (ear === stop) {
5448
+ if (!pass) {
5449
+ earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);
5450
+ } else if (pass === 1) {
5451
+ ear = cureLocalIntersections(filterPoints(ear), triangles, dim);
5452
+ earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);
5453
+ } else if (pass === 2) {
5454
+ splitEarcut(ear, triangles, dim, minX, minY, invSize);
5455
+ }
5456
+ break;
5457
+ }
5458
+ }
5459
+ }
5460
+ function isEar(ear) {
5461
+ var a = ear.prev, b = ear, c = ear.next;
5462
+ if (area(a, b, c) >= 0)
5463
+ return false;
5464
+ var p = ear.next.next;
5465
+ while (p !== ear.prev) {
5466
+ if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
5467
+ return false;
5468
+ p = p.next;
5469
+ }
5470
+ return true;
5471
+ }
5472
+ function isEarHashed(ear, minX, minY, invSize) {
5473
+ var a = ear.prev, b = ear, c = ear.next;
5474
+ if (area(a, b, c) >= 0)
5475
+ return false;
5476
+ var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;
5477
+ var minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);
5478
+ var p = ear.prevZ, n = ear.nextZ;
5479
+ while (p && p.z >= minZ && n && n.z <= maxZ) {
5480
+ if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
5481
+ return false;
5482
+ p = p.prevZ;
5483
+ if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)
5484
+ return false;
5485
+ n = n.nextZ;
5486
+ }
5487
+ while (p && p.z >= minZ) {
5488
+ if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
5489
+ return false;
5490
+ p = p.prevZ;
5491
+ }
5492
+ while (n && n.z <= maxZ) {
5493
+ if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)
5494
+ return false;
5495
+ n = n.nextZ;
5496
+ }
5497
+ return true;
5498
+ }
5499
+ function cureLocalIntersections(start, triangles, dim) {
5500
+ var p = start;
5501
+ do {
5502
+ var a = p.prev, b = p.next.next;
5503
+ if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
5504
+ triangles.push(a.i / dim);
5505
+ triangles.push(p.i / dim);
5506
+ triangles.push(b.i / dim);
5507
+ removeNode(p);
5508
+ removeNode(p.next);
5509
+ p = start = b;
5510
+ }
5511
+ p = p.next;
5512
+ } while (p !== start);
5513
+ return filterPoints(p);
5514
+ }
5515
+ function splitEarcut(start, triangles, dim, minX, minY, invSize) {
5516
+ var a = start;
5517
+ do {
5518
+ var b = a.next.next;
5519
+ while (b !== a.prev) {
5520
+ if (a.i !== b.i && isValidDiagonal(a, b)) {
5521
+ var c = splitPolygon(a, b);
5522
+ a = filterPoints(a, a.next);
5523
+ c = filterPoints(c, c.next);
5524
+ earcutLinked(a, triangles, dim, minX, minY, invSize);
5525
+ earcutLinked(c, triangles, dim, minX, minY, invSize);
5526
+ return;
5527
+ }
5528
+ b = b.next;
5529
+ }
5530
+ a = a.next;
5531
+ } while (a !== start);
5532
+ }
5533
+ function eliminateHoles(data, holeIndices, outerNode, dim) {
5534
+ var queue = [], i, len, start, end, list;
5535
+ for (i = 0, len = holeIndices.length; i < len; i++) {
5536
+ start = holeIndices[i] * dim;
5537
+ end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
5538
+ list = linkedList(data, start, end, dim, false);
5539
+ if (list === list.next)
5540
+ list.steiner = true;
5541
+ queue.push(getLeftmost(list));
5542
+ }
5543
+ queue.sort(compareX);
5544
+ for (i = 0; i < queue.length; i++) {
5545
+ eliminateHole(queue[i], outerNode);
5546
+ outerNode = filterPoints(outerNode, outerNode.next);
5547
+ }
5548
+ return outerNode;
5549
+ }
5550
+ function compareX(a, b) {
5551
+ return a.x - b.x;
5552
+ }
5553
+ function eliminateHole(hole, outerNode) {
5554
+ outerNode = findHoleBridge(hole, outerNode);
5555
+ if (outerNode) {
5556
+ var b = splitPolygon(outerNode, hole);
5557
+ filterPoints(b, b.next);
5558
+ }
5559
+ }
5560
+ function findHoleBridge(hole, outerNode) {
5561
+ var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;
5562
+ do {
5563
+ if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {
5564
+ var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);
5565
+ if (x <= hx && x > qx) {
5566
+ qx = x;
5567
+ if (x === hx) {
5568
+ if (hy === p.y)
5569
+ return p;
5570
+ if (hy === p.next.y)
5571
+ return p.next;
5572
+ }
5573
+ m = p.x < p.next.x ? p : p.next;
5574
+ }
5575
+ }
5576
+ p = p.next;
5577
+ } while (p !== outerNode);
5578
+ if (!m)
5579
+ return null;
5580
+ if (hx === qx)
5581
+ return m;
5582
+ var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;
5583
+ p = m;
5584
+ do {
5585
+ 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)) {
5586
+ tan = Math.abs(hy - p.y) / (hx - p.x);
5587
+ if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {
5588
+ m = p;
5589
+ tanMin = tan;
5590
+ }
5591
+ }
5592
+ p = p.next;
5593
+ } while (p !== stop);
5594
+ return m;
5595
+ }
5596
+ function sectorContainsSector(m, p) {
5597
+ return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;
5598
+ }
5599
+ function indexCurve(start, minX, minY, invSize) {
5600
+ var p = start;
5601
+ do {
5602
+ if (p.z === null)
5603
+ p.z = zOrder(p.x, p.y, minX, minY, invSize);
5604
+ p.prevZ = p.prev;
5605
+ p.nextZ = p.next;
5606
+ p = p.next;
5607
+ } while (p !== start);
5608
+ p.prevZ.nextZ = null;
5609
+ p.prevZ = null;
5610
+ sortLinked(p);
5611
+ }
5612
+ function sortLinked(list) {
5613
+ var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;
5614
+ do {
5615
+ p = list;
5616
+ list = null;
5617
+ tail = null;
5618
+ numMerges = 0;
5619
+ while (p) {
5620
+ numMerges++;
5621
+ q = p;
5622
+ pSize = 0;
5623
+ for (i = 0; i < inSize; i++) {
5624
+ pSize++;
5625
+ q = q.nextZ;
5626
+ if (!q)
5627
+ break;
5628
+ }
5629
+ qSize = inSize;
5630
+ while (pSize > 0 || qSize > 0 && q) {
5631
+ if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
5632
+ e = p;
5633
+ p = p.nextZ;
5634
+ pSize--;
5635
+ } else {
5636
+ e = q;
5637
+ q = q.nextZ;
5638
+ qSize--;
5639
+ }
5640
+ if (tail)
5641
+ tail.nextZ = e;
5642
+ else
5643
+ list = e;
5644
+ e.prevZ = tail;
5645
+ tail = e;
5646
+ }
5647
+ p = q;
5648
+ }
5649
+ tail.nextZ = null;
5650
+ inSize *= 2;
5651
+ } while (numMerges > 1);
5652
+ return list;
5653
+ }
5654
+ function zOrder(x, y, minX, minY, invSize) {
5655
+ x = 32767 * (x - minX) * invSize;
5656
+ y = 32767 * (y - minY) * invSize;
5657
+ x = (x | x << 8) & 16711935;
5658
+ x = (x | x << 4) & 252645135;
5659
+ x = (x | x << 2) & 858993459;
5660
+ x = (x | x << 1) & 1431655765;
5661
+ y = (y | y << 8) & 16711935;
5662
+ y = (y | y << 4) & 252645135;
5663
+ y = (y | y << 2) & 858993459;
5664
+ y = (y | y << 1) & 1431655765;
5665
+ return x | y << 1;
5666
+ }
5667
+ function getLeftmost(start) {
5668
+ var p = start, leftmost = start;
5669
+ do {
5670
+ if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y)
5671
+ leftmost = p;
5672
+ p = p.next;
5673
+ } while (p !== start);
5674
+ return leftmost;
5675
+ }
5676
+ function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
5677
+ return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;
5678
+ }
5679
+ function isValidDiagonal(a, b) {
5680
+ return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);
5681
+ }
5682
+ function area(p, q, r) {
5683
+ return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
5684
+ }
5685
+ function equals(p1, p2) {
5686
+ return p1.x === p2.x && p1.y === p2.y;
5687
+ }
5688
+ function intersects(p1, q1, p2, q2) {
5689
+ var o1 = sign(area(p1, q1, p2));
5690
+ var o2 = sign(area(p1, q1, q2));
5691
+ var o3 = sign(area(p2, q2, p1));
5692
+ var o4 = sign(area(p2, q2, q1));
5693
+ if (o1 !== o2 && o3 !== o4)
5694
+ return true;
5695
+ if (o1 === 0 && onSegment(p1, p2, q1))
5696
+ return true;
5697
+ if (o2 === 0 && onSegment(p1, q2, q1))
5698
+ return true;
5699
+ if (o3 === 0 && onSegment(p2, p1, q2))
5700
+ return true;
5701
+ if (o4 === 0 && onSegment(p2, q1, q2))
5702
+ return true;
5703
+ return false;
5704
+ }
5705
+ function onSegment(p, q, r) {
5706
+ 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);
5707
+ }
5708
+ function sign(num) {
5709
+ return num > 0 ? 1 : num < 0 ? -1 : 0;
5710
+ }
5711
+ function intersectsPolygon(a, b) {
5712
+ var p = a;
5713
+ do {
5714
+ 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))
5715
+ return true;
5716
+ p = p.next;
5717
+ } while (p !== a);
5718
+ return false;
5719
+ }
5720
+ function locallyInside(a, b) {
5721
+ 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;
5722
+ }
5723
+ function middleInside(a, b) {
5724
+ var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;
5725
+ do {
5726
+ 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)
5727
+ inside = !inside;
5728
+ p = p.next;
5729
+ } while (p !== a);
5730
+ return inside;
5731
+ }
5732
+ function splitPolygon(a, b) {
5733
+ var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;
5734
+ a.next = b;
5735
+ b.prev = a;
5736
+ a2.next = an;
5737
+ an.prev = a2;
5738
+ b2.next = a2;
5739
+ a2.prev = b2;
5740
+ bp.next = b2;
5741
+ b2.prev = bp;
5742
+ return b2;
5743
+ }
5744
+ function insertNode(i, x, y, last) {
5745
+ var p = new Node(i, x, y);
5746
+ if (!last) {
5747
+ p.prev = p;
5748
+ p.next = p;
5749
+ } else {
5750
+ p.next = last.next;
5751
+ p.prev = last;
5752
+ last.next.prev = p;
5753
+ last.next = p;
5754
+ }
5755
+ return p;
5756
+ }
5757
+ function removeNode(p) {
5758
+ p.next.prev = p.prev;
5759
+ p.prev.next = p.next;
5760
+ if (p.prevZ)
5761
+ p.prevZ.nextZ = p.nextZ;
5762
+ if (p.nextZ)
5763
+ p.nextZ.prevZ = p.prevZ;
5764
+ }
5765
+ function Node(i, x, y) {
5766
+ this.i = i;
5767
+ this.x = x;
5768
+ this.y = y;
5769
+ this.prev = null;
5770
+ this.next = null;
5771
+ this.z = null;
5772
+ this.prevZ = null;
5773
+ this.nextZ = null;
5774
+ this.steiner = false;
5775
+ }
5776
+ earcut2.deviation = function(data, holeIndices, dim, triangles) {
5777
+ var hasHoles = holeIndices && holeIndices.length;
5778
+ var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
5779
+ var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
5780
+ if (hasHoles) {
5781
+ for (var i = 0, len = holeIndices.length; i < len; i++) {
5782
+ var start = holeIndices[i] * dim;
5783
+ var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
5784
+ polygonArea -= Math.abs(signedArea(data, start, end, dim));
5785
+ }
5786
+ }
5787
+ var trianglesArea = 0;
5788
+ for (i = 0; i < triangles.length; i += 3) {
5789
+ var a = triangles[i] * dim;
5790
+ var b = triangles[i + 1] * dim;
5791
+ var c = triangles[i + 2] * dim;
5792
+ trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
5793
+ }
5794
+ return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);
5795
+ };
5796
+ function signedArea(data, start, end, dim) {
5797
+ var sum = 0;
5798
+ for (var i = start, j = end - dim; i < end; i += dim) {
5799
+ sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
5800
+ j = i;
5801
+ }
5802
+ return sum;
5803
+ }
5804
+ earcut2.flatten = function(data) {
5805
+ var dim = data[0][0].length, result = {
5806
+ vertices: [],
5807
+ holes: [],
5808
+ dimensions: dim
5809
+ }, holeIndex = 0;
5810
+ for (var i = 0; i < data.length; i++) {
5811
+ for (var j = 0; j < data[i].length; j++) {
5812
+ for (var d = 0; d < dim; d++)
5813
+ result.vertices.push(data[i][j][d]);
5814
+ }
5815
+ if (i > 0) {
5816
+ holeIndex += data[i - 1].length;
5817
+ result.holes.push(holeIndex);
5818
+ }
5819
+ }
5820
+ return result;
5821
+ };
5822
+ }
5823
+ });
5824
+
5358
5825
  // ../../node_modules/pbf/node_modules/ieee754/index.js
5359
5826
  var require_ieee754 = __commonJS({
5360
5827
  "../../node_modules/pbf/node_modules/ieee754/index.js"(exports) {
@@ -11469,6 +11936,9 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11469
11936
  // src/layers/carto-tile-layer.ts
11470
11937
  var import_core2 = __toESM(require_core2());
11471
11938
 
11939
+ // src/layers/schema/carto-vector-tile-loader.ts
11940
+ var import_earcut = __toESM(require_earcut());
11941
+
11472
11942
  // src/layers/schema/fast-pbf.ts
11473
11943
  function readPackedTypedArray(TypedArray, pbf, obj) {
11474
11944
  const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
@@ -11747,13 +12217,56 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11747
12217
  category: "geometry",
11748
12218
  parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),
11749
12219
  parseSync: parseCartoVectorTile,
11750
- worker: false,
12220
+ worker: true,
11751
12221
  options: DEFAULT_OPTIONS
11752
12222
  };
12223
+ function triangulatePolygon(polygons, target, {
12224
+ startPosition,
12225
+ endPosition,
12226
+ indices
12227
+ }) {
12228
+ const coordLength = polygons.positions.size;
12229
+ const start = startPosition * coordLength;
12230
+ const end = endPosition * coordLength;
12231
+ const polygonPositions = polygons.positions.value.subarray(start, end);
12232
+ const holes = indices.slice(1).map((n) => n - startPosition);
12233
+ const triangles = (0, import_earcut.default)(polygonPositions, holes, coordLength);
12234
+ for (let t = 0, tl = triangles.length; t < tl; ++t) {
12235
+ target.push(startPosition + triangles[t]);
12236
+ }
12237
+ }
12238
+ function triangulate(polygons) {
12239
+ const {
12240
+ polygonIndices,
12241
+ positions,
12242
+ primitivePolygonIndices
12243
+ } = polygons;
12244
+ const triangles = [];
12245
+ let rangeStart = 0;
12246
+ for (let i = 0; i < polygonIndices.value.length - 1; i++) {
12247
+ const startPosition = polygonIndices.value[i];
12248
+ const endPosition = polygonIndices.value[i + 1];
12249
+ const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);
12250
+ const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);
12251
+ rangeStart = rangeEnd;
12252
+ triangulatePolygon(polygons, triangles, {
12253
+ startPosition,
12254
+ endPosition,
12255
+ indices
12256
+ });
12257
+ }
12258
+ polygons.triangles = {
12259
+ value: new Uint32Array(triangles),
12260
+ size: 1
12261
+ };
12262
+ }
11753
12263
  function parseCartoVectorTile(arrayBuffer, options) {
11754
12264
  if (!arrayBuffer)
11755
12265
  return null;
11756
12266
  const tile = parsePbf(arrayBuffer, TileReader);
12267
+ if (tile.polygons && !tile.polygons.triangles) {
12268
+ triangulate(tile.polygons);
12269
+ }
11757
12270
  return tile;
11758
12271
  }
11759
12272
  var carto_vector_tile_loader_default = CartoVectorTileLoader;
@@ -11996,20 +12509,13 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
11996
12509
  if (!url) {
11997
12510
  return Promise.reject("Invalid URL");
11998
12511
  }
11999
- let loadOptions = this.getLoadOptions();
12512
+ const loadOptions = this.getLoadOptions();
12000
12513
  const {
12001
- fetch: fetch2,
12002
- formatTiles
12514
+ fetch: fetch2
12003
12515
  } = this.props;
12004
12516
  const {
12005
12517
  signal
12006
12518
  } = tile;
12007
- if (formatTiles === TILE_FORMATS.BINARY) {
12008
- loadOptions = {
12009
- ...loadOptions,
12010
- mimeType: "application/vnd.carto-vector-tile"
12011
- };
12012
- }
12013
12519
  return fetch2(url, {
12014
12520
  propName: "data",
12015
12521
  layer: this,
@@ -12238,7 +12744,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12238
12744
  category: "geometry",
12239
12745
  parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),
12240
12746
  parseSync: parseCartoRasterTile,
12241
- worker: false,
12747
+ worker: true,
12242
12748
  options: DEFAULT_OPTIONS2
12243
12749
  };
12244
12750
  function parseCartoRasterTile(arrayBuffer, options) {
@@ -12420,7 +12926,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12420
12926
  category: "geometry",
12421
12927
  parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),
12422
12928
  parseSync: parseCartoSpatialTile,
12423
- worker: false,
12929
+ worker: true,
12424
12930
  options: DEFAULT_OPTIONS3
12425
12931
  };
12426
12932
  function parseCartoSpatialTile(arrayBuffer, options) {
@@ -12593,8 +13099,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12593
13099
  ...this.getLoadOptions(),
12594
13100
  cartoSpatialTile: {
12595
13101
  scheme: "h3"
12596
- },
12597
- mimeType: "application/vnd.carto-spatial-tile"
13102
+ }
12598
13103
  }
12599
13104
  })];
12600
13105
  }
@@ -12762,8 +13267,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12762
13267
  ...this.getLoadOptions(),
12763
13268
  cartoSpatialTile: {
12764
13269
  scheme: "quadbin"
12765
- },
12766
- mimeType: "application/vnd.carto-spatial-tile"
13270
+ }
12767
13271
  }
12768
13272
  })];
12769
13273
  }
@@ -13998,7 +14502,7 @@ void main(void) {
13998
14502
  var import_core10 = __toESM(require_core());
13999
14503
  var MAX_GET_LENGTH = 8192;
14000
14504
  var DEFAULT_CLIENT = "deck-gl-carto";
14001
- var V3_MINOR_VERSION = "3.1";
14505
+ var V3_MINOR_VERSION = "3.2";
14002
14506
  async function request2({
14003
14507
  method,
14004
14508
  url,
@@ -41,7 +41,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
41
41
 
42
42
  var MAX_GET_LENGTH = 8192;
43
43
  var DEFAULT_CLIENT = 'deck-gl-carto';
44
- var V3_MINOR_VERSION = '3.1';
44
+ var V3_MINOR_VERSION = '3.2';
45
45
 
46
46
  function request(_x) {
47
47
  return _request.apply(this, arguments);