@watergis/maplibre-gl-terradraw 0.4.4 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  var ne = Object.defineProperty;
2
2
  var ae = (n, t, e) => t in n ? ne(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
- var L = (n, t, e) => ae(n, typeof t != "symbol" ? t + "" : t, e);
3
+ var B = (n, t, e) => ae(n, typeof t != "symbol" ? t + "" : t, e);
4
4
  function v() {
5
5
  return v = Object.assign ? Object.assign.bind() : function(n) {
6
6
  for (var t = 1; t < arguments.length; t++) {
@@ -343,8 +343,8 @@ function Ft(n) {
343
343
  });
344
344
  });
345
345
  }
346
- var kt, Ot, jt, M;
347
- Ft(It), Ft(Dt), kt = It, Ot = function(n, t, e) {
346
+ var Ot, kt, jt, M;
347
+ Ft(It), Ft(Dt), Ot = It, kt = function(n, t, e) {
348
348
  const i = n.length;
349
349
  e = e > 1 ? e : 2, t === void 0 && (t = e > 2 ? n.slice() : new Array(i));
350
350
  for (let o = 0; o < i; o += e) {
@@ -359,8 +359,8 @@ Ft(It), Ft(Dt), kt = It, Ot = function(n, t, e) {
359
359
  for (let o = 0; o < i; o += e) t[o] = 180 * n[o] / H, t[o + 1] = 360 * Math.atan(Math.exp(n[o + 1] / et)) / Math.PI - 90;
360
360
  return t;
361
361
  }, Dt.forEach(function(n) {
362
- kt.forEach(function(t) {
363
- dt(n, t, Ot), dt(t, n, jt);
362
+ Ot.forEach(function(t) {
363
+ dt(n, t, kt), dt(t, n, jt);
364
364
  });
365
365
  });
366
366
  (function(n) {
@@ -380,7 +380,7 @@ var A;
380
380
  (function(n) {
381
381
  n.Drawing = "drawing", n.Select = "select", n.Static = "static", n.Render = "render";
382
382
  })(A || (A = {}));
383
- class O {
383
+ class k {
384
384
  get state() {
385
385
  return this._state;
386
386
  }
@@ -464,7 +464,7 @@ class O {
464
464
  return t === void 0 ? e : typeof t == "function" ? t(i) : t;
465
465
  }
466
466
  }
467
- class ye extends O {
467
+ class ye extends k {
468
468
  constructor(...t) {
469
469
  super(...t), this.type = A.Select;
470
470
  }
@@ -483,7 +483,7 @@ function $t(n) {
483
483
  function J(n) {
484
484
  return n % (2 * Math.PI) * 180 / Math.PI;
485
485
  }
486
- const Lt = 57.29577951308232, Nt = 0.017453292519943295, ct = 6378137, x = (n, t) => ({ x: n === 0 ? 0 : n * Nt * ct, y: t === 0 ? 0 : Math.log(Math.tan(Math.PI / 4 + t * Nt / 2)) * ct }), k = (n, t) => ({ lng: n === 0 ? 0 : Lt * (n / ct), lat: t === 0 ? 0 : (2 * Math.atan(Math.exp(t / ct)) - Math.PI / 2) * Lt });
486
+ const Lt = 57.29577951308232, Nt = 0.017453292519943295, ct = 6378137, x = (n, t) => ({ x: n === 0 ? 0 : n * Nt * ct, y: t === 0 ? 0 : Math.log(Math.tan(Math.PI / 4 + t * Nt / 2)) * ct }), O = (n, t) => ({ lng: n === 0 ? 0 : Lt * (n / ct), lat: t === 0 ? 0 : (2 * Math.atan(Math.exp(t / ct)) - Math.PI / 2) * Lt });
487
487
  function me(n, t, e) {
488
488
  const i = D(n[0]), o = D(n[1]), s = D(e), r = $t(t), a = Math.asin(Math.sin(o) * Math.cos(r) + Math.cos(o) * Math.sin(r) * Math.cos(s));
489
489
  return [J(i + Math.atan2(Math.sin(s) * Math.sin(r) * Math.cos(o), Math.cos(r) - Math.sin(o) * Math.sin(a))), J(a)];
@@ -513,8 +513,8 @@ function St(n) {
513
513
  function s(r, a, l, h) {
514
514
  const d = e[r][a], c = e[r][a + 1], u = e[l][h], g = e[l][h + 1], p = function(m, C, P, b) {
515
515
  if (rt(m, P) || rt(m, b) || rt(C, P) || rt(b, P)) return null;
516
- const w = m[0], S = m[1], I = C[0], W = C[1], R = P[0], T = P[1], B = b[0], ot = b[1], mt = (w - I) * (T - ot) - (S - W) * (R - B);
517
- return mt === 0 ? null : [((w * W - S * I) * (R - B) - (w - I) * (R * ot - T * B)) / mt, ((w * W - S * I) * (T - ot) - (S - W) * (R * ot - T * B)) / mt];
516
+ const w = m[0], S = m[1], I = C[0], W = C[1], R = P[0], T = P[1], L = b[0], ot = b[1], mt = (w - I) * (T - ot) - (S - W) * (R - L);
517
+ return mt === 0 ? null : [((w * W - S * I) * (R - L) - (w - I) * (R * ot - T * L)) / mt, ((w * W - S * I) * (T - ot) - (S - W) * (R * ot - T * L)) / mt];
518
518
  }(d, c, u, g);
519
519
  if (p === null) return;
520
520
  let y, f;
@@ -540,7 +540,7 @@ function U(n, t) {
540
540
  function Jt(n, t) {
541
541
  return U(n, t) && !St(n);
542
542
  }
543
- class fe extends O {
543
+ class fe extends k {
544
544
  constructor(t) {
545
545
  var e;
546
546
  super(t), this.mode = "circle", this.center = void 0, this.clickCount = 0, this.currentCircleId = void 0, this.keyEvents = void 0, this.cursors = void 0, this.startingRadiusKilometers = 1e-5;
@@ -617,7 +617,7 @@ class fe extends O {
617
617
  i = function(s) {
618
618
  const { center: r, radiusKilometers: a, coordinatePrecision: l } = s, h = s.steps ? s.steps : 64, d = 1e3 * a, [c, u] = r, { x: g, y: p } = x(c, u), y = [];
619
619
  for (let f = 0; f < h; f++) {
620
- const m = 360 * f / h * Math.PI / 180, C = d * Math.cos(m), P = d * Math.sin(m), [b, w] = [g + C, p + P], { lng: S, lat: I } = k(b, w);
620
+ const m = 360 * f / h * Math.PI / 180, C = d * Math.cos(m), P = d * Math.sin(m), [b, w] = [g + C, p + P], { lng: S, lat: I } = O(b, w);
621
621
  y.push([E(S, l), E(I, l)]);
622
622
  }
623
623
  return y.push(y[0]), { type: "Feature", geometry: { type: "Polygon", coordinates: [y] }, properties: {} };
@@ -631,7 +631,7 @@ class fe extends O {
631
631
  }
632
632
  }
633
633
  }
634
- class Ce extends O {
634
+ class Ce extends k {
635
635
  constructor(t) {
636
636
  super(t), this.mode = "freehand", this.startingClick = !1, this.currentId = void 0, this.closingPointId = void 0, this.minDistance = void 0, this.keyEvents = void 0, this.cursors = void 0, this.preventPointsNearClose = void 0;
637
637
  const e = { start: "crosshair", close: "pointer" };
@@ -833,7 +833,7 @@ class Pe extends F {
833
833
  function $(n, t) {
834
834
  return n[0] === t[0] && n[1] === t[1];
835
835
  }
836
- class xe extends O {
836
+ class xe extends k {
837
837
  constructor(t) {
838
838
  super(t), this.mode = "linestring", this.currentCoordinate = 0, this.currentId = void 0, this.closingPointId = void 0, this.keyEvents = void 0, this.snappingEnabled = void 0, this.cursors = void 0, this.mouseMove = !1, this.insertCoordinates = void 0, this.lastCommitedCoordinates = void 0, this.snapping = void 0, this.insertPoint = void 0;
839
839
  const e = { start: "crosshair", close: "pointer" };
@@ -947,7 +947,7 @@ class xe extends O {
947
947
  function Qt(n, t) {
948
948
  return n.geometry.type === "Point" && yt(n.geometry.coordinates, t);
949
949
  }
950
- class Me extends O {
950
+ class Me extends k {
951
951
  constructor(t) {
952
952
  super(t), this.mode = "point", this.cursors = void 0;
953
953
  const e = { create: "crosshair" };
@@ -1014,7 +1014,7 @@ class Se extends F {
1014
1014
  return { isClosing: o < this.pointerDistance, isPreviousClosing: s < this.pointerDistance };
1015
1015
  }
1016
1016
  }
1017
- class be extends O {
1017
+ class be extends k {
1018
1018
  constructor(t) {
1019
1019
  super(t), this.mode = "polygon", this.currentCoordinate = 0, this.currentId = void 0, this.keyEvents = void 0, this.snappingEnabled = void 0, this.snapping = void 0, this.pixelDistance = void 0, this.closingPoints = void 0, this.cursors = void 0, this.mouseMove = !1;
1020
1020
  const e = { start: "crosshair", close: "pointer" };
@@ -1123,7 +1123,7 @@ class be extends O {
1123
1123
  return !!super.validateFeature(t) && t.properties.mode === this.mode && U(t, this.coordinatePrecision);
1124
1124
  }
1125
1125
  }
1126
- class we extends O {
1126
+ class we extends k {
1127
1127
  constructor(t) {
1128
1128
  super(t), this.mode = "rectangle", this.center = void 0, this.clickCount = 0, this.currentRectangleId = void 0, this.keyEvents = void 0, this.cursors = void 0;
1129
1129
  const e = { start: "crosshair" };
@@ -1183,7 +1183,7 @@ class we extends O {
1183
1183
  return !!super.validateFeature(t) && t.properties.mode === this.mode && Jt(t, this.coordinatePrecision);
1184
1184
  }
1185
1185
  }
1186
- class ht extends O {
1186
+ class ht extends k {
1187
1187
  constructor(t) {
1188
1188
  super({ styles: t.styles }), this.type = A.Render, this.mode = "render", this.mode = t.modeName;
1189
1189
  }
@@ -1390,7 +1390,7 @@ class Fe extends F {
1390
1390
  } else i.type === "Point" && (this.store.updateGeometry([{ id: this.draggedFeatureId, geometry: { type: "Point", coordinates: o } }]), this.dragPosition = [t.lng, t.lat]);
1391
1391
  }
1392
1392
  }
1393
- class ke extends F {
1393
+ class Oe extends F {
1394
1394
  constructor(t, e, i, o) {
1395
1395
  super(t), this.config = void 0, this.pixelDistance = void 0, this.selectionPoints = void 0, this.midPoints = void 0, this.draggedCoordinate = { id: null, index: -1 }, this.config = t, this.pixelDistance = e, this.selectionPoints = i, this.midPoints = o;
1396
1396
  }
@@ -1474,7 +1474,7 @@ function pt(n) {
1474
1474
  return { x: o / i, y: s / i };
1475
1475
  }(t);
1476
1476
  }
1477
- class Oe extends F {
1477
+ class ke extends F {
1478
1478
  constructor(t, e, i) {
1479
1479
  super(t), this.config = void 0, this.selectionPoints = void 0, this.midPoints = void 0, this.lastBearing = void 0, this.config = t, this.selectionPoints = e, this.midPoints = i;
1480
1480
  }
@@ -1493,7 +1493,7 @@ class Oe extends F {
1493
1493
  if (u === 0 || u === 360 || u === -360) return c;
1494
1494
  const g = 0.017453292519943295 * u, p = (c.geometry.type === "Polygon" ? c.geometry.coordinates[0] : c.geometry.coordinates).map(([m, C]) => x(m, C)), y = p.reduce((m, C) => ({ x: m.x + C.x, y: m.y + C.y }), { x: 0, y: 0 });
1495
1495
  y.x /= p.length, y.y /= p.length;
1496
- const f = p.map((m) => ({ x: y.x + (m.x - y.x) * Math.cos(g) - (m.y - y.y) * Math.sin(g), y: y.y + (m.x - y.x) * Math.sin(g) + (m.y - y.y) * Math.cos(g) })).map(({ x: m, y: C }) => [k(m, C).lng, k(m, C).lat]);
1496
+ const f = p.map((m) => ({ x: y.x + (m.x - y.x) * Math.cos(g) - (m.y - y.y) * Math.sin(g), y: y.y + (m.x - y.x) * Math.sin(g) + (m.y - y.y) * Math.cos(g) })).map(({ x: m, y: C }) => [O(m, C).lng, O(m, C).lat]);
1497
1497
  c.geometry.type === "Polygon" ? c.geometry.coordinates[0] = f : c.geometry.coordinates = f;
1498
1498
  })(a, -(this.lastBearing - r));
1499
1499
  } else {
@@ -1540,10 +1540,10 @@ class je extends F {
1540
1540
  if (!this.lastDistance) return void (this.lastDistance = a);
1541
1541
  const h = 1 - (this.lastDistance - a) / a;
1542
1542
  if (this.config.projection === "web-mercator") {
1543
- const { lng: g, lat: p } = k(l.x, l.y);
1543
+ const { lng: g, lat: p } = O(l.x, l.y);
1544
1544
  (function(y, f, m) {
1545
1545
  if (f === 1) return y;
1546
- const C = (y.geometry.type === "Polygon" ? y.geometry.coordinates[0] : y.geometry.coordinates).map(([w, S]) => x(w, S)), P = x(m[0], m[1]), b = C.map((w) => ({ x: P.x + (w.x - P.x) * f, y: P.y + (w.y - P.y) * f })).map(({ x: w, y: S }) => [k(w, S).lng, k(w, S).lat]);
1546
+ const C = (y.geometry.type === "Polygon" ? y.geometry.coordinates[0] : y.geometry.coordinates).map(([w, S]) => x(w, S)), P = x(m[0], m[1]), b = C.map((w) => ({ x: P.x + (w.x - P.x) * f, y: P.y + (w.y - P.y) * f })).map(({ x: w, y: S }) => [O(w, S).lng, O(w, S).lat]);
1547
1547
  y.geometry.type === "Polygon" ? y.geometry.coordinates[0] = b : y.geometry.coordinates = b;
1548
1548
  })(r, h, [g, p]);
1549
1549
  } else this.config.projection === "globe" && function(g, p, y, f = "xy") {
@@ -1672,7 +1672,7 @@ class We extends F {
1672
1672
  }
1673
1673
  performWebMercatorScale(t, e, i, o, s) {
1674
1674
  t.forEach((r) => {
1675
- const { x: a, y: l } = x(r[0], r[1]), h = e + (a - e) * o, d = i + (l - i) * s, { lng: c, lat: u } = k(h, d);
1675
+ const { x: a, y: l } = x(r[0], r[1]), h = e + (a - e) * o, d = i + (l - i) * s, { lng: c, lat: u } = O(h, d);
1676
1676
  r[0] = c, r[1] = u;
1677
1677
  });
1678
1678
  }
@@ -1746,7 +1746,7 @@ class Be extends ye {
1746
1746
  this._state = "selecting";
1747
1747
  }
1748
1748
  registerBehaviors(t) {
1749
- this.pixelDistance = new wt(t), this.clickBoundingBox = new bt(t), this.featuresAtMouseEvent = new De(t, this.clickBoundingBox, this.pixelDistance), this.selectionPoints = new _e(t), this.midPoints = new Ie(t, this.selectionPoints), this.rotateFeature = new Oe(t, this.selectionPoints, this.midPoints), this.scaleFeature = new je(t, this.selectionPoints, this.midPoints), this.dragFeature = new Fe(t, this.featuresAtMouseEvent, this.selectionPoints, this.midPoints), this.dragCoordinate = new ke(t, this.pixelDistance, this.selectionPoints, this.midPoints), this.dragCoordinateResizeFeature = new We(t, this.pixelDistance, this.selectionPoints, this.midPoints);
1749
+ this.pixelDistance = new wt(t), this.clickBoundingBox = new bt(t), this.featuresAtMouseEvent = new De(t, this.clickBoundingBox, this.pixelDistance), this.selectionPoints = new _e(t), this.midPoints = new Ie(t, this.selectionPoints), this.rotateFeature = new ke(t, this.selectionPoints, this.midPoints), this.scaleFeature = new je(t, this.selectionPoints, this.midPoints), this.dragFeature = new Fe(t, this.featuresAtMouseEvent, this.selectionPoints, this.midPoints), this.dragCoordinate = new Oe(t, this.pixelDistance, this.selectionPoints, this.midPoints), this.dragCoordinateResizeFeature = new We(t, this.pixelDistance, this.selectionPoints, this.midPoints);
1750
1750
  }
1751
1751
  deselectFeature() {
1752
1752
  this.deselect();
@@ -1884,7 +1884,7 @@ class Be extends ye {
1884
1884
  return e;
1885
1885
  }
1886
1886
  }
1887
- class Le extends O {
1887
+ class Le extends k {
1888
1888
  constructor(...t) {
1889
1889
  super(...t), this.type = A.Static, this.mode = "static";
1890
1890
  }
@@ -2289,7 +2289,7 @@ function Kt(n, t, e) {
2289
2289
  let o = j(t, e) - i;
2290
2290
  return o < 0 && (o += 360), 180 - Math.abs(o - 90 - 90);
2291
2291
  }
2292
- class Ke extends O {
2292
+ class Ke extends k {
2293
2293
  constructor(t) {
2294
2294
  super(t), this.mode = "angled-rectangle", this.currentCoordinate = 0, this.currentId = void 0, this.keyEvents = void 0, this.cursors = void 0, this.mouseMove = !1;
2295
2295
  const e = { start: "crosshair", close: "pointer" };
@@ -2321,7 +2321,7 @@ class Ke extends O {
2321
2321
  const o = e[0], s = e[1], r = te(o, s, this.coordinatePrecision, this.project, this.unproject), a = x(o[0], o[1]), l = x(r[0], r[1]), h = x(s[0], s[1]), d = x(t.lng, t.lat), c = _(d, a) < _(d, h), u = Kt(a, l, d), g = c ? 90 - u : Kt(a, l, d) - 90, p = _(l, d), y = Math.cos(D(g)) * p, f = j(a, h) + (function(w, S, I) {
2322
2322
  const W = (I.x - S.x) * (w.y - S.y) - (I.y - S.y) * (w.x - S.x);
2323
2323
  return W > 1e-10 ? "left" : W < -1e-10 ? "right" : "left";
2324
- }(a, h, d) === "right" ? -90 : 90), m = it(a, y, f), C = it(h, y, f), P = k(m.x, m.y), b = k(C.x, C.y);
2324
+ }(a, h, d) === "right" ? -90 : 90), m = it(a, y, f), C = it(h, y, f), P = O(m.x, m.y), b = O(C.x, C.y);
2325
2325
  i = [e[0], e[1], [b.lng, b.lat], [P.lng, P.lat], e[0]];
2326
2326
  }
2327
2327
  i && this.updatePolygonGeometry(this.currentId, i, M.Provisional);
@@ -2369,7 +2369,7 @@ class Ke extends O {
2369
2369
  function re(n, t, e) {
2370
2370
  return (t.x - n.x) * (e.y - n.y) - (t.y - n.y) * (e.x - n.x) <= 0;
2371
2371
  }
2372
- class ze extends O {
2372
+ class ze extends k {
2373
2373
  constructor(t) {
2374
2374
  super(t), this.mode = "sector", this.currentCoordinate = 0, this.currentId = void 0, this.keyEvents = void 0, this.direction = void 0, this.arcPoints = void 0, this.cursors = void 0, this.mouseMove = !1;
2375
2375
  const e = { start: "crosshair", close: "pointer" };
@@ -2410,7 +2410,7 @@ class ze extends O {
2410
2410
  const C = (this.direction === "anticlockwise" ? 1 : -1) * m / g;
2411
2411
  p.push(s);
2412
2412
  for (let P = 0; P <= g; P++) {
2413
- const b = it(a, d, y + P * C), { lng: w, lat: S } = k(b.x, b.y), I = [E(w, this.coordinatePrecision), E(S, this.coordinatePrecision)];
2413
+ const b = it(a, d, y + P * C), { lng: w, lat: S } = O(b.x, b.y), I = [E(w, this.coordinatePrecision), E(S, this.coordinatePrecision)];
2414
2414
  I[0] !== p[p.length - 1][0] && I[1] !== p[p.length - 1][1] && p.push(I);
2415
2415
  }
2416
2416
  p.push(o), i = [...p];
@@ -2457,7 +2457,7 @@ class ze extends O {
2457
2457
  return !!super.validateFeature(t) && t.properties.mode === this.mode && U(t, this.coordinatePrecision);
2458
2458
  }
2459
2459
  }
2460
- class Ye extends O {
2460
+ class Ye extends k {
2461
2461
  constructor(t) {
2462
2462
  super(t), this.mode = "sensor", this.currentCoordinate = 0, this.currentId = void 0, this.currentInitialArcId = void 0, this.currentStartingPointId = void 0, this.keyEvents = void 0, this.direction = void 0, this.arcPoints = void 0, this.cursors = void 0, this.mouseMove = !1;
2463
2463
  const e = { start: "crosshair", close: "pointer" };
@@ -2492,7 +2492,7 @@ class Ye extends O {
2492
2492
  this.direction === "anticlockwise" ? (f = y - p, f < 0 && (f += 360)) : (f = p - y, f < 0 && (f += 360));
2493
2493
  const m = (this.direction === "anticlockwise" ? 1 : -1) * f / u;
2494
2494
  for (let C = 0; C <= u; C++) {
2495
- const P = it(l, h, p + C * m), { lng: b, lat: w } = k(P.x, P.y), S = [E(b, this.coordinatePrecision), E(w, this.coordinatePrecision)];
2495
+ const P = it(l, h, p + C * m), { lng: b, lat: w } = O(P.x, P.y), S = [E(b, this.coordinatePrecision), E(w, this.coordinatePrecision)];
2496
2496
  S[0] !== g[g.length - 1][0] && S[1] !== g[g.length - 1][1] && g.push(S);
2497
2497
  }
2498
2498
  this.updateLineStringGeometry(this.currentInitialArcId, g, M.Provisional);
@@ -2503,8 +2503,8 @@ class Ye extends O {
2503
2503
  if (this.notInSector({ normalizedCursor: m, normalizedStart: y, normalizedEnd: f, direction: this.direction })) return;
2504
2504
  const C = this.getDeltaBearing(this.direction, y, f), P = this.arcPoints, b = (this.direction === "anticlockwise" ? 1 : -1) * C / P, w = _(h, c), S = [];
2505
2505
  for (let I = 0; I <= P; I++) {
2506
- const W = it(h, w, y + I * b), { lng: R, lat: T } = k(W.x, W.y), B = [E(R, this.coordinatePrecision), E(T, this.coordinatePrecision)];
2507
- B[0] !== e[e.length - 1][0] && B[1] !== e[e.length - 1][1] && S.unshift(B);
2506
+ const W = it(h, w, y + I * b), { lng: R, lat: T } = O(W.x, W.y), L = [E(R, this.coordinatePrecision), E(T, this.coordinatePrecision)];
2507
+ L[0] !== e[e.length - 1][0] && L[1] !== e[e.length - 1][1] && S.unshift(L);
2508
2508
  }
2509
2509
  e.push(...S), e.push(e[0]), this.currentId ? this.updatePolygonGeometry(this.currentId, e, M.Provisional) : [this.currentId] = this.store.create([{ geometry: { type: "Polygon", coordinates: [e] }, properties: { mode: this.mode } }]);
2510
2510
  }
@@ -2883,18 +2883,28 @@ class Ze {
2883
2883
  * @param options Plugin control options
2884
2884
  */
2885
2885
  constructor(t) {
2886
- L(this, "controlContainer");
2887
- L(this, "map");
2888
- L(this, "modeButtons", {});
2889
- L(this, "isExpanded", !1);
2890
- L(this, "terradraw");
2891
- L(this, "options", $e);
2892
- L(this, "defaultMode", "render");
2886
+ B(this, "controlContainer");
2887
+ B(this, "map");
2888
+ B(this, "modeButtons", {});
2889
+ B(this, "isExpanded", !1);
2890
+ B(this, "terradraw");
2891
+ B(this, "options", $e);
2892
+ B(this, "events", {});
2893
+ B(this, "defaultMode", "render");
2893
2894
  this.modeButtons = {}, t && (this.options = Object.assign(this.options, t));
2894
2895
  }
2896
+ /**
2897
+ * Get the default control position
2898
+ * @returns default control position. Default is 'top-right'
2899
+ */
2895
2900
  getDefaultPosition() {
2896
2901
  return "top-right";
2897
2902
  }
2903
+ /**
2904
+ * add the plugin control to maplibre
2905
+ * @param map Maplibre Map object
2906
+ * @returns HTML Element
2907
+ */
2898
2908
  onAdd(t) {
2899
2909
  var o, s, r, a;
2900
2910
  if (this.options && this.options.modes && this.options.modes.length === 0)
@@ -2932,20 +2942,54 @@ class Ze {
2932
2942
  (h = this.controlContainer) == null || h.appendChild(l);
2933
2943
  }), this.controlContainer;
2934
2944
  }
2945
+ /**
2946
+ * Remove the plugin control from maplibre
2947
+ * @returns void
2948
+ */
2935
2949
  onRemove() {
2936
2950
  !this.controlContainer || !this.controlContainer.parentNode || !this.map || (this.deactivate(), this.modeButtons = {}, this.terradraw = void 0, this.map = void 0, this.controlContainer.parentNode.removeChild(this.controlContainer));
2937
2951
  }
2952
+ /**
2953
+ * Register an event for the plugin
2954
+ * @param event event type
2955
+ * @param callback
2956
+ */
2957
+ on(t, e) {
2958
+ this.events[t] ? this.events[t].push(e) : this.events[t] = [e];
2959
+ }
2960
+ /**
2961
+ * Unregister an event for the plugin
2962
+ * @param event event type
2963
+ * @param callback
2964
+ * @returns
2965
+ */
2966
+ off(t, e) {
2967
+ if (!this.events[t]) return;
2968
+ const i = this.events[t].findIndex((o) => o === e);
2969
+ i !== -1 && this.events[t].splice(i, 1);
2970
+ }
2971
+ /**
2972
+ * Dispatch an event. Pass the current snapshot of features and mode
2973
+ * @param event event type
2974
+ */
2975
+ dispatchEvent(t) {
2976
+ this.events[t] && this.events[t].forEach((e) => {
2977
+ var s, r;
2978
+ const i = (s = this.terradraw) == null ? void 0 : s.getSnapshot(), o = i == null ? void 0 : i.filter((a) => a.properties.selected === !0);
2979
+ e({ feature: o, mode: (r = this.terradraw) == null ? void 0 : r.getMode() });
2980
+ });
2981
+ }
2938
2982
  /**
2939
2983
  * Activate Terra Draw to start drawing
2940
2984
  */
2941
2985
  activate() {
2942
- this.terradraw && (this.terradraw.enabled || this.terradraw.start());
2986
+ this.terradraw && (this.terradraw.enabled || (this.terradraw.start(), this.dispatchEvent("mode-changed")));
2943
2987
  }
2944
2988
  /**
2945
2989
  * Deactivate Terra Draw to stop drawing
2946
2990
  */
2947
2991
  deactivate() {
2948
- this.terradraw && this.terradraw.enabled && (this.resetActiveMode(), this.terradraw.stop());
2992
+ this.terradraw && this.terradraw.enabled && (this.resetActiveMode(), this.dispatchEvent("mode-changed"), this.terradraw.stop());
2949
2993
  }
2950
2994
  /**
2951
2995
  * Get the Terra Draw instance.
@@ -2990,7 +3034,7 @@ class Ze {
2990
3034
  addTerradrawButton(t) {
2991
3035
  const e = document.createElement("button");
2992
3036
  e.type = "button", this.modeButtons[t] = e, t === "render" ? (e.classList.add(`maplibregl-terradraw-${t}-button`), this.isExpanded && e.classList.add("enabled"), e.type = "button", e.title = this.capitalize("expand or collapse drawing tool"), e.addEventListener("click", this.toggleEditor.bind(this))) : (e.classList.add("maplibregl-terradraw-add-control"), this.isExpanded || e.classList.add("hidden"), e.title = this.capitalize(t.replace(/-/g, " ")), t === "delete" ? (e.classList.add(`maplibregl-terradraw-${t}-button`), e.addEventListener("click", () => {
2993
- this.terradraw && this.terradraw.enabled && (this.terradraw.clear(), this.deactivate(), this.toggleDeleteSelectionButton());
3037
+ this.terradraw && this.terradraw.enabled && (this.terradraw.clear(), this.deactivate(), this.toggleDeleteSelectionButton(), this.dispatchEvent("feature-deleted"));
2994
3038
  })) : t === "delete-selection" ? (e.classList.add(`maplibregl-terradraw-${t}-button`), e.classList.add("hidden-delete-selection"), e.addEventListener("click", () => {
2995
3039
  var s;
2996
3040
  if (!this.terradraw || !this.terradraw.enabled) return;
@@ -2999,7 +3043,7 @@ class Ze {
2999
3043
  const r = this.terradraw.getMode();
3000
3044
  this.terradraw.setMode(this.defaultMode);
3001
3045
  const a = o.map((l) => l.id);
3002
- this.terradraw.removeFeatures(a), this.terradraw.setMode(r);
3046
+ this.terradraw.removeFeatures(a), this.terradraw.setMode(r), this.dispatchEvent("feature-deleted");
3003
3047
  }
3004
3048
  this.toggleDeleteSelectionButton();
3005
3049
  })) : (e.classList.add(`maplibregl-terradraw-add-${t}-button`), e.addEventListener("click", () => {
@@ -3008,6 +3052,9 @@ class Ze {
3008
3052
  this.activate(), this.resetActiveMode(), i || (this.terradraw.setMode(t), e.classList.add("active")), this.toggleDeleteSelectionButton();
3009
3053
  })));
3010
3054
  }
3055
+ /**
3056
+ * Toggle the state of delete-select button
3057
+ */
3011
3058
  toggleDeleteSelectionButton() {
3012
3059
  var s, r;
3013
3060
  const t = ((s = this.terradraw) == null ? void 0 : s.enabled) || !1, e = (r = this.terradraw) == null ? void 0 : r.getMode(), i = t && e === "select", o = document.getElementsByClassName("maplibregl-terradraw-delete-selection-button");
@@ -3016,6 +3063,11 @@ class Ze {
3016
3063
  l && (i ? l.classList.remove("hidden-delete-selection") : l.classList.add("hidden-delete-selection"));
3017
3064
  }
3018
3065
  }
3066
+ /**
3067
+ * Capitalzie string value
3068
+ * @param value string value
3069
+ * @returns string
3070
+ */
3019
3071
  capitalize(t) {
3020
3072
  return t.charAt(0).toUpperCase() + t.slice(1);
3021
3073
  }