@focusbc/bbs-lib 0.0.5 → 0.0.7

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.
@@ -78382,6 +78382,7 @@ var OverlayDynamicLayerBuilder = class {
78382
78382
  coordinates: [[mapPolygon(segment.polygon)]],
78383
78383
  style: segment.style
78384
78384
  },
78385
+ label: segment.style?.text,
78385
78386
  type: ObjectType.POLYGON,
78386
78387
  visible: true,
78387
78388
  selectable: true,
@@ -78663,6 +78664,7 @@ var MapOverlay = class _MapOverlay {
78663
78664
  constructor(htmlElement, context, options = {}) {
78664
78665
  this._levelId = null;
78665
78666
  this._surroundings = false;
78667
+ this._blueprint = true;
78666
78668
  this._shapes = [];
78667
78669
  this._selectedShapeId = null;
78668
78670
  this._editMode = false;
@@ -78675,6 +78677,7 @@ var MapOverlay = class _MapOverlay {
78675
78677
  this._clickEvent = new Event3();
78676
78678
  this._doubleClickEvent = new Event3();
78677
78679
  this._rightClickEvent = new Event3();
78680
+ this._dropEvent = new Event3();
78678
78681
  this.onDoubleClick = (event) => {
78679
78682
  if (!(event.target instanceof HTMLCanvasElement)) {
78680
78683
  return;
@@ -78688,8 +78691,21 @@ var MapOverlay = class _MapOverlay {
78688
78691
  event.preventDefault();
78689
78692
  this._rightClickEvent.emit(this.createPointerEventFromMouseEvent(event));
78690
78693
  };
78694
+ this.onDragOver = (event) => {
78695
+ event.preventDefault();
78696
+ if (event.dataTransfer) {
78697
+ event.dataTransfer.dropEffect = "copy";
78698
+ }
78699
+ };
78700
+ this.onDrop = (event) => {
78701
+ event.preventDefault();
78702
+ this._dropEvent.emit({
78703
+ ...this.createPointerEventFromMouseEvent(event),
78704
+ dataTransfer: event.dataTransfer
78705
+ });
78706
+ };
78691
78707
  const { zoom, heading, tilt } = options;
78692
- const { center: center3, defaultLevelId } = context;
78708
+ const { center: center3, defaultLevelId, rotation } = context;
78693
78709
  this._context = context;
78694
78710
  this._htmlElement = htmlElement;
78695
78711
  this._levelId = defaultLevelId;
@@ -78697,7 +78713,7 @@ var MapOverlay = class _MapOverlay {
78697
78713
  zoom: zoom ?? DEFAULT_ZOOM,
78698
78714
  latitude: center3?.lat ?? 0,
78699
78715
  longitude: center3?.lng ?? 0,
78700
- bearing: heading ?? 0,
78716
+ bearing: (heading || rotation) ?? 0,
78701
78717
  pitch: tilt ?? 0,
78702
78718
  maxZoom: MAX_ZOOM
78703
78719
  };
@@ -78722,6 +78738,8 @@ var MapOverlay = class _MapOverlay {
78722
78738
  });
78723
78739
  this._htmlElement.addEventListener("dblclick", this.onDoubleClick, true);
78724
78740
  this._htmlElement.addEventListener("contextmenu", this.onRightClick, true);
78741
+ this._htmlElement.addEventListener("dragover", this.onDragOver, true);
78742
+ this._htmlElement.addEventListener("drop", this.onDrop, true);
78725
78743
  }
78726
78744
  // #region Private methods
78727
78745
  /**
@@ -78734,20 +78752,21 @@ var MapOverlay = class _MapOverlay {
78734
78752
  this._zoomChangedEvent.emit(this._viewState.zoom ?? DEFAULT_ZOOM);
78735
78753
  }
78736
78754
  createLayers() {
78737
- return [
78738
- new OverlayDynamicLayerBuilder(this._shapes).setSelectedShapeId(this._selectedShapeId).setEdit(this._editMode).setOnSelect(this.onClick.bind(this)).setOnEdit(this.onEdit.bind(this)).build(),
78739
- ...new OverlayStaticLayerBuilder(this._context.apiUrl, this._context.apiKey, this._levelId).setLayers(this._context.staticLayers).setSurroundings(this._surroundings).build()
78740
- ];
78755
+ let staticLayers = [];
78756
+ const dynamicLayer = new OverlayDynamicLayerBuilder(this._shapes).setSelectedShapeId(this._selectedShapeId).setEdit(this._editMode).setOnSelect(this.onClick.bind(this)).setOnEdit(this.onEdit.bind(this)).build();
78757
+ if (this._blueprint) {
78758
+ staticLayers = new OverlayStaticLayerBuilder(this._context.apiUrl, this._context.apiKey, this._levelId).setLayers(this._context.staticLayers).setSurroundings(this._surroundings).build();
78759
+ }
78760
+ return [dynamicLayer, ...staticLayers];
78741
78761
  }
78742
78762
  rebuildLayers() {
78743
78763
  this._deck.setProps({ layers: this.createLayers() });
78744
78764
  }
78745
78765
  createPointerEventFromMouseEvent(event) {
78766
+ const { lat, lng } = this.getCoordinatesAt(event.clientX, event.clientY);
78746
78767
  const bounds = this._htmlElement.getBoundingClientRect();
78747
78768
  const x2 = event.clientX - bounds.left;
78748
78769
  const y2 = event.clientY - bounds.top;
78749
- const viewport = this._deck.getViewports()?.[0];
78750
- const [lng, lat] = viewport ? viewport.unproject([x2, y2]) : [this.getCenter().lng, this.getCenter().lat];
78751
78770
  const picked = this._deck.pickObject({ x: x2, y: y2 })?.object;
78752
78771
  return {
78753
78772
  lat,
@@ -78757,6 +78776,18 @@ var MapOverlay = class _MapOverlay {
78757
78776
  shape: picked?.groupId ? this._shapes.find((shape) => shape.id === picked.groupId) : void 0
78758
78777
  };
78759
78778
  }
78779
+ /**
78780
+ * Returns the geographic coordinates for a viewport pixel at the given client coordinates.
78781
+ */
78782
+ getCoordinatesAt(clientX, clientY) {
78783
+ const bounds = this._htmlElement.getBoundingClientRect();
78784
+ const viewport = this._deck.getViewports()?.[0];
78785
+ if (!viewport) {
78786
+ return this.getCenter();
78787
+ }
78788
+ const [lng, lat] = viewport.unproject([clientX - bounds.left, clientY - bounds.top]);
78789
+ return { lat, lng };
78790
+ }
78760
78791
  /**
78761
78792
  * Handle the click event.
78762
78793
  */
@@ -78838,17 +78869,20 @@ var MapOverlay = class _MapOverlay {
78838
78869
  finalize() {
78839
78870
  this._htmlElement.removeEventListener("dblclick", this.onDoubleClick, true);
78840
78871
  this._htmlElement.removeEventListener("contextmenu", this.onRightClick, true);
78872
+ this._htmlElement.removeEventListener("dragover", this.onDragOver, true);
78873
+ this._htmlElement.removeEventListener("drop", this.onDrop, true);
78841
78874
  this._deck.finalize();
78842
78875
  }
78843
78876
  //#region Getters and Setters
78844
78877
  setContext(context) {
78845
- const { center: center3, defaultLevelId } = context;
78878
+ const { center: center3, defaultLevelId, rotation } = context;
78846
78879
  this._context = context;
78847
78880
  this._levelId = defaultLevelId;
78848
78881
  this._viewState = {
78849
78882
  ...this._viewState,
78850
78883
  latitude: center3.lat ?? 0,
78851
- longitude: center3.lng ?? 0
78884
+ longitude: center3.lng ?? 0,
78885
+ bearing: rotation ?? this._viewState.bearing ?? 0
78852
78886
  };
78853
78887
  this._deck.setProps({ viewState: this._viewState });
78854
78888
  this.rebuildLayers();
@@ -78864,6 +78898,13 @@ var MapOverlay = class _MapOverlay {
78864
78898
  this._surroundings = active;
78865
78899
  this.rebuildLayers();
78866
78900
  }
78901
+ getBlueprint() {
78902
+ return this._blueprint;
78903
+ }
78904
+ setBlueprint(active) {
78905
+ this._blueprint = active;
78906
+ this.rebuildLayers();
78907
+ }
78867
78908
  getLevelId() {
78868
78909
  return this._levelId;
78869
78910
  }
@@ -78953,6 +78994,9 @@ var MapOverlay = class _MapOverlay {
78953
78994
  rightClick() {
78954
78995
  return this._rightClickEvent;
78955
78996
  }
78997
+ drop() {
78998
+ return this._dropEvent;
78999
+ }
78956
79000
  //#endregion
78957
79001
  //#endregion
78958
79002
  };