@syncfusion/ej2-maps 27.2.2 → 28.1.38

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 (36) hide show
  1. package/.gitleaksignore +3 -3
  2. package/README.md +2 -2
  3. package/dist/ej2-maps.min.js +3 -3
  4. package/dist/ej2-maps.umd.min.js +3 -3
  5. package/dist/ej2-maps.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-maps.es2015.js +529 -223
  7. package/dist/es6/ej2-maps.es2015.js.map +1 -1
  8. package/dist/es6/ej2-maps.es5.js +539 -232
  9. package/dist/es6/ej2-maps.es5.js.map +1 -1
  10. package/dist/global/ej2-maps.min.js +3 -3
  11. package/dist/global/ej2-maps.min.js.map +1 -1
  12. package/dist/global/index.d.ts +2 -2
  13. package/package.json +13 -13
  14. package/src/maps/layers/layer-panel.js +1 -1
  15. package/src/maps/layers/legend.js +23 -21
  16. package/src/maps/layers/marker.d.ts +8 -1
  17. package/src/maps/layers/marker.js +104 -33
  18. package/src/maps/maps-model.d.ts +8 -1
  19. package/src/maps/maps.d.ts +19 -3
  20. package/src/maps/maps.js +54 -16
  21. package/src/maps/model/base-model.d.ts +20 -0
  22. package/src/maps/model/base.d.ts +17 -0
  23. package/src/maps/model/base.js +9 -0
  24. package/src/maps/model/constants.d.ts +6 -0
  25. package/src/maps/model/constants.js +6 -0
  26. package/src/maps/model/export-image.js +4 -4
  27. package/src/maps/model/export-pdf.js +4 -4
  28. package/src/maps/model/interface.d.ts +15 -0
  29. package/src/maps/model/print.js +2 -2
  30. package/src/maps/model/theme.js +72 -0
  31. package/src/maps/user-interaction/tooltip.js +3 -1
  32. package/src/maps/user-interaction/zoom.d.ts +17 -3
  33. package/src/maps/user-interaction/zoom.js +156 -105
  34. package/src/maps/utils/enum.d.ts +4 -0
  35. package/src/maps/utils/helper.d.ts +4 -9
  36. package/src/maps/utils/helper.js +102 -46
