@mappedin/mappedin-js 4.0.17 → 4.0.18

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.
@@ -1 +1 @@
1
- .mMapviewHoverLabel{background:rgba(255,255,255,.9);color:#333;padding:10px;font-size:14px;font-weight:bold;transition:opacity .3s;font-family:sans-serif}.mappedin__floating-label{position:absolute;top:0px;left:0px;opacity:0;width:200px;height:200px;will-change:transform;transition:opacity .3s linear}.mappedin__floating-label__icon{position:absolute;top:0;left:0;width:16px;height:16px}.mappedin__floating-label__icon>svg{position:absolute;top:-50%;left:-50%}.mappedin__floating-label__text_holder{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;font-weight:500;position:absolute;pointer-events:none;word-break:keep-all}.mappedin__floating-label__text_legacy{text-shadow:1px 1px 0px #ffffff,-1px -1px 0px #ffffff,1px -1px 0px #ffffff,-1px 1px 0px #ffffff}.mappedin__floating-label__text_back{-webkit-text-stroke:4px white;color:#fff}.mappedin__floating-label__text_front{color:#000;position:absolute;display:block;width:100%;height:100%;top:0;left:0}.mappedin__smart-collision-engine__container{position:absolute;left:0px;top:0px;bottom:0px;right:0px;pointer-events:none;font-family:"InterUI-Regular",Helvetica,Arial,sans-serif}.mappedin__smart-collision-engine-debug__container{position:absolute;left:0px;top:0px;bottom:0px;right:0px;pointer-events:none}.mappedin-marker{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;pointer-events:none;top:0;transition:transform .3s linear;position:absolute;font-weight:bold;color:#000;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:opacity;justify-content:center}.mappedin-tooltip__wrapper{display:flex;width:1px;height:1px;align-items:center;justify-content:center;z-index:1}.mappedin-tooltip{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;pointer-events:all;top:0;transition:transform .3s linear;font-weight:bold;color:#000;position:absolute;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:transform,opacity;justify-content:center}.mappedin-tooltip>div{z-index:2;flex-shrink:0;max-width:500px;background:white;border-radius:20px;box-shadow:0 2px 11px #0003}.mappedin-tooltip:before{content:"";width:0;height:0;top:calc(50% - 10px);left:-10px;z-index:1;position:absolute;border-bottom:10px solid transparent;border-top:10px solid transparent}.mappedin-tooltip.tooltip--anchor-top{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-top:before{left:calc(50% - 10px);top:calc(100% - 5px);right:auto;border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-bottom{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-bottom:before{left:calc(50% - 10px);top:-15px;right:auto;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-right{justify-content:flex-start;left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-right:before{left:-5px;right:auto;border-right:10px solid white}.mappedin-tooltip.tooltip--anchor-left{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-left:before{left:auto;right:-5px;border-left:10px solid white}.mappedin-tooltip.tooltip--anchor-top-left{left:7px;top:7px}.mappedin-tooltip.tooltip--anchor-top-left:before{left:auto;right:-7px;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--anchor-top-right{left:-6px;top:7px}.mappedin-tooltip.tooltip--anchor-top-right:before{left:-7px;right:auto;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-left{left:7px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-left:before{left:auto;right:-7px;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-right{left:-6px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-right:before{left:-7px;right:auto;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--visible{opacity:1}
1
+ .mMapviewHoverLabel{background:rgba(255,255,255,.9);color:#333;padding:10px;font-size:14px;font-weight:bold;transition:opacity .3s;font-family:sans-serif}.mappedin__floating-label{position:absolute;top:0px;left:0px;opacity:0;width:200px;height:200px;will-change:transform;transition:opacity .3s linear}.mappedin__floating-label__icon{position:absolute;top:0;left:0;width:16px;height:16px}.mappedin__floating-label__icon>svg{position:absolute;top:-50%;left:-50%}.mappedin__floating-label__text_holder{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;font-weight:500;position:absolute;pointer-events:none;word-break:keep-all}.mappedin__floating-label__text_legacy{text-shadow:1px 1px 0px #ffffff,-1px -1px 0px #ffffff,1px -1px 0px #ffffff,-1px 1px 0px #ffffff}.mappedin__floating-label__text_back{-webkit-text-stroke:4px white;color:#fff}.mappedin__floating-label__text_front{color:#000;position:absolute;display:block;width:100%;height:100%;top:0;left:0}.mappedin__smart-collision-engine__container{position:absolute;left:0px;top:0px;bottom:0px;right:0px;pointer-events:none;font-family:"InterUI-Regular",Helvetica,Arial,sans-serif}.mappedin__smart-collision-engine-debug__container{position:absolute;left:0px;top:0px;bottom:0px;right:0px;transition:opacity .3s ease-in-out;pointer-events:none;will-change:opacity}.mappedin__smart-collision-engine-debug__container.interacting{opacity:.2}.mappedin-marker{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;pointer-events:none;top:0;transition:transform .3s linear;position:absolute;font-weight:bold;color:#000;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:opacity;justify-content:center}.mappedin-tooltip__wrapper{display:flex;width:1px;height:1px;align-items:center;justify-content:center;z-index:1}.mappedin-tooltip{font-family:"InterUI-Regular",Helvetica,Arial,sans-serif;font-weight:normal;pointer-events:all;top:0;transition:transform .3s linear;font-weight:bold;color:#000;position:absolute;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:transform,opacity;justify-content:center}.mappedin-tooltip>div{z-index:2;flex-shrink:0;max-width:500px;background:white;border-radius:20px;box-shadow:0 2px 11px #0003}.mappedin-tooltip:before{content:"";width:0;height:0;top:calc(50% - 10px);left:-10px;z-index:1;position:absolute;border-bottom:10px solid transparent;border-top:10px solid transparent}.mappedin-tooltip.tooltip--anchor-top{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-top:before{left:calc(50% - 10px);top:calc(100% - 5px);right:auto;border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-bottom{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-bottom:before{left:calc(50% - 10px);top:-15px;right:auto;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-right{justify-content:flex-start;left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-right:before{left:-5px;right:auto;border-right:10px solid white}.mappedin-tooltip.tooltip--anchor-left{left:0px;top:0px}.mappedin-tooltip.tooltip--anchor-left:before{left:auto;right:-5px;border-left:10px solid white}.mappedin-tooltip.tooltip--anchor-top-left{left:7px;top:7px}.mappedin-tooltip.tooltip--anchor-top-left:before{left:auto;right:-7px;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--anchor-top-right{left:-6px;top:7px}.mappedin-tooltip.tooltip--anchor-top-right:before{left:-7px;right:auto;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-left{left:7px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-left:before{left:auto;right:-7px;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-right{left:-6px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-right:before{left:-7px;right:auto;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--visible{opacity:1}
@@ -1357,6 +1357,7 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.Marker' {
1357
1357
  get strategies(): TColliderStrategy[];
1358
1358
  colliderDidMount(): void;
1359
1359
  setAction(action: any): void;
1360
+ colliderDidNotFindAHome(): void;
1360
1361
  colliderDidGoOffscreen(): void;
1361
1362
  colliderDidUpdateVisiblity(): void;
1362
1363
  }
@@ -1721,11 +1722,10 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.FloatingLabel'
1721
1722
  clearColor: () => void;
1722
1723
  zoomProportion: number;
1723
1724
  _cache: {};
1724
- _dirty: boolean;
1725
1725
  appearance: TAppearanceFilledIn;
1726
1726
  mapView: ICore;
1727
1727
  constructor(options: TFloatingLabelOptionsInternal, mapView: ICore);
1728
- enable(): void;
1728
+ enable(updateEngine?: boolean): void;
1729
1729
  get strategies(): TColliderStrategy[];
1730
1730
  getCachedSymbol(orientation: any, textAlign: any, xCoordinate: any): any;
1731
1731
  colliderDidMount(): void;
@@ -1734,7 +1734,7 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.FloatingLabel'
1734
1734
  colliderDidUpdateVisiblity(): void;
1735
1735
  colliderDidGoOutsideGrid(): void;
1736
1736
  colliderDidNotFindAHome(): void;
1737
- disable(): void;
1737
+ disable(updateEngine?: boolean): void;
1738
1738
  draw(context: CanvasRenderingContext2D): void;
1739
1739
  static original: FloatingLabel;
1740
1740
  static clone(options: TFloatingLabelOptionsInternal, mapView: ICore): any;
@@ -3150,9 +3150,10 @@ declare module '@mappedin/mappedin-js/get-venue/MappedinVenue' {
3150
3150
  tzidOverride: string;
3151
3151
  utcOffset: string;
3152
3152
  website: string;
3153
- constructor(data: any);
3154
- static hydrate(data: any): MappedinVenue;
3153
+ constructor(mappedin: Mappedin, data: any);
3154
+ static hydrate(data: any, mappedin: Mappedin): MappedinVenue;
3155
3155
  static fetch(mappedin: Mappedin): Promise<MappedinVenue>;
3156
+ get isMultiBuilding(): any;
3156
3157
  toJSON(): any;
3157
3158
  }
3158
3159
  }
