raain-ui 2.3.22 → 2.3.24

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.
@@ -5,7 +5,7 @@ const leaflet_1 = require("leaflet");
5
5
  const tools_1 = require("../tools");
6
6
  const layers_1 = require("../layers");
7
7
  class MapElementInput {
8
- constructor(timeframeContainers, markers) {
8
+ constructor(timeframeContainers, markers = []) {
9
9
  this.timeframeContainers = timeframeContainers;
10
10
  this.markers = markers;
11
11
  }
@@ -19,7 +19,6 @@ class MapElement {
19
19
  const lat = typeof this.center.lat !== 'undefined' ? this.center.lat : this.center.latitude;
20
20
  const lng = typeof this.center.lng !== 'undefined' ? this.center.lng : this.center.longitude;
21
21
  this.center = new tools_1.MapLatLng(lat, lng);
22
- this.markerStyles = [];
23
22
  }
24
23
  build(element, inputs) {
25
24
  var _a;
@@ -37,7 +36,7 @@ class MapElement {
37
36
  scrollWheelZoom: false,
38
37
  renderer: (0, leaflet_1.canvas)(),
39
38
  }).setView([this.center.lat, this.center.lng], 10);
40
- // Hook into the 'zoomend' event
39
+ // Hook into zoom events to preserve marker rotations
41
40
  mapLeaflet.on('zoomend', this.onZoomEnd.bind(this));
42
41
  (0, leaflet_1.tileLayer)('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
43
42
  attribution: '&copy;<a href="https://www.openstreetmap.org/copyright">osm</a>',
@@ -52,16 +51,12 @@ class MapElement {
52
51
  }
53
52
  }
54
53
  compositeLayer.addToMap(mapLeaflet);
55
- // if (firstLayerIdPushed) {
56
- // compositeLayer.showTheFistMatchingId(firstLayerIdPushed);
57
- // }
58
54
  compositeLayer.showAll(this.alpha);
59
55
  // Markers
60
- let markersProduced = [];
61
56
  const markersLayer = new layers_1.MarkersLayer();
62
57
  markersLayer.setCurrentWidth(width);
63
58
  markersLayer.setCurrentHeight(height);
64
- markersProduced = markersLayer.render(inputs.markers).markers;
59
+ const markersProduced = markersLayer.render(inputs.markers).markers;
65
60
  markersLayer.addToMap(mapLeaflet);
66
61
  mapLeaflet.invalidateSize({ animate: true });
67
62
  this.mapLeaflet = mapLeaflet;
@@ -87,142 +82,44 @@ class MapElement {
87
82
  this.mapLeaflet.invalidateSize({ animate: true });
88
83
  }
89
84
  updateMarkers(markers) {
90
- if (this.markerStyles.length === 0) {
91
- // remove all wind-speed-label
92
- document.querySelectorAll('.wind-speed-label').forEach((el) => el.remove());
93
- }
94
- this.markersProduced = this.markersLayer.render(markers).markers;
85
+ const result = this.markersLayer.render(markers);
86
+ this.markersProduced = result.markers;
87
+ this.markersLayer.addToMap(this.mapLeaflet);
95
88
  return this.markersProduced;
96
89
  }
97
90
  /**
98
- * Change marker style by adding CSS classes and/or setting CSS custom properties
99
- * @param marker The marker to style (MapLatLng)
100
- * @param style CSS class(es) to add (space-separated string) or object with classes and cssVars
101
- * @param cssVars Optional object with CSS custom properties (e.g., {strength: 10})
102
- *
103
- * Examples:
104
- * - changeMarkerStyle(marker, 'marker-red')
105
- * - changeMarkerStyle(marker, 'marker-wind marker-wind-200', {strength: 10})
106
- * - changeMarkerStyle(marker, {classes: 'marker-wind marker-wind-200', cssVars: {strength: 10}})
91
+ * Set rotation for a marker using RaainDivIcon
92
+ * @param marker The marker to rotate (MapLatLng)
93
+ * @param angle Rotation angle in degrees (0 = North, 90 = East, 180 = South, 270 = West)
94
+ * @returns true if rotation was applied, false if marker not found or not using RaainDivIcon
107
95
  */
108
- changeMarkerStyle(marker, style, cssVars) {
96
+ setMarkerRotation(marker, angle) {
109
97
  const markerFound = this.getMarkerElement(marker);
110
98
  if (!markerFound) {
111
- return;
112
- }
113
- const element = markerFound.getElement();
114
- if (!element) {
115
- return;
116
- }
117
- // Handle different input formats
118
- let classesToAdd;
119
- let varsToSet;
120
- if (typeof style === 'string') {
121
- classesToAdd = style;
122
- varsToSet = cssVars;
123
- }
124
- else {
125
- classesToAdd = style.classes;
126
- varsToSet = style.cssVars;
99
+ return false;
127
100
  }
128
- // Add CSS classes (space-separated)
129
- if (classesToAdd) {
130
- const classes = classesToAdd.split(' ').filter((c) => c.trim());
131
- classes.forEach((className) => {
132
- element.classList.add(className);
133
- });
101
+ const icon = markerFound.options.icon;
102
+ if (icon instanceof tools_1.RaainDivIcon) {
103
+ icon.setRotation(angle);
104
+ return true;
134
105
  }
135
- // Set CSS custom properties and data attributes
136
- if (varsToSet) {
137
- Object.entries(varsToSet).forEach(([key, value]) => {
138
- // Set as CSS custom property
139
- element.style.setProperty(`--${key}`, String(value));
140
- // Also set as data attribute for use with attr() in CSS
141
- element.setAttribute(`data-${key}`, String(value));
142
- });
143
- }
144
- // Apply rotation to static wind markers by modifying the transform property
145
- if (classesToAdd && classesToAdd.includes('marker-wind-static')) {
146
- const currentTransform = element.style.transform || '';
147
- // Get computed CSS variable value (from CSS classes, not inline styles)
148
- const computedStyle = window.getComputedStyle(element);
149
- const rotationValue = computedStyle.getPropertyValue('--rotation').trim() || '0deg';
150
- // console.log('Rotation value from CSS:', rotationValue);
151
- // Set transform-origin separately (not part of transform value)
152
- element.style.transformOrigin = 'center center';
153
- // Preserve existing translate3d and add rotation
154
- if (currentTransform.includes('translate3d')) {
155
- element.style.transform = `${currentTransform} rotate(${rotationValue})`;
156
- // console.log('Applied rotation to transform:', element.style.transform);
157
- }
158
- else {
159
- element.style.transform = `rotate(${rotationValue})`;
160
- }
106
+ return false;
107
+ }
108
+ /**
109
+ * Get the rotation angle of a marker using RaainDivIcon
110
+ * @param marker The marker to query (MapLatLng)
111
+ * @returns The rotation angle in degrees, or null if not found or not using RaainDivIcon
112
+ */
113
+ getMarkerRotation(marker) {
114
+ const markerFound = this.getMarkerElement(marker);
115
+ if (!markerFound) {
116
+ return null;
161
117
  }
162
- // Special handling for static wind markers: add speed text and arrow as DOM elements
163
- // (since <img> elements cannot have ::before/::after pseudo-elements)
164
- if (classesToAdd && classesToAdd.includes('marker-wind-static')) {
165
- const parent = element.parentElement;
166
- // console.log('Static wind marker detected, parent:', parent);
167
- if (parent) {
168
- // Get the marker's position from its transform style
169
- const transformStyle = element.style.transform || '';
170
- // console.log('Element transform:', transformStyle);
171
- // Extract translate3d values using regex
172
- const match = transformStyle.match(/translate3d\(([^,]+),\s*([^,]+),\s*([^)]+)\)/);
173
- let leftPos = '50%';
174
- let topPosSpeed = '-25px';
175
- if (match) {
176
- const xPos = match[1].trim();
177
- const yPos = match[2].trim();
178
- // console.log('Extracted position:', xPos, yPos);
179
- // Position labels at the marker's exact position (from translate3d)
180
- leftPos = xPos;
181
- // Parse the Y position and offset it upward for labels
182
- const yValue = parseFloat(yPos);
183
- if (!isNaN(yValue)) {
184
- topPosSpeed = `${yValue - 25}px`;
185
- // topPosArrow = `${yValue - 45}px`;
186
- // console.log(
187
- // 'Calculated label positions - speed:',
188
- // topPosSpeed,
189
- // 'arrow:',
190
- // topPosArrow
191
- // );
192
- }
193
- }
194
- if (this.markerStyles.length === 0) {
195
- // remove all wind-speed-label
196
- document.querySelectorAll('.wind-speed-label').forEach((el) => el.remove());
197
- }
198
- // Add speed text label
199
- if (varsToSet && varsToSet['speed-text']) {
200
- const speedLabel = document.createElement('div');
201
- speedLabel.className = 'wind-speed-label';
202
- speedLabel.textContent = String(varsToSet['speed-text']);
203
- speedLabel.style.cssText = `position: absolute; left: ${leftPos}; top: ${topPosSpeed}; transform: translateX(-50%); font-size: 11px; font-weight: bold; color: rgba(255, 255, 255, 0.95); background: rgba(0, 0, 0, 0.6); padding: 2px 5px; border-radius: 3px; text-shadow: 0 0 2px rgba(0, 0, 0, 0.8); pointer-events: none; white-space: nowrap; z-index: 10000;`;
204
- parent.appendChild(speedLabel);
205
- // console.log(
206
- // 'Added speed label:',
207
- // speedLabel.textContent,
208
- // 'at position',
209
- // leftPos,
210
- // topPosSpeed
211
- // );
212
- }
213
- // Add direction arrow
214
- // const arrow = document.createElement('div');
215
- // arrow.className = 'wind-arrow-indicator';
216
- // arrow.textContent = '→';
217
- // arrow.style.cssText = `position: absolute; left: ${leftPos}; top: ${topPosArrow}; font-size: 18px; font-weight: bold; color: rgba(100, 150, 255, 0.95); text-shadow: 0 0 4px rgba(0, 0, 0, 0.7); pointer-events: none; transform-origin: center; z-index: 10000; transform: translateX(-50%);`;
218
- // parent.appendChild(arrow);
219
- // console.log('Added arrow indicator at position', leftPos, topPosArrow);
220
- this.markerStyles.push({ marker: markerFound, style, cssVars });
221
- }
222
- else {
223
- console.warn('No parent element found for static wind marker');
224
- }
118
+ const icon = markerFound.options.icon;
119
+ if (icon instanceof tools_1.RaainDivIcon) {
120
+ return icon.getRotation();
225
121
  }
122
+ return null;
226
123
  }
227
124
  getMarkerElement(markerToFind) {
228
125
  var _a;
@@ -237,12 +134,17 @@ class MapElement {
237
134
  return founds[0];
238
135
  }
239
136
  onZoomEnd(event) {
240
- const styles = this.markerStyles.filter((m) => !!m);
241
- // Rebuild styles
242
- this.markerStyles = [];
243
- for (const markerStyle of styles) {
244
- this.changeMarkerStyle(markerStyle.marker.getLatLng(), markerStyle.style, markerStyle.cssVars);
137
+ var _a;
138
+ // Re-apply rotation to all RaainDivIcon markers after zoom
139
+ if (!((_a = this.markersProduced) === null || _a === void 0 ? void 0 : _a.length)) {
140
+ return;
245
141
  }
142
+ this.markersProduced.forEach((marker) => {
143
+ const icon = marker.options.icon;
144
+ if (typeof icon.applyRotation === 'function') {
145
+ icon.applyRotation();
146
+ }
147
+ });
246
148
  }
247
149
  addCompositeLayer(mapLeaflet, compositeLayer, timeFrameContainer) {
248
150
  const layerIds = [];
@@ -270,4 +172,4 @@ class MapElement {
270
172
  }
271
173
  }
272
174
  exports.MapElement = MapElement;
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3JpZXMvTWFwRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBeUU7QUFDekUsb0NBQW1GO0FBRW5GLHNDQVFtQjtBQUVuQixNQUFhLGVBQWU7SUFDeEIsWUFDVyxtQkFBeUMsRUFDekMsT0FHSjtRQUpJLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBc0I7UUFDekMsWUFBTyxHQUFQLE9BQU8sQ0FHWDtJQUNKLENBQUM7Q0FDUDtBQVJELDBDQVFDO0FBRUQsTUFBYSxVQUFVO0lBU25CLFlBQ1csU0FJSyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUNsQixvQkFBb0IsS0FBSztRQUw1QixXQUFNLEdBQU4sTUFBTSxDQUllO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQVZoQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBWWIsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM1RixNQUFNLEdBQUcsR0FDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQW9CLEVBQUUsTUFBdUI7O1FBQ3RELGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFFcEMsdUJBQXVCO1FBQ3ZCLE1BQU0sY0FBYyxHQUFHLElBQUksdUJBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZFLE1BQU0sVUFBVSxHQUFHLElBQUEsYUFBRyxFQUFDLE9BQU8sRUFBRTtZQUM1QixZQUFZLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsSUFBSTtZQUNuQixXQUFXLEVBQUUsS0FBSztZQUNsQixPQUFPLEVBQUUsS0FBSztZQUNkLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFFBQVEsRUFBRSxJQUFBLGdCQUFNLEdBQUU7U0FDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkQsZ0NBQWdDO1FBQ2hDLFVBQVUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFcEQsSUFBQSxtQkFBUyxFQUFDLG9EQUFvRCxFQUFFO1lBQzVELFdBQVcsRUFBRSxpRUFBaUU7U0FDakYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyQixJQUFJLGtCQUEwQixDQUFDO1FBQy9CLElBQUksTUFBQSxNQUFNLENBQUMsbUJBQW1CLDBDQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDL0MsS0FBSyxNQUFNLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDbkMsVUFBVSxFQUNWLGNBQWMsRUFDZCxrQkFBa0IsQ0FDckIsQ0FBQztnQkFDRixJQUFJLENBQUMsa0JBQWtCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDeEMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNwQzthQUNKO1NBQ0o7UUFFRCxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLDRCQUE0QjtRQUM1QixnRUFBZ0U7UUFDaEUsSUFBSTtRQUNKLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLFVBQVU7UUFDVixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBWSxFQUFFLENBQUM7UUFDeEMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsZUFBZSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM5RCxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsbUJBQXdDO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQSxtQkFBbUIsYUFBbkIsbUJBQW1CLHVCQUFuQixtQkFBbUIsQ0FBRSxVQUFVLENBQUMsTUFBTSxDQUFBLEVBQUU7WUFDakUsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV0QyxJQUFJLGtCQUEwQixDQUFDO1FBQy9CLEtBQUssTUFBTSxrQkFBa0IsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNuQyxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxjQUFjLEVBQ25CLGtCQUFrQixDQUNyQixDQUFDO1lBRUYsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztTQUNKO1FBQ0QsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLGFBQWEsQ0FDaEIsT0FHRztRQUVILElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLDhCQUE4QjtZQUM5QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksaUJBQWlCLENBQ3BCLE1BQWlCLEVBQ2pCLEtBQTRFLEVBQzVFLE9BQXlDO1FBRXpDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBRUQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPO1NBQ1Y7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksU0FBc0QsQ0FBQztRQUUzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDdkI7YUFBTTtZQUNILFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzdCLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQzdCO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksWUFBWSxFQUFFO1lBQ2QsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELGdEQUFnRDtRQUNoRCxJQUFJLFNBQVMsRUFBRTtZQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCx3REFBd0Q7Z0JBQ3hELE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsNEVBQTRFO1FBQzVFLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUN2RCx3RUFBd0U7WUFDeEUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUM7WUFFcEYsMERBQTBEO1lBRTFELGdFQUFnRTtZQUNoRSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7WUFFaEQsaURBQWlEO1lBQ2pELElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLGdCQUFnQixXQUFXLGFBQWEsR0FBRyxDQUFDO2dCQUN6RSwwRUFBMEU7YUFDN0U7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsVUFBVSxhQUFhLEdBQUcsQ0FBQzthQUN4RDtTQUNKO1FBRUQscUZBQXFGO1FBQ3JGLHNFQUFzRTtRQUN0RSxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7WUFDN0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNyQywrREFBK0Q7WUFDL0QsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IscURBQXFEO2dCQUNyRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JELHFEQUFxRDtnQkFFckQseUNBQXlDO2dCQUN6QyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7Z0JBQ25GLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDO2dCQUUxQixJQUFJLEtBQUssRUFBRTtvQkFDUCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzdCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0Isa0RBQWtEO29CQUVsRCxvRUFBb0U7b0JBQ3BFLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBRWYsdURBQXVEO29CQUN2RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ2hCLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQzt3QkFDakMsb0NBQW9DO3dCQUNwQyxlQUFlO3dCQUNmLDZDQUE2Qzt3QkFDN0MsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsS0FBSztxQkFDUjtpQkFDSjtnQkFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDaEMsOEJBQThCO29CQUM5QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUMvRTtnQkFFRCx1QkFBdUI7Z0JBQ3ZCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztvQkFDMUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3pELFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLDZCQUE2QixPQUFPLFVBQVUsV0FBVyxnUkFBZ1IsQ0FBQztvQkFDclcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDL0IsZUFBZTtvQkFDZiw0QkFBNEI7b0JBQzVCLDhCQUE4QjtvQkFDOUIscUJBQXFCO29CQUNyQixlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsS0FBSztpQkFDUjtnQkFFRCxzQkFBc0I7Z0JBQ3RCLCtDQUErQztnQkFDL0MsNENBQTRDO2dCQUM1QywyQkFBMkI7Z0JBQzNCLGtTQUFrUztnQkFDbFMsNkJBQTZCO2dCQUM3QiwwRUFBMEU7Z0JBRTFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7YUFDbEU7U0FDSjtJQUNMLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxZQUF1Qjs7UUFDOUMsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3RDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDUCxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxHQUFHO1lBQzNDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FDbEQsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFUyxTQUFTLENBQUMsS0FBVTtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQ2xCLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQzlCLFdBQVcsQ0FBQyxLQUFLLEVBQ2pCLFdBQVcsQ0FBQyxPQUFPLENBQ3RCLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FDckIsVUFBZSxFQUNmLGNBQThCLEVBQzlCLGtCQUFzQztRQUV0QyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFckQsS0FBSyxNQUFNLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDdkQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFFckMsSUFBSSxLQUF1QixDQUFDO1lBQzVCLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDeEIsS0FBSyxHQUFHLElBQUksbUJBQVUsQ0FDbEIsT0FBTyxFQUNQLGtCQUFrQixDQUFDLElBQUksRUFDdkIsVUFBVSxFQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FDekIsQ0FBQztnQkFDRixLQUFLLENBQUMsU0FBUyxDQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsTUFBeUIsRUFDekIsSUFBSSx5QkFBZ0IsRUFBRSxFQUN0QixrQkFBa0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7YUFDTDtpQkFBTSxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ25DLEtBQUssR0FBRyxJQUFJLHVCQUFjLENBQ3RCLE9BQU8sRUFDUCxrQkFBa0IsQ0FBQyxJQUFJLEVBQ3ZCLFVBQVUsRUFDVixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FDWCxJQUFJLENBQUMsTUFBTSxFQUNYLE1BQTZCLEVBQzdCLElBQUksRUFDSixrQkFBa0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7YUFDTDtpQkFBTSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7Z0JBQzlCLEtBQUssR0FBRyxJQUFJLGtCQUFTLENBQ2pCLE9BQU8sRUFDUCxrQkFBa0IsQ0FBQyxJQUFJLEVBQ3ZCLFVBQVUsRUFDVixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FDWCxJQUFJLENBQUMsTUFBTSxFQUNYLE1BQXdCLEVBQ3hCLElBQUksRUFDSixrQkFBa0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7YUFDTDtZQUVELGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQTlXRCxnQ0E4V0MifQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3JpZXMvTWFwRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNEQ7QUFDNUQsb0NBQWlHO0FBRWpHLHNDQVFtQjtBQUVuQixNQUFhLGVBQWU7SUFDeEIsWUFDVyxtQkFBeUMsRUFDekMsVUFHRCxFQUFFO1FBSkQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFzQjtRQUN6QyxZQUFPLEdBQVAsT0FBTyxDQUdOO0lBQ1QsQ0FBQztDQUNQO0FBUkQsMENBUUM7QUFFRCxNQUFhLFVBQVU7SUFPbkIsWUFDVyxTQUlLLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQ2xCLG9CQUFvQixLQUFLO1FBTDVCLFdBQU0sR0FBTixNQUFNLENBSWU7UUFDbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBUmhDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFVYixNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQzVGLE1BQU0sR0FBRyxHQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDckYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlCQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBb0IsRUFBRSxNQUF1Qjs7UUFDdEQsY0FBYztRQUNkLE1BQU0sS0FB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
@@ -1,6 +1,6 @@
1
- import { IconOptions, LayerGroup, Map, Marker } from 'leaflet';
1
+ import { LayerGroup, Map, Marker } from 'leaflet';
2
2
  import { IPixiLayer } from './IPixiLayer';
3
- import { MapLatLng } from '../tools/MapLatLng';
3
+ import { MapLatLng, RaainDivIcon } from '../tools';
4
4
  export declare class MarkersLayer implements IPixiLayer {
5
5
  protected _layerGroup: LayerGroup;
6
6
  protected _width: number;
@@ -12,7 +12,7 @@ export declare class MarkersLayer implements IPixiLayer {
12
12
  setCurrentHeight(height: number): void;
13
13
  render(markers: {
14
14
  iconsLatLng: MapLatLng[];
15
- iconOptions?: IconOptions;
15
+ raainDivIcon?: RaainDivIcon;
16
16
  }[]): {
17
17
  markers: Marker[];
18
18
  };
@@ -34,18 +34,12 @@ class MarkersLayer {
34
34
  if (this._layerGroup) {
35
35
  this._layerGroup.clearLayers();
36
36
  }
37
- if (!markers) {
38
- return { markers: [] };
39
- }
40
37
  // Add markers
41
38
  const ms = [];
42
39
  let x;
43
40
  let y;
44
41
  for (const marker of markers) {
45
- let iconOption;
46
- if (marker.iconOptions) {
47
- iconOption = (0, leaflet_1.icon)(marker.iconOptions);
48
- }
42
+ const raainDivIcon = marker.raainDivIcon;
49
43
  for (const iconsLatLng of marker.iconsLatLng) {
50
44
  x = iconsLatLng.lat;
51
45
  y = iconsLatLng.lng;
@@ -54,14 +48,21 @@ class MarkersLayer {
54
48
  title: iconsLatLng.name,
55
49
  alt: iconsLatLng.id,
56
50
  };
57
- if (iconOption) {
58
- options.icon = iconOption;
51
+ if (raainDivIcon) {
52
+ options.icon = raainDivIcon;
53
+ }
54
+ const leafletMarkerInstance = (0, leaflet_1.marker)([x, y], options);
55
+ if (raainDivIcon) {
56
+ raainDivIcon.bindToMarker(leafletMarkerInstance);
57
+ }
58
+ else {
59
+ console.warn('raain-ui >> no raainDivIcon provided for this marker!');
59
60
  }
60
- ms.push((0, leaflet_1.marker)([x, y], options));
61
+ ms.push(leafletMarkerInstance);
61
62
  }
62
63
  else {
63
64
  // implement your own error handling
64
- console.error('MARKER ERROR: ', iconsLatLng.id, 'x: ', x, ' y: ', y);
65
+ console.error('raain-ui >> MARKER ERROR: ', iconsLatLng.id, 'x: ', x, ' y: ', y);
65
66
  }
66
67
  }
67
68
  }
@@ -70,4 +71,4 @@ class MarkersLayer {
70
71
  }
71
72
  }
72
73
  exports.MarkersLayer = MarkersLayer;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2Vyc0xheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVycy9NYXJrZXJzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBVWlCO0FBSWpCLE1BQWEsWUFBWTtJQUtyQjtRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDakMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQWdFO1FBRzFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7U0FDeEI7UUFFRCxjQUFjO1FBQ2QsTUFBTSxFQUFFLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBUyxDQUFDO1FBQ2QsSUFBSSxDQUFTLENBQUM7UUFDZCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLFVBQWdCLENBQUM7WUFDckIsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUNwQixVQUFVLEdBQUcsSUFBQSxjQUFXLEVBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2hEO1lBRUQsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM5RCxNQUFNLE9BQU8sR0FBa0I7d0JBQzNCLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSTt3QkFDdkIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFO3FCQUN0QixDQUFDO29CQUNGLElBQUksVUFBVSxFQUFFO3dCQUNaLE9BQU8sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO3FCQUM3QjtvQkFDRCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUEsZ0JBQWEsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2lCQUMzQztxQkFBTTtvQkFDSCxvQ0FBb0M7b0JBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDeEU7YUFDSjtTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFBLG9CQUFVLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFsRkQsb0NBa0ZDIn0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2Vyc0xheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVycy9NYXJrZXJzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQW9HO0FBSXBHLE1BQWEsWUFBWTtJQUtyQjtRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDakMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQWtFO1FBRzVFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO1FBRUQsY0FBYztRQUNkLE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQVMsQ0FBQztRQUNkLElBQUksQ0FBUyxDQUFDO1FBQ2QsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDMUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUV6QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNwQixDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFFcEIsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlELE1BQU0sT0FBTyxHQUFrQjt3QkFDM0IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJO3dCQUN2QixHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUU7cUJBQ3RCLENBQUM7b0JBRUYsSUFBSSxZQUFZLEVBQUU7d0JBQ2QsT0FBTyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7cUJBQy9CO29CQUVELE1BQU0scUJBQXFCLEdBQUcsSUFBQSxnQkFBYSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUU3RCxJQUFJLFlBQVksRUFBRTt3QkFDZCxZQUFZLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7cUJBQ3BEO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztxQkFDekU7b0JBRUQsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUNsQztxQkFBTTtvQkFDSCxvQ0FBb0M7b0JBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQ1QsNEJBQTRCLEVBQzVCLFdBQVcsQ0FBQyxFQUFFLEVBQ2QsS0FBSyxFQUNMLENBQUMsRUFDRCxNQUFNLEVBQ04sQ0FBQyxDQUNKLENBQUM7aUJBQ0w7YUFDSjtTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFBLG9CQUFVLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUE3RkQsb0NBNkZDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raain-ui",
3
- "version": "2.3.22",
3
+ "version": "2.3.24",
4
4
  "author": "contact@raain.io",
5
5
  "homepage": "https://github.com/raainio/raain-ui",
6
6
  "description": "raain.io ui layers",
@@ -35,7 +35,7 @@
35
35
  "geolib": "~3.3.4",
36
36
  "leaflet": "~1.9.4",
37
37
  "pixi.js": "~5.3.12",
38
- "raain-model": "~3.0.35",
38
+ "raain-model": "~3.1.1",
39
39
  "satellite-view": "~2.1.2",
40
40
  "spinning-ball": "~0.5.0",
41
41
  "tile-setter": "~0.1.12",
@@ -0,0 +1,136 @@
1
+ import { DivIcon, DivIconOptions, Marker, PointExpression } from 'leaflet';
2
+ /**
3
+ * Extended DivIconOptions to include rotation and dynamic sizing properties
4
+ */
5
+ export interface RaainDivIconOptions extends DivIconOptions {
6
+ html?: string | HTMLElement | false;
7
+ iconSize?: PointExpression | undefined;
8
+ iconAnchor?: PointExpression | undefined;
9
+ popupAnchor?: PointExpression | undefined;
10
+ className?: string | undefined;
11
+ /**
12
+ * Initial rotation angle in degrees (0 = North, 90 = East, 180 = South, 270 = West)
13
+ */
14
+ rotationAngle?: number;
15
+ /**
16
+ * CSS transform-origin for rotation (default: 'center center')
17
+ */
18
+ rotationOrigin?: string;
19
+ /**
20
+ * Dynamic width in pixels (overrides iconSize width if provided)
21
+ */
22
+ width?: number;
23
+ /**
24
+ * Dynamic height in pixels (overrides iconSize height if provided)
25
+ */
26
+ height?: number;
27
+ /**
28
+ * HTML template with {width} and {height} placeholders for dynamic sizing
29
+ * Use this for icons that need to change size at runtime using setSize()
30
+ */
31
+ htmlTemplate?: string;
32
+ }
33
+ /**
34
+ * A DivIcon with built-in rotation and dynamic sizing support
35
+ *
36
+ * Usage:
37
+ * ```typescript
38
+ * // Basic usage with rotation
39
+ * const icon = new RaainDivIcon({
40
+ * html: '<div style="width: 30px; height: 30px; background: red;"></div>',
41
+ * rotationAngle: 0,
42
+ * className: 'my-custom-marker'
43
+ * });
44
+ *
45
+ * // With dynamic sizing (for wind speed visualization)
46
+ * const windIcon = new RaainDivIcon({
47
+ * htmlTemplate: `<div style="width: {width}px; height: {height}px; background: blue;"></div>`,
48
+ * width: 40,
49
+ * height: 40,
50
+ * rotationAngle: 45
51
+ * });
52
+ *
53
+ * const marker = L.marker([51.505, -0.09], { icon: windIcon }).addTo(map);
54
+ *
55
+ * // Update rotation dynamically
56
+ * windIcon.setRotation(90);
57
+ *
58
+ * // Update size dynamically (e.g., based on wind speed)
59
+ * windIcon.setSize(60, 60);
60
+ *
61
+ * // Update both size and rotation
62
+ * windIcon.update({ width: 50, height: 50, rotationAngle: 180 });
63
+ * ```
64
+ */
65
+ export declare class RaainDivIcon extends DivIcon {
66
+ options: RaainDivIconOptions;
67
+ private _icon;
68
+ private _marker;
69
+ constructor(options: RaainDivIconOptions);
70
+ /**
71
+ * Process size options and generate HTML from template if needed
72
+ */
73
+ private static _processSizeOptions;
74
+ /**
75
+ * Override createIcon to store reference and apply initial rotation
76
+ */
77
+ createIcon(oldIcon?: HTMLElement): HTMLElement;
78
+ /**
79
+ * Set the rotation angle in degrees
80
+ * @param angle Rotation angle (0 = North, 90 = East, 180 = South, 270 = West)
81
+ */
82
+ setRotation(angle: number): this;
83
+ /**
84
+ * Get the current rotation angle
85
+ */
86
+ getRotation(): number;
87
+ /**
88
+ * Set the size (width and height) of the icon dynamically
89
+ * @param width New width in pixels
90
+ * @param height New height in pixels
91
+ */
92
+ setSize(width: number, height: number): this;
93
+ /**
94
+ * Get the current size
95
+ */
96
+ getSize(): {
97
+ width: number;
98
+ height: number;
99
+ };
100
+ /**
101
+ * Update multiple properties at once (size, rotation)
102
+ * @param updates Object with properties to update
103
+ */
104
+ update(updates: {
105
+ width?: number;
106
+ height?: number;
107
+ rotationAngle?: number;
108
+ }): this;
109
+ /**
110
+ * Set the transform origin for rotation
111
+ * @param origin CSS transform-origin value (e.g., 'center center', '50% 50%')
112
+ */
113
+ setRotationOrigin(origin: string): this;
114
+ /**
115
+ * Apply the current rotation to the icon element
116
+ * This preserves any existing translate3d transformations from Leaflet
117
+ */
118
+ applyRotation(): this;
119
+ /**
120
+ * Bind this icon to a marker for automatic rotation updates
121
+ * @param marker The Leaflet marker to bind to
122
+ */
123
+ bindToMarker(marker: Marker): this;
124
+ /**
125
+ * Unbind from the current marker
126
+ */
127
+ unbindFromMarker(): this;
128
+ /**
129
+ * Get the icon HTML element (if created)
130
+ */
131
+ getIconElement(): HTMLElement | null;
132
+ /**
133
+ * Internal method to update the icon's size
134
+ */
135
+ private _updateSize;
136
+ }