mahal_map 1.6.23 → 1.6.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.
package/README.md CHANGED
@@ -938,7 +938,26 @@ const measureTool = new MeasureTool(map, {
938
938
  | `removePoint(shapeId, pointId)` | Удаляет одну точку фигуры. |
939
939
  | `clearAll()` | Удаляет все фигуры и черновик. |
940
940
  | `getState()` | Возвращает текущий `MeasureState` (снимок, без подписки). |
941
- | `destroy()` | Полностью снимает слои, обработчики и DOM-бейджи. Вызывать при размонтировании. |
941
+ | `setStyleOptions(style)` | Обновляет палитру (частично, `Partial<MeasureStyleOptions>`) без пересоздания инструмента: перекрашивает существующие слои и бейджи. Нужен при смене темы карты. |
942
+ | `refresh()` | Пересоздает источники/слои и перерисовывает фигуры. Инструмент делает это сам после `setStyle()`; метод оставлен как страховка. |
943
+ | `destroy()` | Полностью снимает слои, обработчики и DOM-бейджи. Вызывать при размонтировании. Повторный вызов безопасен. |
944
+
945
+ ### Смена стиля карты (тема, язык)
946
+
947
+ `map.setStyle()` — а значит и `mahalMap.setStyle('dark')`, и смена языка — применяется MapLibre диффом: все слои, добавленные в рантайме, удаляются как отсутствующие в новом стиле, и событие `style.load` при этом не эмитится. `MeasureTool` переживает это сам: он слушает `styledata` и восстанавливает источники/слои с теми же id, а `render()` создает недостающие слои при каждой отрисовке. Фигуры, черновик и `getState()` не меняются, лишних `onChange` не будет.
948
+
949
+ Хосту делать ничего не нужно — обходы вида `map.fire('style.load')` после `setStyle()` можно убирать. Цвета за темой карты не следуют автоматически: после переключения вызовите `setStyleOptions()` с новой палитрой.
950
+
951
+ ```ts
952
+ mahalMap.setStyle("dark");
953
+ measureTool.setStyleOptions({
954
+ lineColor: "#4ADE80",
955
+ pointStrokeColor: "#4ADE80",
956
+ fillColor: "#4ADE80",
957
+ badgeBackground: "#19191A",
958
+ badgeTextColor: "#FFFFFF",
959
+ });
960
+ ```
942
961
 
943
962
  ### Взаимодействие на карте
944
963
 
package/dist/index.d.mts CHANGED
@@ -403,6 +403,8 @@ declare class MeasureTool {
403
403
  private labels;
404
404
  private originalCursor;
405
405
  private layerHandlersBound;
406
+ private destroyed;
407
+ private ensuringLayers;
406
408
  private pointsSourceId;
407
409
  private linesSourceId;
408
410
  private fillsSourceId;
@@ -435,6 +437,7 @@ declare class MeasureTool {
435
437
  private handleLineMouseLeave;
436
438
  private handleLineMouseDown;
437
439
  private handleStyleLoad;
440
+ private handleStyleData;
438
441
  private handleViewportChange;
439
442
  constructor(map: Map, options?: MeasureToolOptions);
440
443
  private bindLayerHandlers;
@@ -446,6 +449,17 @@ declare class MeasureTool {
446
449
  removeShape(shapeId: string): void;
447
450
  removePoint(shapeId: string, pointId: string): void;
448
451
  clearAll(): void;
452
+ /**
453
+ * Пересоздаёт источники/слои (если их снёс дифф стиля) и перерисовывает
454
+ * текущее состояние. Инструмент вызывает это сам по styledata; метод публичен
455
+ * как страховка для хоста после setStyle()/setLanguage().
456
+ */
457
+ refresh(): void;
458
+ /**
459
+ * Обновляет палитру инструмента без пересоздания: применяет paint-свойства к
460
+ * уже существующим слоям и перекрашивает бейджи. Нужен при смене темы карты.
461
+ */
462
+ setStyleOptions(style: MeasureStyleOptions): void;
449
463
  getState(): MeasureState;
450
464
  destroy(): void;
451
465
  private cloneShape;
@@ -472,8 +486,11 @@ declare class MeasureTool {
472
486
  private onPointContextMenu;
473
487
  private setCursor;
474
488
  private onStyleLoad;
489
+ private isMapUsable;
475
490
  private emitChange;
476
491
  private ensureLayers;
492
+ private createMissingLayers;
493
+ private applyPaintStyle;
477
494
  private removeLayers;
478
495
  private setSourceData;
479
496
  private buildLineFeature;
package/dist/index.d.ts CHANGED
@@ -403,6 +403,8 @@ declare class MeasureTool {
403
403
  private labels;
404
404
  private originalCursor;
405
405
  private layerHandlersBound;
406
+ private destroyed;
407
+ private ensuringLayers;
406
408
  private pointsSourceId;
407
409
  private linesSourceId;
408
410
  private fillsSourceId;
@@ -435,6 +437,7 @@ declare class MeasureTool {
435
437
  private handleLineMouseLeave;
436
438
  private handleLineMouseDown;
437
439
  private handleStyleLoad;
440
+ private handleStyleData;
438
441
  private handleViewportChange;
439
442
  constructor(map: Map, options?: MeasureToolOptions);
440
443
  private bindLayerHandlers;
@@ -446,6 +449,17 @@ declare class MeasureTool {
446
449
  removeShape(shapeId: string): void;
447
450
  removePoint(shapeId: string, pointId: string): void;
448
451
  clearAll(): void;
452
+ /**
453
+ * Пересоздаёт источники/слои (если их снёс дифф стиля) и перерисовывает
454
+ * текущее состояние. Инструмент вызывает это сам по styledata; метод публичен
455
+ * как страховка для хоста после setStyle()/setLanguage().
456
+ */
457
+ refresh(): void;
458
+ /**
459
+ * Обновляет палитру инструмента без пересоздания: применяет paint-свойства к
460
+ * уже существующим слоям и перекрашивает бейджи. Нужен при смене темы карты.
461
+ */
462
+ setStyleOptions(style: MeasureStyleOptions): void;
449
463
  getState(): MeasureState;
450
464
  destroy(): void;
451
465
  private cloneShape;
@@ -472,8 +486,11 @@ declare class MeasureTool {
472
486
  private onPointContextMenu;
473
487
  private setCursor;
474
488
  private onStyleLoad;
489
+ private isMapUsable;
475
490
  private emitChange;
476
491
  private ensureLayers;
492
+ private createMissingLayers;
493
+ private applyPaintStyle;
477
494
  private removeLayers;
478
495
  private setSourceData;
479
496
  private buildLineFeature;