package/src/maps/maps.js CHANGED
@@ -29,7 +29,7 @@ import { getElement, removeClass, getTranslate, triggerItemSelectionEvent, merge
29
29
  import { createStyle, getProcessedMarginValue } from './utils/helper';
30
30
  import { ZoomSettings, LegendSettings } from './model/base';
31
31
  import { LayerSettings, TitleSettings, Border, Margin, MapsAreaSettings, Annotation, CenterPosition } from './model/base';
32
- import { load, click, onclick, rightClick, doubleClick, resize, shapeSelected, zoomIn } from './model/constants';
32
+ import { load, click, onclick, rightClick, doubleClick, resize, shapeSelected, zoomIn, mouseMove } from './model/constants';
33
33
  import { getThemeStyle, Theme } from './model/theme';
34
34
  import { LayerPanel } from './layers/layer-panel';
35
35
  import { Rect, RectOption, measureText, getElementByID, MapAjax, processResult, getElementsByClassName } from '../maps/utils/helper';
@@ -67,6 +67,8 @@ var Maps = /** @class */ (function (_super) {
67
67
  _this.isTileMap = false;
68
68
  /**
69
69
  * Resize the map
70
+ *
71
+ * @private
70
72
  */
71
73
  _this.isResize = false;
72
74
  /**
@@ -663,7 +665,7 @@ var Maps = /** @class */ (function (_super) {
663
665
  }
664
666
  }
665
667
  if (this.zoomModule && ((this.previousScale !== this.scale) || this.zoomNotApplied || this.isZoomByPosition)) {
666
- this.zoomModule.applyTransform(this, true);
668
+ this.zoomModule.applyTransform(this, false, true);
667
669
  }
668
670
  }
669
671
  };
@@ -725,14 +727,7 @@ var Maps = /** @class */ (function (_super) {
725
727
  -(Math.abs(elementOffset.top - layerOffset.top)) : Math.abs(elementOffset.top - layerOffset.top);
726
728
  }
727
729
  Array.prototype.forEach.call(templateGroupEle.childNodes, function (currentTemplate) {
728
- if (currentTemplate.id.indexOf('Marker') !== -1) {
729
- if (currentTemplate.style.visibility !== 'hidden') {
730
- var elementOffset_1 = getElementByID(currentTemplate.id).getBoundingClientRect();
731
- currentTemplate.style.left = parseFloat(currentTemplate.style.left) - (_this.isTileMap ? 0 : elementOffset_1.width / 2) + 'px';
732
- currentTemplate.style.top = parseFloat(currentTemplate.style.top) - (_this.isTileMap ? 0 : elementOffset_1.height / 2) + 'px';
733
- }
734
- }
735
- else {
730
+ if (currentTemplate.id.indexOf('Marker') === -1) {
736
731
  currentTemplate.style.left = parseFloat(currentTemplate.style.left) + offSetLetValue + 'px';
737
732
  currentTemplate.style.top = parseFloat(currentTemplate.style.top) + offSetTopValue + 'px';
738
733
  currentTemplate.style.transform = 'translate(-50%, -50%)';
@@ -1517,6 +1512,7 @@ var Maps = /** @class */ (function (_super) {
1517
1512
  // if (target.id.indexOf('shapeIndex') !== -1 && !this.highlightSettings.enable) {
1518
1513
  // triggerShapeEvent(target.id, this.highlightSettings, this, shapeHighlight);
1519
1514
  // }
1515
+ this.mouseMoveEvent(e);
1520
1516
  if (this.markerModule) {
1521
1517
  this.markerModule.markerMove(e);
1522
1518
  this.markerModule.markerClusterMouseMove(e);
@@ -1530,6 +1526,34 @@ var Maps = /** @class */ (function (_super) {
1530
1526
  this.onMouseMove(e);
1531
1527
  this.notify(Browser.touchMoveEvent, e);
1532
1528
  };
1529
+ /**
1530
+ * To check and trigger mouse move event on maps.
1531
+ *
1532
+ * @param {PointerEvent} e - Specifies the pointer event on maps.
1533
+ * @returns {void}
1534
+ * @private
1535
+ */
1536
+ Maps.prototype.mouseMoveEvent = function (e) {
1537
+ var targetId = e.target.id;
1538
+ var layerIndex;
1539
+ var eventArgs;
1540
+ if (this.isTileMap) {
1541
+ var latLongValue = this.getTileGeoLocation(e['layerX'], e['layerY']);
1542
+ eventArgs = {
1543
+ x: e.clientX, y: e.clientY, latitude: latLongValue.latitude,
1544
+ longitude: latLongValue.longitude, target: e.target
1545
+ };
1546
+ }
1547
+ else {
1548
+ layerIndex = targetId.indexOf('_LayerIndex_') > -1 ? parseInt(targetId.split('_LayerIndex_')[1].split('_')[0], 10) : this.baseLayerIndex;
1549
+ var latLongValue = this.getGeoLocation(layerIndex, e.clientX, e.clientY);
1550
+ eventArgs = {
1551
+ x: e.clientX, y: e.clientY, latitude: latLongValue.latitude,
1552
+ longitude: latLongValue.longitude, target: e.target
1553
+ };
1554
+ }
1555
+ this.trigger(mouseMove, eventArgs);
1556
+ };
1533
1557
  /**
1534
1558
  * This method is used to perform operations when mouse move event is performed on maps.
1535
1559
  *
@@ -1760,13 +1784,24 @@ var Maps = /** @class */ (function (_super) {
1760
1784
  */
1761
1785
  Maps.prototype.addMarker = function (layerIndex, markerCollection) {
1762
1786
  if (!this.isDestroyed && !isNullOrUndefined(this.markerModule)) {
1763
- var layerEle = document.getElementById(this.element.id + '_LayerIndex_' + layerIndex);
1764
- if (markerCollection.length > 0 && layerEle) {
1765
- for (var _i = 0, markerCollection_1 = markerCollection; _i < markerCollection_1.length; _i++) {
1766
- var newMarker = markerCollection_1[_i];
1767
- this.layersCollection[layerIndex].markerSettings.push(new MarkerSettings(this, 'markerSettings', newMarker));
1787
+ if (!isNullOrUndefined(layerIndex) && !isNullOrUndefined(markerCollection)) {
1788
+ var layerEle = document.getElementById(this.element.id + '_LayerIndex_' + layerIndex);
1789
+ if (markerCollection.length > 0 && layerEle) {
1790
+ for (var _i = 0, markerCollection_1 = markerCollection; _i < markerCollection_1.length; _i++) {
1791
+ var newMarker = markerCollection_1[_i];
1792
+ this.layersCollection[layerIndex].markerSettings.push(new MarkerSettings(this, 'markerSettings', newMarker));
1793
+ }
1794
+ this.markerModule.markerRender(this, layerEle, layerIndex, this.isTileMap ? this.tileZoomLevel : this.mapLayerPanel['currentFactor'], 'AddMarker');
1795
+ this.arrangeTemplate();
1796
+ }
1797
+ }
1798
+ else {
1799
+ for (var i = 0; i < this.layers.length; i++) {
1800
+ var layerEle = document.getElementById(this.element.id + '_LayerIndex_' + i);
1801
+ this.markerModule.zoomedMarkerCluster[i] = [];
1802
+ this.markerModule.initialMarkerCluster[i] = [];
1803
+ this.markerModule.markerRender(this, layerEle, i, this.isTileMap ? this.tileZoomLevel : this.mapLayerPanel['currentFactor'], null);
1768
1804
  }
1769
- this.markerModule.markerRender(this, layerEle, layerIndex, this.mapLayerPanel['currentFactor'], 'AddMarker');
1770
1805
  this.arrangeTemplate();
1771
1806
  }
1772
1807
  }
@@ -2761,6 +2796,9 @@ var Maps = /** @class */ (function (_super) {
2761
2796
  __decorate([
2762
2797
  Event()
2763
2798
  ], Maps.prototype, "markerMouseMove", void 0);
2799
+ __decorate([
2800
+ Event()
2801
+ ], Maps.prototype, "mouseMove", void 0);
2764
2802
  __decorate([
2765
2803
  Event()
2766
2804
  ], Maps.prototype, "dataLabelRendering", void 0);
@@ -1760,6 +1760,20 @@ export interface MarkerBaseModel {
1760
1760
  */
1761
1761
  fill?: string;
1762
1762
 
1763
+ /**
1764
+ * Gets or sets the field name from the data source that determines the marker height.
1765
+ *
1766
+ * @default null
1767
+ */
1768
+ heightValuePath?: string;
1769
+
1770
+ /**
1771
+ * Gets or sets the field name from the data source that determines the marker width.
1772
+ *
1773
+ * @default null
1774
+ */
1775
+ widthValuePath?: string;
1776
+
1763
1777
  /**
1764
1778
  * Gets or sets the height of the marker in maps.
1765
1779
  *
@@ -1900,6 +1914,12 @@ export interface MarkerBaseModel {
1900
1914
  */
1901
1915
  initialMarkerSelection?: InitialMarkerSelectionSettingsModel[];
1902
1916
 
1917
+ /**
1918
+ * Gets or sets the options for customizing the clustering of markers on the map.
1919
+ * This property is used to cluster markers based on the current marker settings, and it is applied only when the `allowClustering` property is enabled.
1920
+ */
1921
+ clusterSettings?: MarkerClusterSettingsModel;
1922
+
1903
1923
  }
1904
1924
 
1905
1925
  /**
@@ -1518,6 +1518,18 @@ export declare class MarkerBase extends ChildProperty<MarkerBase> {
1518
1518
  * @default '#FF471A'
1519
1519
  */
1520
1520
  fill: string;
1521
+ /**
1522
+ * Gets or sets the field name from the data source that determines the marker height.
1523
+ *
1524
+ * @default null
1525
+ */
1526
+ heightValuePath: string;
1527
+ /**
1528
+ * Gets or sets the field name from the data source that determines the marker width.
1529
+ *
1530
+ * @default null
1531
+ */
1532
+ widthValuePath: string;
1521
1533
  /**
1522
1534
  * Gets or sets the height of the marker in maps.
1523
1535
  *
@@ -1637,6 +1649,11 @@ export declare class MarkerBase extends ChildProperty<MarkerBase> {
1637
1649
  * The initial selection of markers will be performed only when the selection functionality of marker is enabled.
1638
1650
  */
1639
1651
  initialMarkerSelection: InitialMarkerSelectionSettingsModel[];
1652
+ /**
1653
+ * Gets or sets the options for customizing the clustering of markers on the map.
1654
+ * This property is used to cluster markers based on the current marker settings, and it is applied only when the `allowClustering` property is enabled.
1655
+ */
1656
+ clusterSettings: MarkerClusterSettingsModel;
1640
1657
  }
1641
1658
  /**
1642
1659
  * Gets or sets the options to customize the markers in the maps.
@@ -1069,6 +1069,12 @@ var MarkerBase = /** @class */ (function (_super) {
1069
1069
  __decorate([
1070
1070
  Property('#FF471A')
1071
1071
  ], MarkerBase.prototype, "fill", void 0);
1072
+ __decorate([
1073
+ Property(null)
1074
+ ], MarkerBase.prototype, "heightValuePath", void 0);
1075
+ __decorate([
1076
+ Property(null)
1077
+ ], MarkerBase.prototype, "widthValuePath", void 0);
1072
1078
  __decorate([
1073
1079
  Property(10)
1074
1080
  ], MarkerBase.prototype, "height", void 0);
@@ -1132,6 +1138,9 @@ var MarkerBase = /** @class */ (function (_super) {
1132
1138
  __decorate([
1133
1139
  Collection([], InitialMarkerSelectionSettings)
1134
1140
  ], MarkerBase.prototype, "initialMarkerSelection", void 0);
1141
+ __decorate([
1142
+ Complex({}, MarkerClusterSettings)
1143
+ ], MarkerBase.prototype, "clusterSettings", void 0);
1135
1144
  return MarkerBase;
1136
1145
  }(ChildProperty));
1137
1146
  export { MarkerBase };
@@ -130,6 +130,12 @@ export declare const markerClusterClick: string;
130
130
  * @private
131
131
  */
132
132
  export declare const markerMouseMove: string;
133
+ /**
134
+ * Specifies the maps mouse move event name.
135
+ *
136
+ * @private
137
+ */
138
+ export declare const mouseMove: string;
133
139
  /**
134
140
  * Specifies the maps cluster mouse move event name.
135
141
  *
@@ -130,6 +130,12 @@ export var markerClusterClick = 'markerClusterClick';
130
130
  * @private
131
131
  */
132
132
  export var markerMouseMove = 'markerMouseMove';
133
+ /**
134
+ * Specifies the maps mouse move event name.
135
+ *
136
+ * @private
137
+ */
138
+ export var mouseMove = 'mouseMove';
133
139
  /**
134
140
  * Specifies the maps cluster mouse move event name.
135
141
  *
@@ -41,11 +41,11 @@ var ImageExport = /** @class */ (function () {
41
41
  var svgObject = getElementByID(maps.element.id + '_svg').cloneNode(true);
42
42
  var backgroundElement = svgObject.childNodes[0];
43
43
  var backgroundColor = backgroundElement.getAttribute('fill');
44
- if ((maps.theme === 'Tailwind' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' || maps.theme === 'Fluent2')
44
+ if ((maps.theme === 'Tailwind' || maps.theme === 'Tailwind3' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' || maps.theme === 'Fluent2')
45
45
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
46
46
  svgObject.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');
47
47
  }
48
- else if ((maps.theme === 'TailwindDark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
48
+ else if ((maps.theme === 'TailwindDark' || maps.theme === 'Tailwind3Dark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
49
49
  maps.theme === 'Fluent2Dark' || maps.theme === 'Fluent2HighContrast')
50
50
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
51
51
  svgObject.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -101,8 +101,8 @@ var ImageExport = /** @class */ (function () {
101
101
  var tile = document.getElementById(maps.element.id + '_tile_' + (i - 1));
102
102
  var exportTileImg = new Image();
103
103
  exportTileImg.crossOrigin = 'Anonymous';
104
- var background = maps.background ? maps.background : ((maps.theme === 'Tailwind' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) ? '#ffffff' :
105
- (maps.theme === 'TailwindDark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent') ? '#000000' : '#ffffff';
104
+ var background = maps.background ? maps.background : ((maps.theme === 'Tailwind' || maps.theme === 'Tailwind3' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) ? '#ffffff' :
105
+ (maps.theme === 'TailwindDark' || maps.theme === 'Tailwind3Dark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent') ? '#000000' : '#ffffff';
106
106
  ctxt_1.fillStyle = background;
107
107
  ctxt_1.fillRect(0, 0, maps.availableSize.width, maps.availableSize.height);
108
108
  ctxt_1.font = maps.titleSettings.textStyle.size + ' Arial';
@@ -43,12 +43,12 @@ var PdfExport = /** @class */ (function () {
43
43
  var exportElement = maps.svgObject.cloneNode(true);
44
44
  var backgroundElement = exportElement.childNodes[0];
45
45
  var backgroundColor = backgroundElement.getAttribute('fill');
46
- if ((maps.theme === 'Tailwind' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' ||
46
+ if ((maps.theme === 'Tailwind' || maps.theme === 'Tailwind3' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' ||
47
47
  maps.theme === 'Fluent2')
48
48
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
49
49
  exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');
50
50
  }
51
- else if ((maps.theme === 'TailwindDark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
51
+ else if ((maps.theme === 'TailwindDark' || maps.theme === 'Tailwind3Dark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
52
52
  maps.theme === 'Fluent2Dark' || maps.theme === 'Fluent2HighContrast')
53
53
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
54
54
  exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -88,8 +88,8 @@ var PdfExport = /** @class */ (function () {
88
88
  var tile = document.getElementById(maps.element.id + '_tile_' + (i - 1));
89
89
  var tileImg = new Image();
90
90
  tileImg.crossOrigin = 'Anonymous';
91
- var background = maps.background ? maps.background : ((maps.theme === 'Tailwind' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) ? '#ffffff' :
92
- (maps.theme === 'TailwindDark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent') ? '#000000' : '#ffffff';
91
+ var background = maps.background ? maps.background : ((maps.theme === 'Tailwind' || maps.theme === 'Tailwind3' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) ? '#ffffff' :
92
+ (maps.theme === 'TailwindDark' || maps.theme === 'Tailwind3Dark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent') ? '#000000' : '#ffffff';
93
93
  ctx.fillStyle = background;
94
94
  ctx.fillRect(0, 0, maps.availableSize.width, maps.availableSize.height);
95
95
  ctx.font = maps.titleSettings.textStyle.size + ' Arial';
@@ -104,6 +104,21 @@ export interface IMouseEventArgs extends IMapsEventArgs {
104
104
  /** Specifies whether the shape is selected or not in the maps. */
105
105
  isShapeSelected?: boolean;
106
106
  }
107
+ /**
108
+ * Specifies the event arguments for mouseMove event in the Maps.
109
+ */
110
+ export interface IMouseMoveEventArgs {
111
+ /** Gets the current horizontal position value of the location over which the mouse pointer is moved. */
112
+ x: number;
113
+ /** Gets the current vertical position value of the location over which the mouse pointer is moved. */
114
+ y: number;
115
+ /** Gets the current latitude value of the location over which the mouse pointer is moved. */
116
+ latitude?: number;
117
+ /** Gets the current longitude value of the location over which the mouse pointer is moved. */
118
+ longitude?: number;
119
+ /** Gets the current target element over which the mouse is positioned on the Maps. */
120
+ target?: Element;
121
+ }
107
122
  /**
108
123
  * Specifies the location using geographical coordinates in maps.
109
124
  */
@@ -54,12 +54,12 @@ var Print = /** @class */ (function () {
54
54
  backgroundElement = backgroundElement.childNodes[0];
55
55
  if (!isNullOrUndefined(backgroundElement)) {
56
56
  var backgroundColor = backgroundElement.getAttribute('fill');
57
- if ((maps.theme === 'Tailwind' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' ||
57
+ if ((maps.theme === 'Tailwind' || maps.theme === 'Tailwind3' || maps.theme === 'Bootstrap5' || maps.theme === 'Fluent' || maps.theme === 'Material3' ||
58
58
  maps.theme === 'Fluent2')
59
59
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
60
60
  backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');
61
61
  }
62
- else if ((maps.theme === 'TailwindDark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
62
+ else if ((maps.theme === 'TailwindDark' || maps.theme === 'Tailwind3Dark' || maps.theme === 'Bootstrap5Dark' || maps.theme === 'FluentDark' || maps.theme === 'Material3Dark' ||
63
63
  maps.theme === 'Fluent2Dark' || maps.theme === 'Fluent2HighContrast')
64
64
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
65
65
  backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -175,6 +175,12 @@ export function getShapeColor(theme) {
175
175
  themePalette = ['#10B981', '#22D3EE', '#2DD4BF', '#4ADE80', '#8B5CF6',
176
176
  '#E879F9', '#F472B6', '#F87171', '#F97316', '#FCD34D'];
177
177
  break;
178
+ case 'tailwind3':
179
+ themePalette = ['#2F4074', '#03B4B4', '#0D72DE', '#FF5733', '#D63384', '#F39C12', '#EF291F', '#91C822'];
180
+ break;
181
+ case 'tailwind3dark':
182
+ themePalette = ['#8029F1', '#1ABC9C', '#0D72DE', '#FF5733', '#D63384', '#F39C12', '#EF291F', '#91C822'];
183
+ break;
178
184
  case 'fluent':
179
185
  themePalette = ['#614570', '#4C6FB1', '#CC6952', '#3F579A', '#4EA09B',
180
186
  '#6E7A89', '#D4515C', '#E6AF5D', '#639751', '#9D4D69'];
@@ -499,6 +505,72 @@ export function getThemeStyle(theme) {
499
505
  zoomButtonRadius: 30
500
506
  };
501
507
  break;
508
+ case 'tailwind3':
509
+ style = {
510
+ backgroundColor: 'rgba(255,255,255, 0.0)',
511
+ areaBackgroundColor: 'rgba(255,255,255, 0.0)',
512
+ titleFontColor: '#111827',
513
+ subTitleFontColor: '#111827',
514
+ legendTitleFontColor: '#111827',
515
+ legendTextColor: '#6B7280',
516
+ dataLabelFontColor: '#111827',
517
+ tooltipFontColor: '#F9FAFB',
518
+ tooltipFillColor: '#111827',
519
+ zoomFillColor: '#374151',
520
+ fontFamily: 'Inter',
521
+ fontSize: '12px',
522
+ fontWeight: '400',
523
+ titleFontSize: '14px',
524
+ legendFontSize: '12px',
525
+ tooltipFillOpacity: 1,
526
+ tooltipTextOpacity: 1,
527
+ labelFontFamily: 'Inter',
528
+ titleFontWeight: '500',
529
+ zoomSelectionColor: '#6B7280',
530
+ shapeFill: '#F3F4F6',
531
+ shapeBorderColor: '#E5E7EB',
532
+ rectangleZoomFillColor: '#818CF8',
533
+ rectangleZoomFillOpacity: 0.3,
534
+ rectangleZoomBorderColor: '#4F46E5',
535
+ legendBorderColor: '#E5E7EB',
536
+ legendBorderWidth: 0,
537
+ tooltipBorderColor: '#111827',
538
+ zoomButtonRadius: 32
539
+ };
540
+ break;
541
+ case 'tailwind3dark':
542
+ style = {
543
+ backgroundColor: 'rgba(255,255,255, 0.0)',
544
+ areaBackgroundColor: 'rgba(255,255,255, 0.0)',
545
+ titleFontColor: '#FFFFFF',
546
+ subTitleFontColor: '#FFFFFF',
547
+ legendTitleFontColor: '#FFFFFF',
548
+ legendTextColor: '#9CA3AF',
549
+ dataLabelFontColor: '#FFFFFF',
550
+ tooltipFontColor: '#1F2937',
551
+ tooltipFillColor: '#F9FAFB',
552
+ zoomFillColor: '#D1D5DB',
553
+ fontFamily: 'Inter',
554
+ fontSize: '12px',
555
+ fontWeight: '400',
556
+ titleFontSize: '14px',
557
+ legendFontSize: '12px',
558
+ tooltipFillOpacity: 1,
559
+ tooltipTextOpacity: 1,
560
+ labelFontFamily: 'Inter',
561
+ titleFontWeight: '600',
562
+ zoomSelectionColor: '#9CA3AF',
563
+ shapeFill: '#282F3C',
564
+ shapeBorderColor: '#282F3C',
565
+ rectangleZoomFillColor: '#3730A3',
566
+ rectangleZoomFillOpacity: 0.3,
567
+ rectangleZoomBorderColor: '#6366F1',
568
+ legendBorderColor: '#282F3C',
569
+ legendBorderWidth: 0,
570
+ tooltipBorderColor: '#F9FAFB',
571
+ zoomButtonRadius: 30
572
+ };
573
+ break;
502
574
  case 'bootstrap5':
503
575
  style = {
504
576
  backgroundColor: 'transparent',
@@ -1,7 +1,7 @@
1
1
  import { tooltipRender } from '../index';
2
2
  import { Tooltip } from '@syncfusion/ej2-svg-base';
3
3
  import { createElement, Browser, isNullOrUndefined, extend, remove } from '@syncfusion/ej2-base';
4
- import { getMousePosition, Internalize, checkPropertyPath, getValueFromObject, formatValue, convertStringToValue } from '../utils/helper';
4
+ import { getMousePosition, Internalize, checkPropertyPath, getValueFromObject, formatValue, convertStringToValue, removeElement } from '../utils/helper';
5
5
  /**
6
6
  * Map Tooltip
7
7
  */
@@ -495,6 +495,8 @@ var MapsTooltip = /** @class */ (function () {
495
495
  MapsTooltip.prototype.destroy = function () {
496
496
  if (!isNullOrUndefined(this.svgTooltip)) {
497
497
  this.svgTooltip.destroy();
498
+ this.svgTooltip.controlInstance = null;
499
+ removeElement(this.maps.element.id + '_mapsTooltip');
498
500
  }
499
501
  this.svgTooltip = null;
500
502
  this.maps = null;
@@ -84,10 +84,11 @@ export declare class Zoom {
84
84
  * @param {Point} position - Specifies the position.
85
85
  * @param {number} newZoomFactor - Specifies the zoom factor.
86
86
  * @param {string} type - Specifies the type.
87
+ * @param {boolean} isMouseWheel - Indicates whether the zoom operation was triggered by the mouse wheel.
87
88
  * @returns {void}
88
89
  * @private
89
90
  */
90
- performZooming(position: Point, newZoomFactor: number, type: string): void;
91
+ performZooming(position: Point, newZoomFactor: number, type: string, isMouseWheel?: boolean): void;
91
92
  private calculateInitalZoomTranslatePoint;
92
93
  private triggerZoomEvent;
93
94
  private getTileTranslatePosition;
@@ -124,12 +125,13 @@ export declare class Zoom {
124
125
  private animateTransform;
125
126
  /**
126
127
  * @param {Maps} maps - Specifies the Map control
128
+ * @param {boolean} isMouseWheel - Indicates whether the zoom operation was triggered by the mouse wheel.
127
129
  * @param {boolean} animate - Specifies the animation is available or not
128
130
  * @param {boolean} isPanning - Specifies that it is panning or not
129
131
  * @returns {void}
130
132
  * @private
131
133
  */
132
- applyTransform(maps: Maps, animate?: boolean, isPanning?: boolean): void;
134
+ applyTransform(maps: Maps, isMouseWheel?: boolean, animate?: boolean, isPanning?: boolean): void;
133
135
  private markerTranslates;
134
136
  /**
135
137
  * To translate the layer template elements.
@@ -143,7 +145,19 @@ export declare class Zoom {
143
145
  */
144
146
  processTemplate(x: number, y: number, scale: number, maps: Maps): void;
145
147
  private dataLabelTranslate;
146
- private markerTranslate;
148
+ /**
149
+ *
150
+ * @param {Element | HTMLElement} element - Specifies the marker element.
151
+ * @param {number} factor - Specifies scale factor.
152
+ * @param {number} x - Specifies the x location of the marker element.
153
+ * @param {number} y - Specifies the y location of the marker element.
154
+ * @param {number} scale - Specifies scale factor.
155
+ * @param {number} type - Specifies the type of the marker processing.
156
+ * @param {number} animate - Specifies whether the animation is enabled or not.
157
+ * @returns {void}
158
+ * @private
159
+ */
160
+ markerTranslate(element: Element | HTMLElement, factor: number, x: number, y: number, scale: number, type: string, animate?: boolean): void;
147
161
  private markerLineAnimation;
148
162
  /**
149
163
  * @param {PanDirection} direction - Specifies the direction of the panning.