azure-maps-control 2.2.7 → 2.3.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.
package/dist/atlas.js CHANGED
@@ -77,7 +77,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
77
77
  }
78
78
 
79
79
  var azuremapsMaplibreGlUnminified = createCommonjsModule(function (module, exports) {
80
- /* The Azure Maps fork of MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v1.15.0/LICENSE.txt */
80
+ /* The Azure Maps fork of MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v1.16.1/LICENSE.txt */
81
81
  (function (global, factory) {
82
82
  module.exports = factory() ;
83
83
  }(commonjsGlobal, (function () {
@@ -109,7 +109,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
109
109
  return module = { exports: {} }, fn(module, module.exports), module.exports;
110
110
  }
111
111
 
112
- var version = "1.15.0";
112
+ var version = "1.16.1";
113
113
 
114
114
  var unitbezier = UnitBezier;
115
115
  function UnitBezier(p1x, p1y, p2x, p2y) {
@@ -441,7 +441,8 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
441
441
  }
442
442
  function uuid() {
443
443
  function b(a) {
444
- return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : ([10000000] + -[1000] + -4000 + -8000 + -100000000000).replace(/[018]/g, b);
444
+ var rand = window$1.crypto.getRandomValues(new Uint32Array(1))[0] / Math.pow(2, 32);
445
+ return a ? (a ^ rand * 16 >> a / 4).toString(16) : ([10000000] + -[1000] + -4000 + -8000 + -100000000000).replace(/[018]/g, b);
445
446
  }
446
447
  return b();
447
448
  }
@@ -33124,7 +33125,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33124
33125
  Style.__proto__ = Evented;
33125
33126
  Style.prototype = Object.create(Evented && Evented.prototype);
33126
33127
  Style.prototype.constructor = Style;
33127
- Style.prototype.loadURL = function loadURL(url, options) {
33128
+ Style.prototype.loadURL = function loadURL(url, options, previousStyle) {
33128
33129
  var this$1 = this;
33129
33130
  if (options === void 0)
33130
33131
  options = {};
@@ -33137,11 +33138,11 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33137
33138
  if (error) {
33138
33139
  this$1.fire(new performance.ErrorEvent(error));
33139
33140
  } else if (json) {
33140
- this$1._load(json, options);
33141
+ this$1._load(json, options, previousStyle);
33141
33142
  }
33142
33143
  });
33143
33144
  };
33144
- Style.prototype.loadJSON = function loadJSON(json, options) {
33145
+ Style.prototype.loadJSON = function loadJSON(json, options, previousStyle) {
33145
33146
  var this$1 = this;
33146
33147
  if (options === void 0)
33147
33148
  options = {};
@@ -33149,34 +33150,29 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33149
33150
  this._request = performance.browser.frame(function () {
33150
33151
  this$1._request = null;
33151
33152
  options.validate = options.validate !== false;
33152
- this$1._load(json, options);
33153
+ this$1._load(json, options, previousStyle);
33153
33154
  });
33154
33155
  };
33155
33156
  Style.prototype.loadEmpty = function loadEmpty() {
33156
33157
  this.fire(new performance.Event('dataloading', { dataType: 'style' }));
33157
33158
  this._load(empty, { validate: false });
33158
33159
  };
33159
- Style.prototype._load = function _load(json, options) {
33160
- var this$1 = this;
33161
- if (options.validate && emitValidationErrors(this, performance.validateStyle(json))) {
33160
+ Style.prototype._load = function _load(json, options, previousStyle) {
33161
+ var nextState = options.transformStyle ? options.transformStyle(previousStyle, json) : json;
33162
+ if (options.validate && emitValidationErrors(this, performance.validateStyle(nextState))) {
33162
33163
  return;
33163
33164
  }
33164
- var patchOperations = [];
33165
- if (options.stylePatch) {
33166
- patchOperations = this._buildStylePatch(json, options);
33167
- this.sourceCaches = {};
33168
- }
33169
33165
  this._loaded = true;
33170
- this.stylesheet = json;
33171
- for (var id in json.sources) {
33172
- this.addSource(id, json.sources[id], { validate: false });
33166
+ this.stylesheet = nextState;
33167
+ for (var id in nextState.sources) {
33168
+ this.addSource(id, nextState.sources[id], { validate: false });
33173
33169
  }
33174
- if (json.sprite) {
33175
- this._loadSprite(json.sprite);
33170
+ if (nextState.sprite) {
33171
+ this._loadSprite(nextState.sprite);
33176
33172
  } else {
33177
33173
  this.imageManager.setLoaded(true);
33178
33174
  }
33179
- this.glyphManager.setURL(json.glyphs);
33175
+ this.glyphManager.setURL(nextState.glyphs);
33180
33176
  var layers = derefLayers(this.stylesheet.layers);
33181
33177
  this._order = layers.map(function (layer) {
33182
33178
  return layer.id;
@@ -33192,11 +33188,6 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33192
33188
  }
33193
33189
  this.dispatcher.broadcast('setLayers', this._serializeLayers(this._order));
33194
33190
  this.light = new Light(this.stylesheet.light);
33195
- patchOperations.filter(function (op) {
33196
- return op.command !== operations.moveLayer;
33197
- }).forEach(function (op) {
33198
- this$1[op.command].apply(this$1, op.args);
33199
- });
33200
33191
  this.fire(new performance.Event('data', { dataType: 'style' }));
33201
33192
  this.fire(new performance.Event('style.load'));
33202
33193
  };
@@ -33371,33 +33362,11 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33371
33362
  if (emitValidationErrors(this, performance.validateStyle(nextState))) {
33372
33363
  return false;
33373
33364
  }
33374
- nextState = performance.clone$1(nextState);
33365
+ nextState = options.transformStyle ? options.transformStyle(this.serialize(), nextState) : nextState;
33375
33366
  nextState.layers = derefLayers(nextState.layers);
33376
- var patchOperations = [];
33377
- var preservedLayers = {};
33378
- var preservedSources = {};
33379
- if (options.stylePatch) {
33380
- patchOperations = this._buildStylePatch(nextState, options);
33381
- }
33382
- patchOperations = patchOperations.filter(function (op) {
33383
- if (op.command === operations.addLayer && this$1._serializedLayers.hasOwnProperty(op.args[0].id)) {
33384
- preservedLayers[op.args[0].id] = true;
33385
- return false;
33386
- }
33387
- if (op.command === operations.moveLayer && this$1._serializedLayers.hasOwnProperty(op.args[0])) {
33388
- preservedLayers[op.args[0]] = true;
33389
- return true;
33390
- }
33391
- if (op.command === operations.addSource && this$1.sourceCaches.hasOwnProperty(op.args[0])) {
33392
- preservedSources[op.args[0]] = true;
33393
- return false;
33394
- }
33395
- return true;
33396
- });
33397
33367
  var changes = diffStyles(this.serialize(), nextState).filter(function (op) {
33398
33368
  return !(op.command in ignoredDiffOperations);
33399
33369
  });
33400
- changes = changes.concat(patchOperations);
33401
33370
  if (changes.length === 0) {
33402
33371
  return false;
33403
33372
  }
@@ -33413,12 +33382,6 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33413
33382
  if (op.command === 'setTransition') {
33414
33383
  return;
33415
33384
  }
33416
- if (op.command === operations.removeLayer && preservedLayers.hasOwnProperty(op.args[0])) {
33417
- return;
33418
- }
33419
- if ((op.command === operations.addSource || op.command === operations.removeSource) && preservedSources.hasOwnProperty(op.args[0])) {
33420
- return;
33421
- }
33422
33385
  this$1[op.command].apply(this$1, op.args);
33423
33386
  });
33424
33387
  this.stylesheet = nextState;
@@ -33809,109 +33772,6 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
33809
33772
  return empty;
33810
33773
  }
33811
33774
  };
33812
- Style.prototype._buildStylePatch = function _buildStylePatch(next, options) {
33813
- var this$1 = this;
33814
- var patchOperations = [];
33815
- var preservedSources = [];
33816
- var preservedLayers = [];
33817
- var nextLayerIndex = next.layers.reduce(function (p, c) {
33818
- p[c.id] = c;
33819
- return p;
33820
- }, {});
33821
- var preserveLayer = function (layerId, before) {
33822
- if (this$1.hasLayer(layerId)) {
33823
- var preservedLayer = this$1._serializedLayers[layerId];
33824
- if (!next.sources.hasOwnProperty(preservedLayer.source) && !preservedSources.includes(preservedLayer.source)) {
33825
- patchOperations.push({
33826
- command: 'addSource',
33827
- args: [
33828
- preservedLayer.source,
33829
- this$1.sourceCaches[preservedLayer.source].serialize(),
33830
- { validate: false }
33831
- ]
33832
- });
33833
- preservedSources.push(preservedLayer.source);
33834
- }
33835
- if (nextLayerIndex.hasOwnProperty(layerId)) {
33836
- patchOperations.push({
33837
- command: 'removeLayer',
33838
- args: [layerId]
33839
- });
33840
- }
33841
- before = nextLayerIndex.hasOwnProperty(before) || preservedLayers.find(function (l) {
33842
- return l.id === before;
33843
- }) ? before : undefined;
33844
- patchOperations.push({
33845
- command: 'moveLayer',
33846
- args: [
33847
- preservedLayer.id,
33848
- before,
33849
- { validate: true }
33850
- ]
33851
- });
33852
- patchOperations.push({
33853
- command: 'addLayer',
33854
- args: [
33855
- preservedLayer,
33856
- before,
33857
- { validate: true }
33858
- ]
33859
- });
33860
- preservedLayers.push(layerId);
33861
- } else {
33862
- performance.warnOnce('Cannot preserve layer ' + layerId + ' that is not in the previous style.');
33863
- }
33864
- };
33865
- var updatePaintProperty = function (layerId, name, value) {
33866
- if (nextLayerIndex.hasOwnProperty(layerId) || preservedLayers.includes(layerId)) {
33867
- patchOperations.push({
33868
- command: 'setPaintProperty',
33869
- args: [
33870
- layerId,
33871
- name,
33872
- value,
33873
- { validate: true }
33874
- ]
33875
- });
33876
- } else {
33877
- performance.warnOnce('Cannot update paint property on layer ' + layerId + ' that is not in the next style.');
33878
- }
33879
- };
33880
- var updateLayoutProperty = function (layerId, name, value) {
33881
- if (nextLayerIndex.hasOwnProperty(layerId) || preservedLayers.includes(layerId)) {
33882
- patchOperations.push({
33883
- command: 'setLayoutProperty',
33884
- args: [
33885
- layerId,
33886
- name,
33887
- value,
33888
- { validate: true }
33889
- ]
33890
- });
33891
- } else {
33892
- performance.warnOnce('Cannot update layout property on layer ' + layerId + ' that is not in the next style.');
33893
- }
33894
- };
33895
- var updateFilter = function (layerId, name, value) {
33896
- if (nextLayerIndex.hasOwnProperty(layerId) || preservedLayers.includes(layerId)) {
33897
- patchOperations.push({
33898
- command: 'setFilter',
33899
- args: [
33900
- layerId,
33901
- name,
33902
- value,
33903
- { validate: true }
33904
- ]
33905
- });
33906
- } else {
33907
- performance.warnOnce('Cannot update filter on layer ' + layerId + ' that is not in the next style.');
33908
- }
33909
- };
33910
- if (options.stylePatch) {
33911
- options.stylePatch(this.serialize(), next, preserveLayer.bind(this), updatePaintProperty.bind(this), updateLayoutProperty.bind(this), updateFilter.bind(this));
33912
- }
33913
- return patchOperations;
33914
- };
33915
33775
  Style.prototype._updateLayer = function _updateLayer(layer) {
33916
33776
  this._updatedLayers[layer.id] = true;
33917
33777
  if (layer.source && !this._updatedSources[layer.source] && this.sourceCaches[layer.source].getSource().type !== 'raster') {
@@ -41194,33 +41054,31 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
41194
41054
  return str;
41195
41055
  };
41196
41056
  Map.prototype._updateStyle = function _updateStyle(style, options) {
41057
+ var this$1 = this;
41197
41058
  if (options === void 0)
41198
41059
  options = {};
41199
- if (!options.stylePatch) {
41200
- if (this.style) {
41201
- this.style.setEventedParent(null);
41202
- this.style._remove();
41203
- }
41204
- if (!style) {
41205
- delete this.style;
41206
- return this;
41207
- } else {
41208
- this.style = new Style(this, options);
41209
- }
41210
- this.style.setEventedParent(this, { style: this.style });
41211
- } else {
41212
- if (!style) {
41213
- style = emptyStyle();
41214
- }
41060
+ if (options.transformStyle && this.style && !this.style._loaded) {
41061
+ this.style.once('style.load', function () {
41062
+ return this$1._updateStyle(style, options);
41063
+ });
41064
+ return;
41215
41065
  }
41216
- if (!this.style) {
41066
+ var previousStyle = this.style && options.transformStyle ? this.style.serialize() : undefined;
41067
+ if (this.style) {
41068
+ this.style.setEventedParent(null);
41069
+ this.style._remove();
41070
+ }
41071
+ if (!style) {
41072
+ delete this.style;
41073
+ return this;
41074
+ } else {
41217
41075
  this.style = new Style(this, options);
41218
- this.style.setEventedParent(this, { style: this.style });
41219
41076
  }
41077
+ this.style.setEventedParent(this, { style: this.style });
41220
41078
  if (typeof style === 'string') {
41221
- this.style.loadURL(style, options);
41079
+ this.style.loadURL(style, options, previousStyle);
41222
41080
  } else {
41223
- this.style.loadJSON(style, options);
41081
+ this.style.loadJSON(style, options, previousStyle);
41224
41082
  }
41225
41083
  return this;
41226
41084
  };
@@ -43619,7 +43477,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
43619
43477
  return Url;
43620
43478
  }());
43621
43479
 
43622
- var version = "2.2.7";
43480
+ var version = "2.3.1";
43623
43481
 
43624
43482
  /**
43625
43483
  * A helper class that provides methods for getting various forms of the map controls current version.
@@ -53648,19 +53506,24 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
53648
53506
  * Get reference to Mapbox Map
53649
53507
  * @internal
53650
53508
  */
53651
- Source.prototype._setMap = function (map) {
53509
+ Source.prototype._setMap = function (map, shouldInvokeEvent) {
53510
+ if (shouldInvokeEvent === void 0) { shouldInvokeEvent = true; }
53652
53511
  if (map == null || map === undefined) {
53653
53512
  var temp = this.map;
53654
53513
  delete this.map;
53655
- this._invokeEvent("sourceremoved", this);
53656
- if (temp) {
53657
- temp.events.invoke("sourceremoved", this);
53514
+ if (shouldInvokeEvent) {
53515
+ this._invokeEvent("sourceremoved", this);
53516
+ if (temp) {
53517
+ temp.events.invoke("sourceremoved", this);
53518
+ }
53658
53519
  }
53659
53520
  }
53660
53521
  else {
53661
53522
  this.map = map;
53662
- this._invokeEvent("sourceadded", this);
53663
- this.map.events.invoke("sourceadded", this);
53523
+ if (shouldInvokeEvent) {
53524
+ this._invokeEvent("sourceadded", this);
53525
+ this.map.events.invoke("sourceadded", this);
53526
+ }
53664
53527
  }
53665
53528
  };
53666
53529
  return Source;
@@ -53981,6 +53844,27 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
53981
53844
  }
53982
53845
  return geoJsonSource;
53983
53846
  };
53847
+ DataSource.prototype._isDeepEqual = function (other) {
53848
+ if (this.constructor !== other.constructor) {
53849
+ return false;
53850
+ }
53851
+ var source = this._buildSource();
53852
+ var otherSource = other._buildSource();
53853
+ return source.type === otherSource.type &&
53854
+ // no data comparison since it is costly and not needed. If geojson data is different, but other source properties are same, we treat it as an update.
53855
+ //source.data === otherSource.data &&
53856
+ source.maxzoom === otherSource.maxzoom &&
53857
+ source.cluster === otherSource.cluster &&
53858
+ source.clusterRadius === otherSource.clusterRadius &&
53859
+ source.tolerance === otherSource.tolerance &&
53860
+ source.lineMetrics === otherSource.lineMetrics &&
53861
+ JSON.stringify(source.clusterProperties) === JSON.stringify(otherSource.clusterProperties) &&
53862
+ source.buffer === otherSource.buffer &&
53863
+ source.clusterMinPoints === otherSource.clusterMinPoints &&
53864
+ source.generateId === otherSource.generateId &&
53865
+ source.promoteId === otherSource.promoteId &&
53866
+ source.filter === otherSource.filter;
53867
+ };
53984
53868
  /**
53985
53869
  * @internal
53986
53870
  */
@@ -54262,6 +54146,26 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54262
54146
  }
54263
54147
  return vectorSource;
54264
54148
  };
54149
+ /**
54150
+ * @internal
54151
+ */
54152
+ VectorTileSource.prototype._isDeepEqual = function (other) {
54153
+ if (this.constructor !== other.constructor) {
54154
+ return false;
54155
+ }
54156
+ var source = this._buildSource();
54157
+ var otherSource = other._buildSource();
54158
+ return source.type === otherSource.type &&
54159
+ source.url === otherSource.url &&
54160
+ ((source.tiles === undefined && otherSource.tiles === undefined) ||
54161
+ (source.tiles && otherSource.tiles && source.tiles.length === otherSource.tiles.length && source.tiles.every(function (value, idx) { return value === otherSource.tiles[idx]; }))) &&
54162
+ source.minzoom === otherSource.minzoom &&
54163
+ source.maxzoom === otherSource.maxzoom &&
54164
+ source.bounds === otherSource.bounds &&
54165
+ source.attribution === otherSource.attribution &&
54166
+ source.promoteId === otherSource.promoteId &&
54167
+ source.scheme === otherSource.scheme;
54168
+ };
54265
54169
  return VectorTileSource;
54266
54170
  }(Source));
54267
54171
 
@@ -54553,11 +54457,41 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54553
54457
  /**
54554
54458
  * @internal
54555
54459
  * Specifies whether to create focusable indicators for the bubbles.
54460
+ * The default highlighting style is provided if the source is DataSource with Shape:
54461
+ * ```ts
54462
+ * const datasource = new DataSource('bubble-source');
54463
+ * datasource.setShapes([new Shape(new Point([-122.335, 47.62]))]);
54464
+ * this.map.sources.add(datasource);
54465
+ * const layer = new BubbleLayer(datasource, 'bubble', {
54466
+ * radius: 10,
54467
+ * color: 'cyan',
54468
+ * createIndicators: true,
54469
+ * });
54470
+ * ```
54471
+ *
54472
+ * For other sources, you can provide the accessibilityIdKey option to specify the property name of the feature to use as the accessibility id.
54473
+ * ```ts
54474
+ * const vtSource = new VectorTileSource("indoorTiles", { tiles, // provide your tile urls });
54475
+ * this.map.sources.add(vtSource);
54476
+ * const layer = new BubbleLayer(vtSource, 'bubble', {
54477
+ * createIndicators: true,
54478
+ * accessibilityIdKey: '{add your ID here}'
54479
+ * });
54480
+ * ```
54481
+ *
54482
+ * If you want to customize the highlighting style, you can use the focusin/focusout events to change the style of the bubble.
54483
+ * ```ts
54484
+ * this.map.events.add('focusin', 'bubble', (e) => { handle the style highlight });
54485
+ * ```
54556
54486
  *
54557
54487
  * Note: We treat this as an internal option for now because we hadn't fully decided the default styling for the indicators.
54558
54488
  * Once we decide, we will make this a public option or remove it.
54559
54489
  */
54560
54490
  _this.createIndicators = false;
54491
+ /**
54492
+ * @internal
54493
+ */
54494
+ _this.accessibilityIdKey = undefined;
54561
54495
  return _this;
54562
54496
  }
54563
54497
  return BubbleLayerOptions;
@@ -54630,6 +54564,11 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54630
54564
  }
54631
54565
  return ar;
54632
54566
  };