@@ -4023,6 +4024,7 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.HTMLCollider' {
4023
4024
  declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider' {
4024
4025
  import SmartCollisionEngine from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4025
4026
  import { Vector3 } from 'three';
4027
+ import { Rectangle } from '@mappedin/mappedin-js/renderer/internal/quad-tree';
4026
4028
  export type TRange = [number, number, number, number];
4027
4029
  type TCustomCollider<T> = ICollider & T;
4028
4030
  export type TColliderStrategyProps = {
@@ -4036,6 +4038,10 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider'
4036
4038
  getBoundingBox: (TColliderStrategyProps: any) => TRange;
4037
4039
  onStrategySelected: (collider: TCustomCollider<any>) => void;
4038
4040
  };
4041
+ type TGetBoundingBox = ({ x, y }: {
4042
+ x: any;
4043
+ y: any;
4044
+ }) => [number, number, number, number];
4039
4045
  export type TDimensions = {
4040
4046
  width: number;
4041
4047
  height: number;
@@ -4048,13 +4054,19 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider'
4048
4054
  export interface ICollider {
4049
4055
  dimensions: TDimensions;
4050
4056
  screenPosition: [number, number];
4051
- currentStrategyName: string | null;
4057
+ getBoundingBoxForCurrentStrategy?: TGetBoundingBox;
4052
4058
  options?: Record<string, unknown>;
4053
4059
  mapId: string;
4054
4060
  visible: boolean;
4055
4061
  rank: number;
4056
- _dirty?: boolean;
4057
4062
  id: string;
4063
+ _bboxes?: [
4064
+ string,
4065
+ Rectangle,
4066
+ (collider: TCustomCollider<any>) => void,
4067
+ TGetBoundingBox
4068
+ ][];
4069
+ offscreen?: boolean;
4058
4070
  setAction: (action: EColliderAction) => void;
4059
4071
  action?: EColliderAction;
4060
4072
  position: Vector3;
@@ -4078,14 +4090,15 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider'
4078
4090
  __engine: any;
4079
4091
  _initialRank: number;
4080
4092
  screenPosition: [number, number];
4081
- currentStrategyName: null;
4082
4093
  enabled: boolean;
4083
4094
  options: any;
4084
4095
  mapId: string;
4085
4096
  id: string;
4086
4097
  action: EColliderAction;
4098
+ getBoundingBoxForCurrentStrategy: undefined;
4087
4099
  rank: number;
4088
4100
  visible: boolean;
4101
+ offscreen: boolean;
4089
4102
  position: Vector3;
4090
4103
  dimensions: {
4091
4104
  width: number;
@@ -5183,56 +5196,85 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionE
5183
5196
  import './Mappedin.SmartCollisionEngine.scss';
5184
5197
  import { ICollider, TRange } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
5185
5198
  import { MappedinMap, MapView } from '@mappedin/mappedin-js/renderer';
5199
+ import { ICore } from '@mappedin/mappedin-js/renderer/Core.interface';
5200
+ import { Rectangle, QuadTree } from '@mappedin/mappedin-js/renderer/internal/quad-tree';
5186
5201
  export const COLLIDER_STRATEGY_LOW_PRIORITY = "LOW_PRIORITY";
5187
5202
  class SmartCollisionEngine {
5188
- #private;
5189
- _makeCollidersDirtyThrottled: any;
5190
- colliderCanvas: HTMLCanvasElement;
5191
- debugCanvas: HTMLCanvasElement;
5192
- colliderCanvasContext: CanvasRenderingContext2D;
5193
- debugCanvasContext: CanvasRenderingContext2D;
5194
- collisionEngineContainerEl: HTMLDivElement;
5195
- stepsX: any;
5196
- stepsY: any;
5197
- totalWidth: any;
5198
- totalHeight: any;
5199
- project: any;
5200
- grid: Uint8Array;
5201
- colliders: Map<string, ICollider>;
5202
- offscreenRanges: TRange[];
5203
- get sortedColliders(): ICollider[];
5204
- initialized: boolean;
5205
- mapView: MapView;
5206
- constructor(mapView: any);
5207
- init: (container: HTMLDivElement, projectFn: ({ position, mapId }: {
5208
- position: Vector3;
5209
- mapId: MappedinMap['id'];
5210
- }) => {
5211
- x: number;
5212
- y: number;
5213
- }) => void;
5214
- updatePosition: () => void;
5215
- updateVisibility: () => void;
5216
- add: (colliderId: string, collider: ICollider) => void;
5217
- remove: (colliderId: string) => void;
5218
- /**
5219
- * When adding/removing new colliders, or when updating their priorty, we need to make all colliders around them as "dirty",
5220
- * so they can be reconcilded correctly
5221
- */
5222
- makeCollidersDirty: () => void;
5223
- /**
5224
- * Allow to throttle making collders dirty. This is useful for things like BlueDot follow mode,
5225
- * As we follow the BlueDot, colliders will overlap, but constantly updating their visiblity makes
5226
- * for a bad experience
5227
- */
5228
- makeCollidersDirtyThrottled: (time: any) => void;
5229
- resize: (container: any) => void;
5230
- update: () => void;
5231
- destroy: () => void;
5203
+ #private;
5204
+ colliderCanvas: HTMLCanvasElement;
5205
+ debugCanvas: HTMLCanvasElement;
5206
+ colliderCanvasContext: CanvasRenderingContext2D;
5207
+ debugCanvasContext: CanvasRenderingContext2D;
5208
+ collisionEngineContainerEl: HTMLDivElement;
5209
+ stepsX: any;
5210
+ stepsY: any;
5211
+ totalWidth: any;
5212
+ totalHeight: any;
5213
+ project: any;
5214
+ colliders: Map<string, ICollider>;
5215
+ offscreenRanges: TRange[];
5216
+ get sortedColliders(): ICollider[];
5217
+ initialized: boolean;
5218
+ mapView: MapView;
5219
+ core: ICore;
5220
+ screen: Rectangle;
5221
+ constructor(mapView: any, core: ICore);
5222
+ init: (container: HTMLDivElement, projectFn: ({ position, mapId }: {
5223
+ position: Vector3;
5224
+ mapId: MappedinMap['id'];
5225
+ }) => {
5226
+ x: number;
5227
+ y: number;
5228
+ }) => void;
5229
+ qtree: QuadTree;
5230
+ recompute: () => void;
5231
+ draw: () => void;
5232
+ reposition: () => void;
5233
+ add: (colliderId: string, collider: ICollider) => void;
5234
+ remove: (colliderId: string) => void;
5235
+ update: () => void;
5236
+ resize: (container: any) => void;
5237
+ destroy: () => void;
5232
5238
  }
5233
5239
  export default SmartCollisionEngine;
5234
5240
  }
5235
5241
 
5242
+ declare module '@mappedin/mappedin-js/renderer/internal/quad-tree' {
5243
+ export function contains(rect1: Rectangle, rect2: Rectangle): boolean;
5244
+ export function intersects(rect1: Rectangle, rect2: Rectangle): boolean;
5245
+ class Rectangle {
5246
+ x: number;
5247
+ y: number;
5248
+ w: number;
5249
+ h: number;
5250
+ userData?: any;
5251
+ constructor(x: number, y: number, w: number, h: number, userData?: any);
5252
+ contains(rectangle: Rectangle): boolean;
5253
+ intersects(rectangle: Rectangle): boolean;
5254
+ draw(context: CanvasRenderingContext2D): void;
5255
+ }
5256
+ class QuadTree {
5257
+ #private;
5258
+ boundary: Rectangle;
5259
+ capacity: number;
5260
+ objects: Rectangle[];
5261
+ topLeft: QuadTree;
5262
+ topRight: QuadTree;
5263
+ bottomLeft: QuadTree;
5264
+ bottomRight: QuadTree;
5265
+ divided: boolean;
5266
+ parent?: QuadTree;
5267
+ getSize(): any;
5268
+ constructor(boundary: Rectangle, parent?: QuadTree);
5269
+ subdivide(): void;
5270
+ query(rectangle: Rectangle): Rectangle[];
5271
+ insert(rectangle: Rectangle): boolean;
5272
+ drawObjects(context: CanvasRenderingContext2D): void;
5273
+ draw(context: CanvasRenderingContext2D): void;
5274
+ }
5275
+ export { QuadTree, Rectangle };
5276
+ }
5277
+
5236
5278
  declare module '@mappedin/mappedin-js/navigator/Edge' {
5237
5279
  import INode from '@mappedin/mappedin-js/navigator/interfaces/INode';
5238
5280
  import IVortex from '@mappedin/mappedin-js/navigator/interfaces/IVortex';