54567
+ var __spreadArray = (window && window.__spreadArray) || function (to, from) {
54568
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
54569
+ to[j] = from[i];
54570
+ return to;
54571
+ };
54633
54572
  /**
54634
54573
  * Renders Point objects as scalable circles (bubbles).
54635
54574
  */
@@ -54644,13 +54583,15 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54644
54583
  function BubbleLayer(source, id, options) {
54645
54584
  var _this = _super.call(this, id) || this;
54646
54585
  _this.accessibleIndicator = [];
54647
- _this.setAccessibleIndicator = function () { return __awaiter$1(_this, void 0, void 0, function () {
54648
- var renderedShapes, createIndicator, insertHiddenBefore, insertHiddenInFront, attach;
54586
+ /** @internal */
54587
+ _this._setAccessibleIndicator = function () { return __awaiter$1(_this, void 0, void 0, function () {
54588
+ var renderedShapes, accessibilityIdKey, createIndicator, insertHiddenBefore, insertHiddenInFront, attach;
54649
54589
  var _this = this;
54650
54590
  return __generator$1(this, function (_a) {
54651
54591
  this.accessibleIndicator.forEach(function (indicator) { return indicator.remove(); });
54652
54592
  this.accessibleIndicator = [];
54653
54593
  renderedShapes = this.map.layers.getRenderedShapes(this.map.getCamera().bounds, this);
54594
+ accessibilityIdKey = this.options.accessibilityIdKey || (this._getDataSource() ? Shape._shapeIdPropName : undefined);
54654
54595
  createIndicator = function (renderedShapes, idx) {
54655
54596
  var curRenderedShape = renderedShapes[idx];
54656
54597
  var bubbleFeature = curRenderedShape instanceof Shape ? curRenderedShape.toJson() : curRenderedShape;
@@ -54674,9 +54615,8 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54674
54615
  if (idx == 0 && renderedShapes.length >= 2) {
54675
54616
  attach(createIndicator(renderedShapes, renderedShapes.length - 1));
54676
54617
  }
54677
- // NOTE: a11y only works for AZM shapes for now. (.id and _azureMapsShapeId required)
54678
- if (bubbleFeature.id !== undefined) {
54679
- _this.map._getMap().setPaintProperty(_this.id, 'circle-stroke-color', ['case', ['==', ['get', '_azureMapsShapeId'], bubbleFeature.id], '#000000', _this.options.strokeColor]);
54618
+ if (accessibilityIdKey !== undefined) {
54619
+ _this.map._getMap().setPaintProperty(_this.id, 'circle-stroke-color', ['case', ['==', ['get', accessibilityIdKey], bubbleFeature.properties[accessibilityIdKey]], '#000000', _this.options.strokeColor]);
54680
54620
  }
54681
54621
  var focusEvent = {
54682
54622
  target: element,
@@ -54689,8 +54629,8 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54689
54629
  _this._invokeEvent('focusin', focusEvent);
54690
54630
  });
54691
54631
  element.addEventListener('focusout', function (event) {
54692
- if (bubbleFeature.id !== undefined) {
54693
- _this.map._getMap().setPaintProperty(_this.id, 'circle-stroke-color', ['case', ['==', ['get', '_azureMapsShapeId'], bubbleFeature.id], _this.options.strokeColor, _this.options.strokeColor]);
54632
+ if (accessibilityIdKey !== undefined) {
54633
+ _this.map._getMap().setPaintProperty(_this.id, 'circle-stroke-color', ['case', ['==', ['get', accessibilityIdKey], bubbleFeature.properties[accessibilityIdKey]], _this.options.strokeColor, _this.options.strokeColor]);
54694
54634
  }
54695
54635
  var focusEvent = {
54696
54636
  target: element,
@@ -54777,19 +54717,72 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
54777
54717
  this.options = newOptions;
54778
54718
  };
54779
54719
  BubbleLayer.prototype.onAdd = function (map) {
54720
+ var _this = this;
54780
54721
  _super.prototype.onAdd.call(this, map);
54781
54722
  if (this.options.createIndicators) {
54782
- map.events.addOnce('idle', this.setAccessibleIndicator);
54783
- map.events.add('moveend', this.setAccessibleIndicator);
54723
+ // Wait for map idle for the first time to ensure `layer.getRenderedShapes` return correct shapes.
54724
+ map.events.addOnce('idle', this._setAccessibleIndicator);
54725
+ // The rendered shapes may be changed when map is moved. Update the indicators when map is moved.
54726
+ map.events.add('moveend', this._setAccessibleIndicator);
54727
+ var dataSource = this._getDataSource();
54728
+ if (dataSource) {
54729
+ // The rendered shapes may be changed when data is added. Update the indicators when data is added.
54730
+ map.events.add('dataadded', dataSource, function () {
54731
+ // Wait for map idle to ensure `layer.getRenderedShapes` return correct shapes.
54732
+ map.events.addOnce('idle', _this._setAccessibleIndicator);
54733
+ });
54734
+ }
54735
+ else {
54736
+ var sourceId_1 = typeof this.options.source === 'string' ? this.options.source : this.options.source.getId();
54737
+ map.events.add('sourcedata', function (mapDataEvent) {
54738
+ var _a;
54739
+ // There's chances that mapDataEvent.isSourceLoaded doesn't update correctly when using flyTo, thus we check by using map.isSourceLoaded.
54740
+ if (((_a = mapDataEvent.source) === null || _a === void 0 ? void 0 : _a.getId()) === sourceId_1 && map._getMap().isSourceLoaded(sourceId_1)) {
54741
+ // Source event will be fired multiple times, and we are only interested when the source is loaded.
54742
+ // Thus design a cache key that only changed when camera & style properties are changed.
54743
+ var curCacheKey = _this._getSourceDataEventCacheKey();
54744
+ if (curCacheKey !== _this.sourceDataEventCacheKey) {
54745
+ _this._setAccessibleIndicator();
54746
+ _this.sourceDataEventCacheKey = curCacheKey;
54747
+ }
54748
+ }
54749
+ });
54750
+ }
54784
54751
  }
54785
54752
  };
54786
54753
  BubbleLayer.prototype.onRemove = function () {
54787
54754
  if (this.options.createIndicators) {
54788
- this.map.events.remove('idle', this.setAccessibleIndicator);
54789
- this.map.events.remove('moveend', this.setAccessibleIndicator);
54755
+ this.map.events.remove('idle', this._setAccessibleIndicator);
54756
+ this.map.events.remove('moveend', this._setAccessibleIndicator);
54757
+ var dataSource = this._getDataSource();
54758
+ if (dataSource) {
54759
+ this.map.events.remove('dataadded', dataSource, this._setAccessibleIndicator);
54760
+ }
54761
+ else {
54762
+ this.map.events.remove('sourcedata', this._setAccessibleIndicator);
54763
+ }
54790
54764
  }
54791
54765
  _super.prototype.onRemove.call(this);
54792
54766
  };
54767
+ BubbleLayer.prototype._getSourceDataEventCacheKey = function () {
54768
+ if (!this.map) {
54769
+ return undefined;
54770
+ }
54771
+ var mapConfiguration = this.map.getServiceOptions().mapConfiguration;
54772
+ return __spreadArray(__spreadArray([], __read$3(this.map.getCamera().bounds)), [
54773
+ this.map.getCamera().zoom,
54774
+ this.map.getCamera().pitch,
54775
+ this.map.getStyle().style,
54776
+ mapConfiguration instanceof Object ? mapConfiguration.id : mapConfiguration
54777
+ ]).join(',');
54778
+ };
54779
+ BubbleLayer.prototype._getDataSource = function () {
54780
+ var source = typeof this.options.source === 'string' ? this.map.sources.getById(this.options.source) : this.options.source;
54781
+ if (source instanceof DataSource) {
54782
+ return source;
54783
+ }
54784
+ return undefined;
54785
+ };
54793
54786
  /**
54794
54787
  * @internal
54795
54788
  */
@@ -55935,7 +55928,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
55935
55928
  }
55936
55929
  return ar;
55937
55930
  };
55938
- var __spreadArray = (window && window.__spreadArray) || function (to, from) {
55931
+ var __spreadArray$1 = (window && window.__spreadArray) || function (to, from) {
55939
55932
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
55940
55933
  to[j] = from[i];
55941
55934
  return to;
@@ -56010,7 +56003,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
56010
56003
  finally { if (e_1) throw e_1.error; }
56011
56004
  }
56012
56005
  // Then execute the standard merge behavior.
56013
- var merged = _super.prototype.merge.apply(this, __spreadArray([], __read$4(valueList)));
56006
+ var merged = _super.prototype.merge.apply(this, __spreadArray$1([], __read$4(valueList)));
56014
56007
  if (isNewColorSet) {
56015
56008
  merged.fillPattern = undefined;
56016
56009
  }
@@ -58704,7 +58697,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
58704
58697
  }
58705
58698
  return ar;
58706
58699
  };
58707
- var __spreadArray$1 = (window && window.__spreadArray) || function (to, from) {
58700
+ var __spreadArray$2 = (window && window.__spreadArray) || function (to, from) {
58708
58701
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
58709
58702
  to[j] = from[i];
58710
58703
  return to;
@@ -58841,7 +58834,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
58841
58834
  for (var _i = 0; _i < arguments.length; _i++) {
58842
58835
  valueList[_i] = arguments[_i];
58843
58836
  }
58844
- var merged = _super.prototype.merge.apply(this, __spreadArray$1([], __read$6(valueList)));
58837
+ var merged = _super.prototype.merge.apply(this, __spreadArray$2([], __read$6(valueList)));
58845
58838
  if (merged.authType === exports.AuthenticationType.subscriptionKey) {
58846
58839
  merged.authContext = merged.aadAppId = merged.getToken = undefined;
58847
58840
  }
@@ -69693,10 +69686,11 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
69693
69686
  if (add) {
69694
69687
  this.logoAnchor = document.createElement("a");
69695
69688
  this.logoAnchor.className = "azure-map-logo";
69696
- this.logoAnchor.href = "https://microsoft.com";
69689
+ this.logoAnchor.href = "https://aka.ms/azuremaps";
69697
69690
  this.logoAnchor.setAttribute("aria-label", "Microsoft");
69691
+ this.logoAnchor.setAttribute("target", "_blank");
69698
69692
  this.container.appendChild(this.logoAnchor);
69699
- this.logoTooltip = buildAccessibleTooltip("Visit microsoft.com");
69693
+ this.logoTooltip = buildAccessibleTooltip("Visit azure.microsoft.com");
69700
69694
  this.container.appendChild(this.logoTooltip);
69701
69695
  positionTooltip(this.logoTooltip, this.logoAnchor);
69702
69696
  }
@@ -69978,7 +69972,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
69978
69972
  }
69979
69973
  return ar;
69980
69974
  };
69981
- var __spreadArray$2 = (window && window.__spreadArray) || function (to, from) {
69975
+ var __spreadArray$3 = (window && window.__spreadArray) || function (to, from) {
69982
69976
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
69983
69977
  to[j] = from[i];
69984
69978
  return to;
@@ -70446,7 +70440,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
70446
70440
  // Derive polygon layers from the label config.
70447
70441
  _this._polygonStyleLayer = _this._labelConfig.reduce(function (acc, cur) {
70448
70442
  if (cur.polygonSources) {
70449
- acc.push.apply(acc, __spreadArray$2([], __read$7(cur.polygonSources)));
70443
+ acc.push.apply(acc, __spreadArray$3([], __read$7(cur.polygonSources)));
70450
70444
  }
70451
70445
  return acc;
70452
70446
  }, []);
@@ -74931,7 +74925,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
74931
74925
  }
74932
74926
  return ar;
74933
74927
  };
74934
- var __spreadArray$3 = (window && window.__spreadArray) || function (to, from) {
74928
+ var __spreadArray$4 = (window && window.__spreadArray) || function (to, from) {
74935
74929
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
74936
74930
  to[j] = from[i];
74937
74931
  return to;
@@ -74949,7 +74943,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
74949
74943
  'data-azure-maps-attribution-order',
74950
74944
  'data-azure-maps-attribution-dynamic'
74951
74945
  ];
74952
- var allowedAttributionAttributes = __spreadArray$3([
74946
+ var allowedAttributionAttributes = __spreadArray$4([
74953
74947
  'href'
74954
74948
  ], __read$8(attributionRuleAttributes));
74955
74949
  var AttributionRuleProxy = /** @class */ (function () {
@@ -75174,7 +75168,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
75174
75168
  };
75175
75169
  AttributionRuleProxy.prototype.applyAttributionResponse = function (attributions) {
75176
75170
  var _this = this;
75177
- var copyrights = attributions.map(function (resp) { return resp.copyrights || []; }).reduce(function (flat, copyrights) { return __spreadArray$3(__spreadArray$3([], __read$8(flat)), __read$8(copyrights)); }, []);
75171
+ var copyrights = attributions.map(function (resp) { return resp.copyrights || []; }).reduce(function (flat, copyrights) { return __spreadArray$4(__spreadArray$4([], __read$8(flat)), __read$8(copyrights)); }, []);
75178
75172
  if (copyrights.length == 0) {
75179
75173
  // no attribution for a provided tileset/bbox/z
75180
75174
  return;
@@ -75239,7 +75233,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
75239
75233
  }
75240
75234
  return ar;
75241
75235
  };
75242
- var __spreadArray$4 = (window && window.__spreadArray) || function (to, from) {
75236
+ var __spreadArray$5 = (window && window.__spreadArray) || function (to, from) {
75243
75237
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
75244
75238
  to[j] = from[i];
75245
75239
  return to;
@@ -75358,10 +75352,10 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
75358
75352
  }, function () { return document.createElement('span'); });
75359
75353
  });
75360
75354
  var registeredRuleSet = new Set(Object.values(registeredRules));
75361
- var redundantRules = new Set(__spreadArray$4([], __read$9(allRules)).filter(function (rule) { return !registeredRuleSet.has(rule); }));
75362
- var redundantElements = new Set(__spreadArray$4([], __read$9(redundantRules)).map(function (rule) { return rule.getElement(); }));
75355
+ var redundantRules = new Set(__spreadArray$5([], __read$9(allRules)).filter(function (rule) { return !registeredRuleSet.has(rule); }));
75356
+ var redundantElements = new Set(__spreadArray$5([], __read$9(redundantRules)).map(function (rule) { return rule.getElement(); }));
75363
75357
  // eject redundant rules associated elements altogether
75364
- __spreadArray$4([], __read$9(redundantElements)).filter(function (elem) { return elem.parentElement !== null; })
75358
+ __spreadArray$5([], __read$9(redundantElements)).filter(function (elem) { return elem.parentElement !== null; })
75365
75359
  .forEach(function (elem) { return elem.parentElement.removeChild(elem); });
75366
75360
  _this.rules = Object.values(registeredRules);
75367
75361
  var attributionsToApply = attributions
@@ -75397,7 +75391,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
75397
75391
  var visibleTextNodes = function (elem) {
75398
75392
  return Array.from(elem.style.display != 'none' ? elem.children : [])
75399
75393
  .map(function (elem) { return visibleTextNodes(elem); })
75400
- .reduce(function (flattened, nodes) { return __spreadArray$4(__spreadArray$4([], __read$9(flattened)), __read$9(nodes)); }, Array.from(elem.style.display != 'none' ? elem.childNodes : []).filter(function (node) { return node.nodeType == node.TEXT_NODE; }));
75394
+ .reduce(function (flattened, nodes) { return __spreadArray$5(__spreadArray$5([], __read$9(flattened)), __read$9(nodes)); }, Array.from(elem.style.display != 'none' ? elem.childNodes : []).filter(function (node) { return node.nodeType == node.TEXT_NODE; }));
75401
75395
  };
75402
75396
  var newRenderContext = _this.virtualContext.cloneNode(true);
75403
75397
  var visibleNodes = visibleTextNodes(newRenderContext);
@@ -75412,7 +75406,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
75412
75406
  // }
75413
75407
  // });
75414
75408
  // strip all predefined keywords
75415
- visibleNodes.forEach(function (node) { return node.textContent = __spreadArray$4([], __read$9(attributionFilters)).reduce(function (target, filter) { return target.replace(filter, '').trim(); }, node.textContent); });
75409
+ visibleNodes.forEach(function (node) { return node.textContent = __spreadArray$5([], __read$9(attributionFilters)).reduce(function (target, filter) { return target.replace(filter, '').trim(); }, node.textContent); });
75416
75410
  // strip year from each node
75417
75411
  // visibleNodes.forEach(node => node.textContent = node.textContent.replace(copyrightYearPattern, '').trim());
75418
75412
  // deduplicate attribution text
@@ -79094,10 +79088,15 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79094
79088
  return ids;
79095
79089
  };
79096
79090
  FundamentalMapLayer.prototype._updateLayoutProperty = function (name, newValue, oldValue, subValue) {
79097
- var _this = this;
79091
+ if (isEqual_1(newValue, oldValue))
79092
+ return;
79093
+ var map = this.map._getMap();
79098
79094
  this.layers.forEach(function (layer) {
79099
- if (!(isEqual_1(newValue, oldValue))) {
79100
- _this.map._getMap().setLayoutProperty(layer.id, name, subValue || newValue);
79095
+ if (map.getLayer(layer.id)) {
79096
+ map.setLayoutProperty(layer.id, name, subValue || newValue);
79097
+ }
79098
+ else {
79099
+ console.warn("Could not update layout property " + name + " for layer " + layer.id + " to " + (subValue || newValue));
79101
79100
  }
79102
79101
  });
79103
79102
  };
@@ -79131,7 +79130,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79131
79130
  }
79132
79131
  return ar;
79133
79132
  };
79134
- var __spreadArray$5 = (window && window.__spreadArray) || function (to, from) {
79133
+ var __spreadArray$6 = (window && window.__spreadArray) || function (to, from) {
79135
79134
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
79136
79135
  to[j] = from[i];
79137
79136
  return to;
@@ -79192,10 +79191,12 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79192
79191
  // Place the new layer behind the specified before layer.
79193
79192
  var layerIndex = this.layerIndex.findIndex(function (l) { return l.getId() === layer.getId(); });
79194
79193
  var userLayerIndex = this.userLayers.findIndex(function (ul) { return ul.layer.getId() === layer.getId(); });
79195
- var tempLayer = this.layerIndex[layerIndex];
79196
79194
  this._removeMapboxLayers(layer);
79197
79195
  this._addMapboxLayers(layer, before);
79198
- this.map.events._disableLayerEvents(tempLayer);
79196
+ var tempLayer = this.layerIndex[layerIndex];
79197
+ if (tempLayer) {
79198
+ this.map.events._disableLayerEvents(tempLayer);
79199
+ }
79199
79200
  this.map.events._enableLayerEvents(layer);
79200
79201
  this.layerIndex.splice(layerIndex, 1);
79201
79202
  var beforeIndex = this.layerIndex.findIndex(function (l) { return l.getId() === before; });
@@ -79203,7 +79204,9 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79203
79204
  if (!(layer instanceof FundamentalMapLayer)) {
79204
79205
  this.userLayers[userLayerIndex] = { layer: layer, before: before };
79205
79206
  }
79206
- tempLayer.onRemove();
79207
+ if (tempLayer) {
79208
+ tempLayer.onRemove();
79209
+ }
79207
79210
  layer.onAdd(this.map);
79208
79211
  }
79209
79212
  else {
@@ -79569,7 +79572,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79569
79572
  // If a specified layer hasn't been added to the map throw an error.
79570
79573
  var index = this_1.layerIndex.findIndex(function (l) { return l.getId() === layerId; });
79571
79574
  if (index > -1) {
79572
- layerIds.push.apply(layerIds, __spreadArray$5([], __read$b(this_1.layerIndex[index]._getLayerIds()
79575
+ layerIds.push.apply(layerIds, __spreadArray$6([], __read$b(this_1.layerIndex[index]._getLayerIds()
79573
79576
  .filter(function (id) { return !!_this.map._getMap().getLayer(id); }))));
79574
79577
  }
79575
79578
  else {
@@ -79858,6 +79861,37 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
79858
79861
  FundamentalMapSource.prototype._buildSource = function () {
79859
79862
  return this.source;
79860
79863
  };
79864
+ /**
79865
+ * @internal
79866
+ */
79867
+ FundamentalMapSource.prototype._isDeepEqual = function (other) {
79868
+ if (this.constructor !== other.constructor) {
79869
+ return false;
79870
+ }
79871
+ var source = this.source;
79872
+ var otherSource = other.source;
79873
+ var baseEqual = source.type === otherSource.type &&
79874
+ source.url === otherSource.url
79875
+ && ((source.tiles === undefined && otherSource.tiles === undefined) ||
79876
+ (source.tiles && otherSource.tiles && source.tiles.length === otherSource.tiles.length && source.tiles.every(function (value, idx) { return value === otherSource.tiles[idx]; })))
79877
+ && source.minzoom === otherSource.minzoom
79878
+ && source.maxzoom === otherSource.maxzoom
79879
+ && source.bounds === otherSource.bounds
79880
+ && source.attribution === otherSource.attribution;
79881
+ var rasterEqual = source.type !== "raster" || (source.type === "raster"
79882
+ && source.type === otherSource.type
79883
+ && source.tileSize === otherSource.tileSize
79884
+ && source.scheme === otherSource.scheme);
79885
+ var rasterDemEqual = source.type !== "raster-dem" || (source.type === "raster-dem"
79886
+ && source.type === otherSource.type
79887
+ && source.tileSize === otherSource.tileSize
79888
+ && source.encoding === otherSource.encoding);
79889
+ var vectorEqual = source.type !== "vector" || (source.type === "vector"
79890
+ && source.type === otherSource.type
79891
+ && source.promoteId === otherSource.promoteId
79892
+ && source.scheme === otherSource.scheme);
79893
+ return baseEqual && rasterEqual && rasterDemEqual && vectorEqual;
79894
+ };
79861
79895
  /**
79862
79896
  * Updates the source info to convert the tiles to url strings.
79863
79897
  * @param sourceDef The original source info.
@@ -80154,39 +80188,52 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
80154
80188
  var _this = this;
80155
80189
  if (sources) {
80156
80190
  Object.keys(sources).forEach(function (sourceId) {
80191
+ var sourceToAdd = sources[sourceId];
80192
+ var newSource;
80193
+ if (sourceToAdd.type === "vector") {
80194
+ newSource = new FundamentalMapSource(sourceId, {
80195
+ name: sourceId,
80196
+ tiles: sourceToAdd.tiles,
80197
+ type: "vector",
80198
+ url: sourceToAdd.url
80199
+ });
80200
+ }
80201
+ else if (sourceToAdd.type === "raster") {
80202
+ newSource = new FundamentalMapSource(sourceId, {
80203
+ name: sourceId,
80204
+ tiles: sourceToAdd.tiles,
80205
+ type: "raster",
80206
+ url: sourceToAdd.url
80207
+ });
80208
+ }
80209
+ else {
80210
+ // Do not throw for the source of unknown type.
80211
+ // throw new Error(`Unable to construct source with ID ${sourceId}.`);
80212
+ // no other handling for the source we don't sync into the state here
80213
+ return;
80214
+ }
80157
80215
  if (!_this.sources.has(sourceId)) {
80158
- var sourceToAdd = sources[sourceId];
80159
- if (sourceToAdd.type === "vector") {
80160
- var newSource = new FundamentalMapSource(sourceId, {
80161
- name: sourceId,
80162
- tiles: sourceToAdd.tiles,
80163
- type: "vector",
80164
- url: sourceToAdd.url
80165
- });
80166
- _this.sources.set(sourceId, newSource);
80167
- newSource._setMap(_this.map);
80168
- }
80169
- else if (sourceToAdd.type === "raster") {
80170
- var newSource = new FundamentalMapSource(sourceId, {
80171
- name: sourceId,
80172
- tiles: sourceToAdd.tiles,
80173
- type: "raster",
80174
- url: sourceToAdd.url
80175
- });
80176
- _this.sources.set(sourceId, newSource);
80177
- newSource._setMap(_this.map);
80178
- }
80179
- else {
80180
- throw new Error("Unable to construct source with ID " + sourceId + ".");
80181
- }
80216
+ _this.sources.set(sourceId, newSource);
80217
+ newSource._setMap(_this.map);
80182
80218
  }
80183
- });
80184
- Object.keys(this.sources).forEach(function (sourceId) {
80185
- if (!sources.hasOwnProperty(sourceId)) {
80186
- _this.sources.get(sourceId)._setMap(null);
80187
- _this.sources.delete(sourceId);
80219
+ else if (_this.sources.has(sourceId) && !_this.sources.get(sourceId)._isDeepEqual(newSource)) {
80220
+ // source with same id but different properties: update
80221
+ _this.sources.set(sourceId, newSource);
80222
+ newSource._setMap(_this.map, false);
80188
80223
  }
80189
80224
  });
80225
+ // counter-intuitive: below is a bug and will do nothing since Object.keys(this.sources) will always return [], it should rather be:
80226
+ // Array.from(this.sources.keys()).forEach(sourceId => {
80227
+ // however, we have seen the first party users are compensating for this with their code containing explicit azm.sources.remove but not containing the check for existing
80228
+ // such removal will cause the exception, since the source would already be removed
80229
+ //
80230
+ // given this bug was here historically, we keep the removal unfixed here (already fixed in v3) to make sure we don't cause any unintented side effects for existing users
80231
+ // Object.keys(this.sources).forEach(sourceId => {
80232
+ // if (!sources.hasOwnProperty(sourceId)) {
80233
+ // this.sources.get(sourceId)._setMap(null);
80234
+ // this.sources.delete(sourceId);
80235
+ // }
80236
+ // });
80190
80237
  }
80191
80238
  };
80192
80239
  return SourceManager;
@@ -80328,7 +80375,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
80328
80375
  }
80329
80376
  return ar;
80330
80377
  };
80331
- var __spreadArray$6 = (window && window.__spreadArray) || function (to, from) {
80378
+ var __spreadArray$7 = (window && window.__spreadArray) || function (to, from) {
80332
80379
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
80333
80380
  to[j] = from[i];
80334
80381
  return to;
@@ -80403,7 +80450,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
80403
80450
  }
80404
80451
  finally { if (e_1) throw e_1.error; }
80405
80452
  }
80406
- return _super.prototype.merge.apply(this, __spreadArray$6([], __read$c(valuesList)));
80453
+ return _super.prototype.merge.apply(this, __spreadArray$7([], __read$c(valuesList)));
80407
80454
  };
80408
80455
  return CameraBoundsOptions;
80409
80456
  }(Options));
@@ -80892,7 +80939,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
80892
80939
  }
80893
80940
  return ar;
80894
80941
  };
80895
- var __spreadArray$7 = (window && window.__spreadArray) || function (to, from) {
80942
+ var __spreadArray$8 = (window && window.__spreadArray) || function (to, from) {
80896
80943
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
80897
80944
  to[j] = from[i];
80898
80945
  return to;
@@ -81012,6 +81059,13 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81012
81059
  * @deprecated use `view` instead.
81013
81060
  */
81014
81061
  _this.userRegion = _this.view;
81062
+ /**
81063
+ * allows substituting a default MapControl's style transformer with custom one
81064
+ * Default style transformer is meant to update the incoming fetched style to desired state, as well as to synchronize the SDK state with style state
81065
+ * and move additional layers over
81066
+ * @internal
81067
+ */
81068
+ _this.customStyleTransform = undefined;
81015
81069
  return _this;
81016
81070
  }
81017
81071
  /**
@@ -81051,7 +81105,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81051
81105
  finally { if (e_1) throw e_1.error; }
81052
81106
  }
81053
81107
  // Then execute the standard merge behavior.
81054
- return _super.prototype.merge.apply(this, __spreadArray$7([], __read$d(valueList)));
81108
+ return _super.prototype.merge.apply(this, __spreadArray$8([], __read$d(valueList)));
81055
81109
  };
81056
81110
  return StyleOptions;
81057
81111
  }(Options));
@@ -81109,7 +81163,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81109
81163
  }
81110
81164
  return ar;
81111
81165
  };
81112
- var __spreadArray$8 = (window && window.__spreadArray) || function (to, from) {
81166
+ var __spreadArray$9 = (window && window.__spreadArray) || function (to, from) {
81113
81167
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
81114
81168
  to[j] = from[i];
81115
81169
  return to;
@@ -81344,10 +81398,10 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81344
81398
  // won't change default behavior in Options as usually that's what desired
81345
81399
  // instead capture it here and reassign.
81346
81400
  var currentTransforms = this._transformers;
81347
- var transformersToMerge = valueList ? valueList.filter(function (value) { return value !== undefined; }).reduce(function (flattened, value) { return __spreadArray$8(__spreadArray$8([], __read$e(flattened)), __read$e(value._transformers || [])); }, []) : [];
81401
+ var transformersToMerge = valueList ? valueList.filter(function (value) { return value !== undefined; }).reduce(function (flattened, value) { return __spreadArray$9(__spreadArray$9([], __read$e(flattened)), __read$e(value._transformers || [])); }, []) : [];
81348
81402
  // Then execute the standard merge behavior.
81349
81403
  // If subscription key auth method isn't being used then the subscription key property should be undefined.
81350
- var merged = _super.prototype.merge.apply(this, __spreadArray$8([], __read$e(valueList)));
81404
+ var merged = _super.prototype.merge.apply(this, __spreadArray$9([], __read$e(valueList)));
81351
81405
  if (merged.authOptions.authType !== exports.AuthenticationType.subscriptionKey) {
81352
81406
  merged["subscription-key"] = merged.subscriptionKey = undefined;
81353
81407
  }
@@ -81359,7 +81413,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81359
81413
  if (merged.mapConfiguration && typeof merged.mapConfiguration !== 'string') {
81360
81414
  merged.mapConfiguration = __assign$7(__assign$7({}, merged.mapConfiguration), { defaultConfiguration: merged.mapConfiguration.defaultConfiguration || merged.mapConfiguration['defaultStyle'], configurations: merged.mapConfiguration.configurations || merged.mapConfiguration['styles'] });
81361
81415
  }
81362
- this._transformers = __spreadArray$8(__spreadArray$8([], __read$e(currentTransforms || [])), __read$e(transformersToMerge.filter(function (toMerge) { return !currentTransforms.includes(toMerge); })));
81416
+ this._transformers = __spreadArray$9(__spreadArray$9([], __read$e(currentTransforms || [])), __read$e(transformersToMerge.filter(function (toMerge) { return !currentTransforms.includes(toMerge); })));
81363
81417
  if (this.transformRequest && !this._transformers.includes(this.transformRequest)) {
81364
81418
  this._transformers.push(this.transformRequest);
81365
81419
  }
@@ -81607,7 +81661,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81607
81661
  }
81608
81662
  return ar;
81609
81663
  };
81610
- var __spreadArray$9 = (window && window.__spreadArray) || function (to, from) {
81664
+ var __spreadArray$a = (window && window.__spreadArray) || function (to, from) {
81611
81665
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
81612
81666
  to[j] = from[i];
81613
81667
  return to;
@@ -81660,7 +81714,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81660
81714
  var deferredLayers = Object.entries(layerGroupLayers).reduce(function (deferred, _a) {
81661
81715
  var _b = __read$f(_a, 2), groupName = _b[0], layers = _b[1];
81662
81716
  var isInInitialLayerGroup = validInitLayerGroups.includes(groupName);
81663
- return __spreadArray$9(__spreadArray$9([], __read$f(deferred)), __read$f(layers.filter(function (layer) {
81717
+ return __spreadArray$a(__spreadArray$a([], __read$f(deferred)), __read$f(layers.filter(function (layer) {
81664
81718
  var _a;
81665
81719
  // Exclude custom layers
81666
81720
  if (layer.type === 'custom')
@@ -81712,13 +81766,11 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81712
81766
  };
81713
81767
  _this.map.events.addOnce('load', _this._progressiveLoadingState.pendingVisibilityChange);
81714
81768
  };
81715
- this._onStyleData = function () {
81716
- _this._lookUpAsync(_this.map.getStyle()).then(function (style) {
81717
- _this.map.events.invoke("stylechanged", {
81718
- style: style.name,
81719
- map: _this.map,
81720
- type: "stylechanged"
81721
- });
81769
+ this._onStyleData = function (definition) {
81770
+ _this.map.events.invoke("stylechanged", {
81771
+ style: definition.name,
81772
+ map: _this.map,
81773
+ type: "stylechanged"
81722
81774
  });
81723
81775
  };
81724
81776
  /**
@@ -81902,23 +81954,183 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81902
81954
  if (styleDefinition.style) {
81903
81955
  return styleDefinition.style;
81904
81956
  }
81905
- throw Error("Style definition does not contain neither URL nor style object.");
81957
+ throw Error("Style definition neither contains URL nor style object.");
81958
+ };
81959
+ StyleManager.prototype.deriveNewStyleAndLayerGroups = function (previousStyle, nextStyle) {
81960
+ var _a, _b, _c, _d, _e, _f;
81961
+ // Layers in the next style with default properties that do not align with current StyleOptions
81962
+ // should be modified before they are applied to the map.
81963
+ var styleOptions = this.map.getStyle();
81964
+ var trafficOptions = this.map.getTraffic();
81965
+ var layersGroups = {};
81966
+ for (var i = 0; i < nextStyle.layers.length; i++) {
81967
+ var nextLayer = nextStyle.layers[i];
81968
+ var layerGroup = LayerGroupComparator.getLayerGroup(nextLayer);
81969
+ if (!layerGroup) {
81970
+ layersGroups[nextLayer.id] = [nextLayer];
81971
+ continue;
81972
+ }
81973
+ if (!layersGroups[layerGroup]) {
81974
+ layersGroups[layerGroup] = [];
81975
+ }
81976
+ var layerGroupLayers = layersGroups[layerGroup];
81977
+ layerGroupLayers.push(nextLayer);
81978
+ // 1. Set visiblity of fill-extrusion layers according to StyleOptions.showBuildingModels
81979
+ if (!styleOptions.showBuildingModels && nextLayer.type === "fill-extrusion") {
81980
+ nextLayer.layout = (_a = nextLayer.layout) !== null && _a !== void 0 ? _a : {};
81981
+ nextLayer.layout.visibility = "none";
81982
+ }
81983
+ else if (nextLayer.type === "fill-extrusion") {
81984
+ nextLayer.layout = (_b = nextLayer.layout) !== null && _b !== void 0 ? _b : {};
81985
+ nextLayer.layout.visibility = "visible";
81986
+ }
81987
+ // 2. Set visibility of traffic layers depending on traffic settings.
81988
+ if (trafficOptions.flow !== "none" && layerGroup) {
81989
+ if (layerGroup === "traffic_" + trafficOptions.flow && nextLayer.type == "line") {
81990
+ nextLayer.layout = (_c = nextLayer.layout) !== null && _c !== void 0 ? _c : {};
81991
+ nextLayer.layout.visibility = "visible";
81992
+ }
81993
+ }
81994
+ // 3. Set visibility of labels
81995
+ var isLabelLayerGroup = layerGroup === 'labels' || layerGroup === 'labels_places' || layerGroup === 'labels_indoor';
81996
+ if (isLabelLayerGroup && nextLayer.type === 'symbol') {
81997
+ if (styleOptions.showLabels && ((_d = nextLayer.layout) === null || _d === void 0 ? void 0 : _d.visibility) !== "none") {
81998
+ nextLayer.layout = (_e = nextLayer.layout) !== null && _e !== void 0 ? _e : {};
81999
+ nextLayer.layout.visibility = "visible";
82000
+ }
82001
+ else {
82002
+ nextLayer.layout = (_f = nextLayer.layout) !== null && _f !== void 0 ? _f : {};
82003
+ nextLayer.layout.visibility = "none";
82004
+ }
82005
+ }
82006
+ }
82007
+ return [nextStyle, layersGroups];
82008
+ };
82009
+ StyleManager.prototype.injectUserLayersIntoStyle = function (previousStyle, nextStyle, layerGroupLayers) {
82010
+ // Custom layers added to mapbox through this SDK should be carried over to the next style.
82011
+ return !previousStyle
82012
+ ? nextStyle
82013
+ : this.map.layers._getUserLayers().reduce(function (style, userLayer) {
82014
+ if (userLayer.layer instanceof WebGLLayer) {
82015
+ // mapbox custom layers cannot be serialized and preserved,
82016
+ // return to continue to the next user layer.
82017
+ return style;
82018
+ }
82019
+ var before = layerGroupLayers[userLayer.before] && layerGroupLayers[userLayer.before].length > 0
82020
+ ? layerGroupLayers[userLayer.before][0]
82021
+ : undefined;
82022
+ var layer = previousStyle.layers.find(function (layer) { return layer.id === userLayer.layer.getId(); });
82023
+ // when setStyle diff attempt is unsuccesful, _load will be called on the style that may have already injected user layers -> clean it up
82024
+ var existingLayerIdx = nextStyle.layers.findIndex(function (layer) { return layer.id === userLayer.layer.getId(); });
82025
+ if (existingLayerIdx > -1) {
82026
+ nextStyle.layers.splice(existingLayerIdx, 1);
82027
+ }
82028
+ if (layer) {
82029
+ var sourcesToCopy = new Set(Array.from(userLayer.layer._getSourceIds())
82030
+ .map(function (sourceId) { return previousStyle.sources[sourceId] ? { source: previousStyle.sources[sourceId], id: sourceId } : undefined; })
82031
+ .filter(function (source) { return source !== undefined; }));
82032
+ var insertIdx = before ? style.layers.findIndex(function (layer) { return layer.id === before.id; }) : -1;
82033
+ if (insertIdx > -1) {
82034
+ style.layers.splice(insertIdx, 0, layer);
82035
+ }
82036
+ else {
82037
+ style.layers.push(layer);
82038
+ }
82039
+ sourcesToCopy.forEach(function (_a) {
82040
+ var source = _a.source, id = _a.id;
82041
+ style.sources[id] = source;
82042
+ });
82043
+ }
82044
+ return style;
82045
+ }, __assign$8({}, nextStyle));
81906
82046
  };
81907
82047
  /**
81908
82048
  * @internal
81909
82049
  */
81910
82050
  StyleManager.prototype.setStyle = function (styleOptions, diff) {
82051
+ var _this = this;
81911
82052
  if (diff === void 0) { diff = true; }
81912
- try {
81913
- this.map._getMap().setStyle(this.getStyle(styleOptions), {
81914
- diff: diff,
81915
- stylePatch: this._stylePatch.bind(this),
81916
- validate: this.serviceOptions.validateStyle
81917
- });
82053
+ var transformStyleFunc;
82054
+ var targetDefinition = this._lookUp(styleOptions);
82055
+ if (!targetDefinition) {
82056
+ throw Error("Style definition " + styleOptions.style + " is not available.");
82057
+ }
82058
+ if (!targetDefinition.url && !targetDefinition.style) {
82059
+ throw Error("Style definition neither contains URL nor style object.");
82060
+ }
82061
+ var styleDataCallback = function () { return _this._onStyleData(targetDefinition); };
82062
+ var patchStyleEvent = function () {
82063
+ // FIXME: below diffing will be soon fixed on the maplibre side
82064
+ // If there was a previous styledata change event attached, remove it.
82065
+ // When the sprite url changes between style changes then maplibre can't perform the diff
82066
+ // In such cases it recalculate the style again. Removing previous attached
82067
+ // event listener makes sure that style changed event is not fired twice in these cases.
82068
+ _this.map.events.remove("styledata", styleDataCallback);
82069
+ _this.map.events.addOnce("styledata", styleDataCallback);
82070
+ };
82071
+ if (styleOptions && styleOptions.customStyleTransform) {
82072
+ transformStyleFunc = function (prev, next) {
82073
+ var target = styleOptions.customStyleTransform(prev, next);
82074
+ patchStyleEvent();
82075
+ return target;
82076
+ };
81918
82077
  }
81919
- catch (e) {
81920
- throw e;
82078
+ else {
82079
+ transformStyleFunc = function (previousStyle, style) {
82080
+ // make sure we always have a shallow clone to prevent mutating explicit json(rather then url) styles being set
82081
+ var nextStyle = __assign$8(__assign$8({}, style), { layers: __spreadArray$a([], __read$f(style.layers)), sources: __assign$8({}, style.sources) });
82082
+ var shouldProgressiveLoading = (styleOptions.progressiveLoading &&
82083
+ // The feature only effective at the initial load.
82084
+ !_this.map._isLoaded());
82085
+ // Shallow-clone the style object and duplicate layer.layout properties to avoid side-effects.
82086
+ if (shouldProgressiveLoading && Array.isArray(style === null || style === void 0 ? void 0 : style.layers)) {
82087
+ nextStyle = __assign$8({}, style);
82088
+ nextStyle.layers = nextStyle.layers.map(function (layer) {
82089
+ var nextLayer = __assign$8({}, layer);
82090
+ if (layer.layout) {
82091
+ nextLayer.layout = __assign$8({}, layer.layout);
82092
+ }
82093
+ return nextLayer;
82094
+ });
82095
+ }
82096
+ // 1. derive the base new style (without user layers) and layer groups
82097
+ var _a = __read$f(_this.deriveNewStyleAndLayerGroups(previousStyle, nextStyle), 2), targetStyle = _a[0], layerGroupLayers = _a[1];
82098
+ // 2. side effect: progressively render map layers to the canvas to shorten the time to the first meaningful render.
82099
+ if (shouldProgressiveLoading) {
82100
+ var initLayerGroups = styleOptions.progressiveLoadingInitialLayerGroups;
82101
+ if (Array.isArray(initLayerGroups) && initLayerGroups.length > 0) {
82102
+ _this._deferLayerGroupVisibilities(layerGroupLayers, initLayerGroups);
82103
+ }
82104
+ }
82105
+ // 3. copy user layers and sources from previous style into new one
82106
+ var targetStyleWithUserLayers = _this.injectUserLayersIntoStyle(previousStyle, targetStyle, layerGroupLayers);
82107
+ // 4. side effects: sync our control's LayerManager and SourceManager
82108
+ var nextFundamentalLayers = Object.entries(layerGroupLayers).map(function (_a) {
82109
+ var _b = __read$f(_a, 2), layerGroupId = _b[0], layers = _b[1];
82110
+ return _this._buildFundamentalLayerFrom(layers, layerGroupId);
82111
+ });
82112
+ var layerIndex = _this.map.layers._getUserLayers().reduce(function (layerIndex, userLayer) {
82113
+ var layerInsertIndex = userLayer.before ? layerIndex.findIndex(function (layer) { return layer.getId() === userLayer.before; }) : -1;
82114
+ if (layerInsertIndex > -1) {
82115
+ layerIndex.splice(layerInsertIndex, 0, userLayer.layer);
82116
+ }
82117
+ else {
82118
+ layerIndex.push(userLayer.layer);
82119
+ }
82120
+ return layerIndex;
82121
+ }, nextFundamentalLayers);
82122
+ _this.map.layers['layerIndex'] = layerIndex;
82123
+ _this.map.sources._syncSources(targetStyleWithUserLayers.sources);
82124
+ // 5. temporarily patch style data event
82125
+ patchStyleEvent();
82126
+ return targetStyleWithUserLayers;
82127
+ };
81921
82128
  }
82129
+ this.map._getMap().setStyle(targetDefinition.url || targetDefinition.style, {
82130
+ diff: diff,
82131
+ validate: this.serviceOptions.validateStyle,
82132
+ transformStyle: transformStyleFunc
82133
+ });
81922
82134
  };
81923
82135
  /**
81924
82136
  * Gets the color theme (light/dark) for the style type specified by the style options.
@@ -81983,138 +82195,6 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
81983
82195
  StyleManager.prototype.clearStyleSet = function () {
81984
82196
  this.unsetIndoorState();
81985
82197
  };
81986
- /**
81987
- * Function invoked by mapbox after a style is fetched but before it is committed to the map state.
81988
- *
81989
- * @param previousStyle The current style.
81990
- * @param nextStyle The next style which is to be applied.
81991
- * @param preserveLayer Preserve a layer from the previous style in the next style.
81992
- * @param updatePaintProperty Modify paint properties of a layer in the next style before the style is applied.
81993
- * @param updateLayoutProperty Modify layout properties of a layer in the next style before the style is applied.
81994
- * @param updateFilter Modify filter property of a layer in the next style before the style is applied.
81995
- */
81996
- StyleManager.prototype._stylePatch = function (previousStyle, nextStyle, preserveLayer, updatePaintProperty, updateLayoutProperty, updateFilter) {
81997
- var _this = this;
81998
- // Skip the style patch if the map has been disposed.
81999
- if (this.map.isDisposed)
82000
- return;
82001
- // Layers in the next style with default properties that do not align with current StyleOptions
82002
- // should be modified before they are applied to the map.
82003
- var styleOptions = this.map.getStyle();
82004
- var trafficOptions = this.map.getTraffic();
82005
- var shouldProgressiveLoading = (styleOptions.progressiveLoading &&
82006
- // The feature only effective at the initial load.
82007
- !this.map._isLoaded());
82008
- var setLayerVisibility = function (layer, visibility) {
82009
- var _a;
82010
- if (!shouldProgressiveLoading) {
82011
- // No need to apply the visibility change to maplibre while progressive loading is enabled.
82012
- // This can save a lot of CPU time.
82013
- updateLayoutProperty(layer.id, 'visibility', visibility);
82014
- }
82015
- layer.layout = (_a = layer.layout) !== null && _a !== void 0 ? _a : {};
82016
- layer.layout.visibility = visibility;
82017
- };
82018
- var layerGroupLayers = {};
82019
- nextStyle.layers.forEach(function (nextLayer) {
82020
- var _a;
82021
- var layerGroup = LayerGroupComparator.getLayerGroup(nextLayer);
82022
- if (layerGroup) {
82023
- // Set visibility of fill-extrusion layers according to StyleOptions.showBuildingModels
82024
- if (nextLayer.type === 'fill-extrusion') {
82025
- setLayerVisibility(nextLayer, styleOptions.showBuildingModels ? 'visible' : 'none');
82026
- }
82027
- // Set visibility of traffic layers depending on traffic settings.
82028
- if (trafficOptions.flow !== 'none' && nextLayer.type == 'line' &&
82029
- (layerGroup === "traffic_" + trafficOptions.flow ||
82030
- // Check if deprecated flow types are used and the layer is a bing-traffic layer.
82031
- // Needed for backwards compatibility in Bing styles to support deprecated flow types.
82032
- (['absolute', 'relative-delay'].includes(trafficOptions.flow) && nextLayer['source'] === "bing-traffic"))) {
82033
- setLayerVisibility(nextLayer, 'visible');
82034
- }
82035
- // Set visibility of labels
82036
- var isLabelLayerGroup = layerGroup === 'labels' || layerGroup === 'labels_places' || layerGroup === 'labels_indoor';
82037
- if (isLabelLayerGroup && nextLayer.type === 'symbol') {
82038
- var isLayerVisible = ((_a = nextLayer.layout) === null || _a === void 0 ? void 0 : _a.visibility) !== 'none';
82039
- setLayerVisibility(nextLayer, isLayerVisible && styleOptions.showLabels ? 'visible' : 'none');
82040
- }
82041
- // Once this _stylePatch returns control to maplibre the next style will be applied immediately in the same context.
82042
- // To avoid potential data races update LayerManager with new a new set of FundamentalMapLayers from here instead of
82043
- // waiting for a styledata.load event to trigger a sync in a different context.
82044
- if (layerGroupLayers[layerGroup]) {
82045
- layerGroupLayers[layerGroup].push(nextLayer);
82046
- }
82047
- else {
82048
- layerGroupLayers[layerGroup] = [nextLayer];
82049
- }
82050
- }
82051
- });
82052
- if (shouldProgressiveLoading) {
82053
- var initLayerGroups = styleOptions.progressiveLoadingInitialLayerGroups;
82054
- if (Array.isArray(initLayerGroups) && initLayerGroups.length > 0) {
82055
- this._deferLayerGroupVisibilities(layerGroupLayers, initLayerGroups);
82056
- }
82057
- }
82058
- // A FundamentalMapLayer (grouped layer) representation of the next style must be built.
82059
- var previousLayers = this.map.layers.getLayers();
82060
- var nextLayers = Object.entries(layerGroupLayers).map(function (_a) {
82061
- var _b = __read$f(_a, 2), layerGroupName = _b[0], layerGroupMapboxLayers = _b[1];
82062
- return _this._buildFundamentalLayerFrom(layerGroupMapboxLayers, layerGroupName);
82063
- });
82064
- // Update FundamentalMapLayers in LayerManager
82065
- var userLayers = this.map.layers._getUserLayers();
82066
- var layersToRemove = previousLayers.filter(function (c) {
82067
- return (nextLayers.findIndex(function (n) { return c.getId() === n.getId(); }) < 0 &&
82068
- userLayers.findIndex(function (n) { return c.getId() === n.layer.getId(); }) < 0);
82069
- });
82070
- var prevNextIntersection = nextLayers.filter(function (n) { return previousLayers.find(function (c) { return c.getId() === n.getId(); }); });
82071
- var ePrevNextIntersection = prevNextIntersection.entries();
82072
- var replace = ePrevNextIntersection.next();
82073
- nextLayers.forEach(function (newFundamentalLayer) {
82074
- if (replace.value && replace.value[1].getId() === newFundamentalLayer.getId()) {
82075
- // Replace the existing layer with this ID with the new one.
82076
- var insertBefore = previousLayers.findIndex(function (l) { return l.getId() === newFundamentalLayer.getId(); });
82077
- _this.map.layers.remove(newFundamentalLayer.getId());
82078
- _this.map.layers.add(newFundamentalLayer, previousLayers[insertBefore].getId());
82079
- replace = ePrevNextIntersection.next();
82080
- }
82081
- else {
82082
- if (replace.value) {
82083
- // Insert new layer before the next common layer.
82084
- _this.map.layers.add(newFundamentalLayer, replace.value[1]);
82085
- }
82086
- else {
82087
- _this.map.layers.add(newFundamentalLayer);
82088
- }
82089
- }
82090
- });
82091
- layersToRemove.forEach(function (layer) {
82092
- _this.map.layers.remove(layer);
82093
- });
82094
- // Layers added to mapbox through this SDK since loading the last style should be
82095
- // carried over to the next style.
82096
- userLayers.forEach(function (userLayer) {
82097
- if (userLayer.layer instanceof WebGLLayer) {
82098
- // mapbox custom layers cannot be serialized and preserved,
82099
- // return to continue to the next user layer.
82100
- return;
82101
- }
82102
- var before = undefined;
82103
- if (_this.map.layers.getLayerById(userLayer.before)) {
82104
- var beforeCandidates = _this.map.layers.getLayerById(userLayer.before)._buildLayers();
82105
- before = (beforeCandidates.length > 0) ? beforeCandidates[0] : undefined;
82106
- }
82107
- preserveLayer(userLayer.layer.getId(), before === null || before === void 0 ? void 0 : before.id);
82108
- _this.map.layers.move(userLayer.layer.getId(), userLayer.before);
82109
- });
82110
- this.map.sources._syncSources(nextStyle.sources);
82111
- // If there was a previous styledata change event attached, remove it.
82112
- // When the sprite url changes between style changes then mapbox can't perform the diff
82113
- // In such cases it recalculate the style again. Removing previous attached
82114
- // event listener makes sure that style changed event is not fired twice in these cases.
82115
- this.map.events.remove("styledata", this._onStyleData);
82116
- this.map.events.addOnce("styledata", this._onStyleData);
82117
- };
82118
82198
  StyleManager.prototype._buildFundamentalLayerFrom = function (layers, id) {
82119
82199
  if (layers && layers.length > 0) {
82120
82200
  var newLayer = new FundamentalMapLayer(layers, id);
@@ -82418,7 +82498,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
82418
82498
  }
82419
82499
  return ar;
82420
82500
  };
82421
- var __spreadArray$a = (window && window.__spreadArray) || function (to, from) {
82501
+ var __spreadArray$b = (window && window.__spreadArray) || function (to, from) {
82422
82502
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
82423
82503
  to[j] = from[i];
82424
82504
  return to;
@@ -83253,7 +83333,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
83253
83333
  urls = layer.getOptions().subdomains || [];
83254
83334
  }
83255
83335
  // Add the tile urls to the layer, but don't update the map yet.
83256
- urls.push.apply(urls, __spreadArray$a([], __read$g(tileSources)));
83336
+ urls.push.apply(urls, __spreadArray$b([], __read$g(tileSources)));
83257
83337
  layer._setOptionsNoUpdate({
83258
83338
  subdomains: urls
83259
83339
  });
@@ -83542,9 +83622,10 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
83542
83622
  Map.prototype._rebuildStyle = function (diff) {
83543
83623
  if (diff === void 0) { diff = true; }
83544
83624
  return __awaiter$5(this, void 0, void 0, function () {
83625
+ var _this = this;
83545
83626
  return __generator$5(this, function (_a) {
83546
83627
  this.styles.setStyle(this.styleOptions, diff);
83547
- this.imageSprite._restoreImages();
83628
+ this.events.addOnce("stylechanged", function () { return _this.imageSprite._restoreImages(); });
83548
83629
  return [2 /*return*/];
83549
83630
  });
83550
83631
  });
@@ -83774,7 +83855,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
83774
83855
  }
83775
83856
  return ar;
83776
83857
  };
83777
- var __spreadArray$b = (window && window.__spreadArray) || function (to, from) {
83858
+ var __spreadArray$c = (window && window.__spreadArray) || function (to, from) {
83778
83859
  for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
83779
83860
  to[j] = from[i];
83780
83861
  return to;
@@ -83920,7 +84001,7 @@ EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous po
83920
84001
  lineLength = 50;
83921
84002
  }
83922
84003
  var lines = c.split(/<(tr|div|br|li|h[0-9]|p>)/);
83923
- longestStringLength = Math.max.apply(Math, __spreadArray$b([], __read$h((lines.map(function (el) { return el.replace(/<[a-zA-Z0-9\s=\/]+>/g, "").length; }))))) - 1;
84004
+ longestStringLength = Math.max.apply(Math, __spreadArray$c([], __read$h((lines.map(function (el) { return el.replace(/<[a-zA-Z0-9\s=\/]+>/g, "").length; }))))) - 1;
83924
84005
  var w = Math.ceil(longestStringLength * 3.5);
83925
84006
  if (w < width) {
83926
84007
  width = w;