@mappedin/react-native-sdk 5.18.0 → 5.19.0

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/index.d.ts CHANGED
@@ -7,6 +7,9 @@
7
7
  // ../@mappedin/mvf
8
8
  // ../@tweenjs/tween.js
9
9
  // ../minisearch
10
+ // ../geojson
11
+ // ../n8ao
12
+ // ../postprocessing
10
13
 
11
14
  declare module '@mappedin/react-native-sdk' {
12
15
  export { MiMapView } from '@mappedin/react-native-sdk/wrappers/react-native-sdk/src/MiMapView';
@@ -126,7 +129,7 @@ declare module '@mappedin/react-native-sdk/wrappers/react-native-sdk/src/MiMapVi
126
129
  /**
127
130
  * @category Component
128
131
  */
129
- export const MiMapView: React.MemoExoticComponent<React.ForwardRefExoticComponent<Pick<TMiMapViewProps, "options" | "style" | "onClick" | "onFirstMapLoaded" | "venueData" | "onPolygonClicked" | "onBlueDotStateChanged" | "onBlueDotPositionUpdated" | "onCameraChanged" | "onDataLoaded" | "onNothingClicked" | "onMapChanged" | "onStateChanged" | "onVenueLoadError"> & React.RefAttributes<MapViewStore>>>;
132
+ export const MiMapView: React.MemoExoticComponent<React.ForwardRefExoticComponent<Pick<TMiMapViewProps, "options" | "onClick" | "style" | "onFirstMapLoaded" | "venueData" | "onPolygonClicked" | "onBlueDotStateChanged" | "onBlueDotPositionUpdated" | "onCameraChanged" | "onDataLoaded" | "onNothingClicked" | "onMapChanged" | "onStateChanged" | "onVenueLoadError"> & React.RefAttributes<MapViewStore>>>;
130
133
  }
131
134
 
132
135
  declare module '@mappedin/react-native-sdk/wrappers/react-native-sdk/src/MiMiniMap' {
@@ -625,12 +628,13 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.types'
625
628
  import type { Euler, Object3D, Vector3 } from 'three';
626
629
  import type { Path } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PathsController';
627
630
  import { TOOLTIP_ANCHOR } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.SmartTooltip';
628
- import { GEOLOCATION_STATUS, COLLISION_RANKING_TIERS, STATE, MARKER_ANCHOR, E_SDK_EVENT, E_BLUEDOT_EVENT, E_CAMERA_EVENT, MAP_RENDER_MODE, CAMERA_EASING_MODE } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
631
+ import { GEOLOCATION_STATUS, COLLISION_RANKING_TIERS, STATE, MARKER_ANCHOR, E_SDK_EVENT, E_BLUEDOT_EVENT, E_CAMERA_EVENT, MAP_RENDER_MODE, CAMERA_EASING_MODE, E_MAP_CHANGED_REASON } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
629
632
  import { TOutdoorViewControllerOptions } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/OutdoorViewController';
630
633
  export type { TEnableBlueDotOptions, TFloatingLabelAppearance };
631
634
  export type Without<T, U> = {
632
635
  [P in Exclude<keyof T, keyof U>]?: never;
633
636
  };
637
+ /** @internal */
634
638
  export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
635
639
  /**
636
640
  An extension of the GeolocationPosition type.
@@ -1014,6 +1018,32 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.types'
1014
1018
  outdoorView?: TOutdoorViewControllerOptions & {
1015
1019
  enabled?: boolean;
1016
1020
  };
1021
+ /**
1022
+ * @experimental
1023
+ */
1024
+ dynamicFocus?: {
1025
+ /**
1026
+ * The Dynamic Focus Map to always be visible
1027
+ */
1028
+ baseMap?: MappedinMap;
1029
+ /**
1030
+ * Mercator Zoom level where the indoors are fully visible
1031
+ */
1032
+ indoorsFullyVisibleZoomLevel?: number;
1033
+ /**
1034
+ * Mercator Zoom level when the outdoors geometry is fully visible
1035
+ */
1036
+ buildingFullyVisibleZoomLevel?: number;
1037
+ /**
1038
+ * Level at which the map is "set", and colliders become visible
1039
+ */
1040
+ setMapAtZoomLevel?: number;
1041
+ /**
1042
+ * Whether we should preload the default maps of each building
1043
+ * This will incur a cost up-front, but make transitions smoother
1044
+ */
1045
+ preloadDefaultMaps?: boolean;
1046
+ };
1017
1047
  /**
1018
1048
  * First map to be rendered
1019
1049
  */
@@ -1309,7 +1339,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.types'
1309
1339
  }[];
1310
1340
  /**
1311
1341
  * A list of paths that a user's click pass through. These are in order of first
1312
- * to last intersected. Willbe empty if no paths were clicked.
1342
+ * to last intersected. Will be empty if no paths were clicked.
1313
1343
  */
1314
1344
  paths?: Path[];
1315
1345
  };
@@ -1323,6 +1353,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.types'
1323
1353
  [E_SDK_EVENT.NOTHING_CLICKED]: undefined;
1324
1354
  [E_SDK_EVENT.OUTDOOR_VIEW_LOADED]: undefined;
1325
1355
  [E_SDK_EVENT.MAP_CHANGED]: MappedinMap;
1356
+ [E_SDK_EVENT.MAP_CHANGED_WITH_REASON]: {
1357
+ map: MappedinMap;
1358
+ reason?: E_MAP_CHANGED_REASON;
1359
+ };
1326
1360
  };
1327
1361
  /**
1328
1362
  * Arguments that get passed to listeners of an {@link E_BLUEDOT_EVENT}.
@@ -1461,8 +1495,18 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue' {
1461
1495
  /**
1462
1496
  * @experimental
1463
1497
  * Enable multi-buffer rendering
1498
+ *
1499
+ * Multi-buffer rendering should improve performance but may cause issues on older GPUs/browsers
1500
+ * @default false
1464
1501
  */
1465
1502
  multiBufferRendering?: boolean;
1503
+ /**
1504
+ * @experimental
1505
+ * Journey path will be visible through other objects. Note: this is on by default, but requires the
1506
+ * `multiBufferRendering` option (which is off by default) to be turned on.
1507
+ * @default true
1508
+ */
1509
+ xRayPath?: boolean;
1466
1510
  };
1467
1511
  export { MAP_RENDER_MODE };
1468
1512
  /**
@@ -1675,6 +1719,12 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums'
1675
1719
  * Emitted when the map is changed
1676
1720
  */
1677
1721
  MAP_CHANGED = "MAP_CHANGED",
1722
+ /**
1723
+ * Emitted when the map is changed, plus the context in which it was changed. This is typically so developers can
1724
+ * determine why the map was changed, such as a user clicking a connection, or the blue dot detecting a floor change, among others.
1725
+ * See {@link E_MAP_CHANGED_REASON}.
1726
+ */
1727
+ MAP_CHANGED_WITH_REASON = "MAP_CHANGED_WITH_REASON",
1678
1728
  /**
1679
1729
  * Emitted when the outdoor view is ready. All currently requested tiles have loaded, and all fade and transition
1680
1730
  * animations have completed. {@link showVenue} is resolved when the indoor map is ready even if the outdoor tiles are not yet loaded.
@@ -1767,6 +1817,23 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums'
1767
1817
  */
1768
1818
  ZOOMED_IN = "ZOOMED_IN"
1769
1819
  }
1820
+ /**
1821
+ * A reason why the SDK changed the map. See {@link E_SDK_EVENT.MAP_CHANGED_WITH_REASON}.
1822
+ */
1823
+ export enum E_MAP_CHANGED_REASON {
1824
+ /**
1825
+ * When in Dynamic Focus mode, and the user pans or zooms to a map
1826
+ */
1827
+ DYNAMIC_FOCUS_USER_INTERACTION = "dynamic-focus-user-interaction",
1828
+ /**
1829
+ * When BlueDot is in FOLLOW mode, and the level changes
1830
+ */
1831
+ BLUE_DOT_LEVEL_TRANSITION = "blue-dot-level-transition",
1832
+ /**
1833
+ * When clicking on the default Journey connection markers
1834
+ */
1835
+ JOURNEY_CONNECTION_CLICK = "journey-connection-click"
1836
+ }
1770
1837
  }
1771
1838
 
1772
1839
  declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/FlatLabels' {
@@ -2055,6 +2122,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
2055
2122
  * or {@link MappedinCoordinate}.
2056
2123
  */
2057
2124
  minZoom?: number;
2125
+ /**
2126
+ * The maximum zoom level the camera is allowed to change to when focusing on targets.
2127
+ */
2128
+ maxZoom?: number;
2058
2129
  /**
2059
2130
  * Specify the rotation the camera makes during the focusing animation.
2060
2131
  */
@@ -2147,6 +2218,8 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
2147
2218
  bottom: number;
2148
2219
  right: number;
2149
2220
  }): void;
2221
+ convertZoomLevelToAltitude(zoomLevel: number): any;
2222
+ convertAltitudeToZoomLevel(altitude: number): any;
2150
2223
  getSafeAreaInsets(): import("../../MapView.types").TPadding;
2151
2224
  /**
2152
2225
  * Focus the Camera view on a collection of targets and animate to that state.
@@ -2771,11 +2844,13 @@ declare module '@mappedin/react-native-sdk/wrappers/common/pub-sub' {
2771
2844
  }
2772
2845
 
2773
2846
  declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.interface' {
2774
- import { Vector2, Vector3, Mesh } from 'three';
2775
- import type { TPadding, TGetPolygonsAtCoordinateOptions, TMapViewOptions, TileManager, BillboardManager, StackedMapsController, SmartCollisionEngine, OutdoorViewController } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
2847
+ import { Color, Vector2, Vector3, Mesh } from 'three';
2848
+ import type { TPadding, TGetPolygonsAtCoordinateOptions, TMapViewOptions, TileManager, BillboardManager, StackedMapsController, SmartCollisionEngine, OutdoorViewController, LayerController } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
2776
2849
  import { BlueDotController, CameraController, STATE, MappedinMap, Mappedin, MappedinCoordinate, MappedinPolygon, MappedinNode, changeListenerFn, RENDER, INTERNAL_EVENT_PAYLOAD, INTERNAL_EVENT, TaskScheduler, SceneManager, PubSub, FlatLabel, MapObject, PathsController, FloatingLabelsController, FlatLabelsController, PolygonColorsController, MarkersController, PolygonInteractionController, TooltipsController, PolygonStatesController, PolygonImagesController, ThreeDMarkersController, EventSystem } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
2777
2850
  import Tween, { Easing } from '@tweenjs/tween.js';
2778
2851
  import WatermarkController from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/WatermarkController';
2852
+ import PolygonHoverColorsController from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonHoverColorsController';
2853
+ import { E_MAP_CHANGED_REASON } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
2779
2854
  export type TFocusOptionsLegacy = {
2780
2855
  /**
2781
2856
  * An array of Nodes to focus in on
@@ -2816,6 +2891,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
2816
2891
  * @defaultValue: 0
2817
2892
  */
2818
2893
  minZoom?: number;
2894
+ maxZoom?: number;
2819
2895
  /**
2820
2896
  * Whether {@link Camera.minZoom} and {@link Camera.maxZoom} should be recalculated during the focusing animation.
2821
2897
  */
@@ -2842,6 +2918,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
2842
2918
  flatLabels: FlatLabelsController;
2843
2919
  paths: PathsController;
2844
2920
  polygonColors: PolygonColorsController;
2921
+ polygonHoverColors: PolygonHoverColorsController;
2845
2922
  polygonInteraction: PolygonInteractionController;
2846
2923
  polygonStates: PolygonStatesController;
2847
2924
  polygonImages: PolygonImagesController;
@@ -2855,6 +2932,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
2855
2932
  stackedMaps: StackedMapsController;
2856
2933
  outdoorViewController?: OutdoorViewController;
2857
2934
  watermark: WatermarkController;
2935
+ layerController: LayerController;
2858
2936
  state: STATE;
2859
2937
  options: TMapViewOptions & {
2860
2938
  onDataLoaded?: (data: Mappedin) => void;
@@ -2877,6 +2955,12 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
2877
2955
  resolution: Vector2;
2878
2956
  determineNewLabelSize: any;
2879
2957
  visibleMapsInCurrentScene: MappedinMap[];
2958
+ visibleLayersInCurrentScene: {
2959
+ [mapId: string]: MappedinPolygon['layer'][];
2960
+ };
2961
+ visibleMapObjectsInCurrentScene: MapObject[];
2962
+ mapSetInProgress: Promise<undefined>;
2963
+ mapSetResolved: (...args: any[]) => any;
2880
2964
  on<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, fn: (payload: INTERNAL_EVENT_PAYLOAD[EVENT_NAME] extends {
2881
2965
  data: null;
2882
2966
  } ? INTERNAL_EVENT_PAYLOAD[EVENT_NAME]['data'] : INTERNAL_EVENT_PAYLOAD[EVENT_NAME]) => void): void;
@@ -2973,7 +3057,15 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
2973
3057
  getPolygonsAtCoordinate(coordinate: MappedinCoordinate, options?: TGetPolygonsAtCoordinateOptions): MappedinPolygon[];
2974
3058
  currentInteractionEvent: INTERNAL_EVENT | undefined;
2975
3059
  interactivePolygons: Record<string, boolean>;
3060
+ /**
3061
+ * An object containing polygon ids and their hover colors.
3062
+ */
3063
+ polygonHoverColorsById: Record<string, Color>;
2976
3064
  highlightedPolygons: Record<string, string>;
3065
+ /**
3066
+ * An object containing all outlined polygons.
3067
+ */
3068
+ outlinedPolygons: Map<string, MappedinPolygon>;
2977
3069
  cameraPlane: any;
2978
3070
  getPositionLatLon(lat: number, lon: number, map?: MappedinMap | string | null): Vector3;
2979
3071
  currentScale: number;
@@ -3011,7 +3103,9 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core.i
3011
3103
  * Ignored in 2D.
3012
3104
  */
3013
3105
  tryRendering(renderMode?: RENDER): void;
3106
+ setMapReason?: E_MAP_CHANGED_REASON;
3014
3107
  setMap(mapOrMapId: MappedinMap | string): Promise<null>;
3108
+ setMapWithReason(mapOrMapId: MappedinMap | string, context: E_MAP_CHANGED_REASON): Promise<null>;
3015
3109
  getPositionNode(node: MappedinNode): Vector3;
3016
3110
  cameraObject: any;
3017
3111
  setBackgroundColor(color: string, alpha?: number): void;
@@ -3877,7 +3971,6 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
3877
3971
  invalidate(): void;
3878
3972
  colliderDidMount(): void;
3879
3973
  colliderDidUpdatePosition(pos: any): void;
3880
- setPriority(priority: any): void;
3881
3974
  colliderDidUpdateVisiblity(): void;
3882
3975
  colliderDidGoOutsideGrid(): void;
3883
3976
  colliderDidNotFindAHome(): void;
@@ -4272,6 +4365,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
4272
4365
  export type TOutdoorViewControllerOptionsWithHeaders = {
4273
4366
  url?: string;
4274
4367
  attributionPosition?: TAttributionPosition;
4368
+ customAttribution?: string | string[];
4275
4369
  headers: {
4276
4370
  [key: string]: string | null;
4277
4371
  };
@@ -4279,6 +4373,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
4279
4373
  export type TOutdoorViewControllerOptionsWithAuthURL = {
4280
4374
  url?: string;
4281
4375
  authURL?: string;
4376
+ customAttribution?: string | string[];
4282
4377
  attributionPosition?: TAttributionPosition;
4283
4378
  };
4284
4379
  export type TOutdoorViewControllerOptions = XOR<TOutdoorViewControllerOptionsWithHeaders, TOutdoorViewControllerOptionsWithAuthURL>;
@@ -4290,6 +4385,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
4290
4385
  url: string;
4291
4386
  authURL: string;
4292
4387
  headers?: TOutdoorViewControllerOptions['headers'];
4388
+ customAttribution?: string | string[];
4293
4389
  attributionPosition?: TAttributionPosition;
4294
4390
  loaded: boolean;
4295
4391
  constructor(core: ICore, options?: TOutdoorViewControllerOptions);
@@ -4496,7 +4592,11 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin' {
4496
4592
  import { MappedinVortex } from '@mappedin/react-native-sdk/core/packages/get-venue/MappedinVortex';
4497
4593
  import { IAnalytics } from '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin.CustomerAnalytics';
4498
4594
  import { ParsedMVF } from '@mappedin/mvf';
4595
+ import { ParsedMVFv1 } from '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin.MVF.types';
4499
4596
  export const defaultOptions: TGetVenueOptionsInternal & TGetVenueOptions;
4597
+ /**
4598
+ * @internal
4599
+ */
4500
4600
  export enum MappedinCollectionType {
4501
4601
  CATEGORY = "categories",
4502
4602
  EVENT = "events",
@@ -4732,6 +4832,11 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin' {
4732
4832
  * @internal
4733
4833
  */
4734
4834
  hydrateFromMVF(mvfData: ParsedMVF): Promise<undefined>;
4835
+ /**
4836
+ * @hidden
4837
+ * @internal
4838
+ */
4839
+ hydrateFromMVFv1(mvfData: ParsedMVFv1): Promise<undefined>;
4735
4840
  /**
4736
4841
  *
4737
4842
  * @experimental Hydrate the Mappedin instance using a response from either {@link Mappedin.toString}, {@link getVenueBundle} or by downloading the bundle manually
@@ -4814,6 +4919,10 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue/MappedinLocat
4814
4919
  shortName?: string;
4815
4920
  detailsUrl?: string;
4816
4921
  tags?: string[];
4922
+ /**
4923
+ * @internal
4924
+ */
4925
+ toMap?: string;
4817
4926
  externalId?: string;
4818
4927
  showLabelWhenImagePresent?: boolean;
4819
4928
  showSmartLabelWhenImagePresent?: boolean;
@@ -5148,6 +5257,13 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue/MappedinCateg
5148
5257
  * @type [MappedinLocation]
5149
5258
  */
5150
5259
  get locations(): MappedinLocation[];
5260
+ /**
5261
+ * Children of this Category.
5262
+ *
5263
+ * @property children
5264
+ * @type [MappedinCategory]
5265
+ */
5266
+ get children(): MappedinCategory[];
5151
5267
  static hydrate(categories: any, mappedin: Mappedin): MappedinCategory[];
5152
5268
  static fetch(mappedin: Mappedin): Promise<MappedinCategory[]>;
5153
5269
  toJSON(): any;
@@ -6331,6 +6447,7 @@ declare module '@mappedin/react-native-sdk/core/packages/navigator/NavigationGra
6331
6447
  declare module '@mappedin/react-native-sdk/core/packages/navigator/Navigator' {
6332
6448
  import Directive from '@mappedin/react-native-sdk/core/packages/navigator/Directive';
6333
6449
  import Edge from '@mappedin/react-native-sdk/core/packages/navigator/Edge';
6450
+ import { TCoordinate } from '@mappedin/react-native-sdk/core/packages/navigator/Navigator.utils';
6334
6451
  import ILocation from '@mappedin/react-native-sdk/core/packages/navigator/interfaces/ILocation';
6335
6452
  import IMap from '@mappedin/react-native-sdk/core/packages/navigator/interfaces/IMap';
6336
6453
  import INode from '@mappedin/react-native-sdk/core/packages/navigator/interfaces/INode';
@@ -6396,6 +6513,11 @@ declare module '@mappedin/react-native-sdk/core/packages/navigator/Navigator' {
6396
6513
  arriveAt?: ILocation;
6397
6514
  simplify?: TSimplifyDirectionsOptions;
6398
6515
  }): IDirectionsResult;
6516
+ /**
6517
+ * Iterates through each N step node and determines if a direct line to the next M step node intersects any polygons.
6518
+ * If it doesn't, remove all steps between the two.
6519
+ */
6520
+ simplifySteps(steps: Edge[], geometryEdges: TCoordinate[][], bufferRadius: number): Edge[];
6399
6521
  }
6400
6522
  export default Navigator;
6401
6523
  }
@@ -6489,13 +6611,16 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6489
6611
  import { Texture } from 'three';
6490
6612
  import { STATE } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
6491
6613
  import { TMapClickEvent } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.types';
6614
+ import { MappedinMap } from '@mappedin/react-native-sdk/core/packages/get-venue';
6492
6615
  export { MappedinMap, Mappedin, MappedinCoordinate, MappedinPolygon, MappedinNode } from '@mappedin/react-native-sdk/core/packages/get-venue';
6493
6616
  export type { TEnableBlueDotOptions, TFloatingLabelAppearance, TGeolocationObject, TPathOptions, TConnectionProps, TConnectionTemplateFn, TMarkerTemplateProps, TMarkerTemplateFn, TJourneyOptions, TPadding, TCreateMarkerOptions, TAnimationOptions, TCreateTooltipInternalOptions, TCreateTooltipCommonOptions, TCreateTooltipOptions, TCreateTextTooltipOptions, TCreateCustomInnerHTMLTooltipOptions, TCreateCustomTooltipOptions, TCreateThreeDMarkerOptions, TGetPolygonsAtCoordinateOptions, TMapViewOptions, TMapViewOptionsLegacy, TFlatLabelOptions, TFlatLabelAppearance, TFloatingLabelPolygonOptions, TAddFlatLabelOptions, TAddFloatingLabelOptions, TLabelAllLocationCommonOptions, TLabelAllLocationFloatingLabelOptions, TLabelAllLocationFlatLabelOptions, TFloatingLabelAllLocationsOptions, TFlatLabelAllLocationsOptions, changeListenerFn, TMapClickEvent, E_SDK_EVENT_PAYLOAD, E_BLUEDOT_EVENT_PAYLOAD, CAMERA_EVENT_PAYLOAD, } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.types';
6494
6617
  export { labelThemes } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.types';
6495
6618
  export { GEOLOCATION_STATUS, COLLISION_RANKING_TIERS, E_BLUEDOT_STATE_REASON, E_BLUEDOT_STATE, E_BLUEDOT_MARKER_STATE, STATE, MARKER_ANCHOR, E_SDK_EVENT, E_BLUEDOT_EVENT, E_CAMERA_EVENT, E_CAMERA_DIRECTION, SAFE_AREA_INSET_TYPE, CAMERA_EASING_MODE, MAP_RENDER_MODE, ANIMATION_TWEENS, STACKED_MAPS_STATE, } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
6619
+ export { default as JSONSceneLoader } from '@mappedin/react-native-sdk/core/packages/renderer/internal/json-scene-loader';
6496
6620
  export { default as RENDER } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.RenderTasks';
6497
6621
  export { FrameUpdate, FrameTask, TaskScheduler } from '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin.TaskScheduler';
6498
6622
  export { default as SceneManager } from '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/MapView.SceneManager';
6623
+ export { default as DynamicFocusSceneManager } from '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/MapView.DynamicFocusSceneManager';
6499
6624
  export { PubSub } from '@mappedin/react-native-sdk/core/packages/renderer/internal/pub-sub.typed';
6500
6625
  export { default as MapObject } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.MapObject';
6501
6626
  export { default as CAMERA_LAYER } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.CameraLayers';
@@ -6513,27 +6638,31 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6513
6638
  SET_SCENE_MAP = 5,
6514
6639
  SET_SCENE_START = 6,
6515
6640
  SET_SCENE = 7,
6516
- CAMERA_MOVING = 8,
6517
- SET_BLUE_DOT_SIZE_FROM_ZOOM = 9,
6518
- PUBLISH_BLUE_DOT = 10,
6519
- SET_STATE_SILENT = 11,
6520
- BLUE_DOT_UPDATE_POSITION = 12,
6521
- BLUE_DOT_SET_FOLLOWING = 13,
6522
- CLEAR_MOUSE = 14,
6523
- MAP_CLICK = 15,
6524
- USER_ZOOM = 16,
6525
- USER_ZOOM_BEGIN = 17,
6526
- USER_ROTATE = 18,
6527
- USER_ROTATE_BEGIN = 19,
6528
- USER_PAN = 20,
6529
- USER_PAN_BEGIN = 21,
6530
- USER_TILT = 22,
6531
- USER_MULTI_BEGIN = 23,
6532
- USER_MULTI_END = 24,
6533
- FOCUSON_BEGIN = 25,
6534
- USER_HANDS_ON = 26,
6535
- USER_HANDS_OFF = 27,
6536
- OUTDOOR_VIEW_LOADED = 28
6641
+ SCENE_VISIBLITY_CHANGED = 8,
6642
+ CAMERA_MOVING = 9,
6643
+ SET_BLUE_DOT_SIZE_FROM_ZOOM = 10,
6644
+ PUBLISH_BLUE_DOT = 11,
6645
+ SET_STATE_SILENT = 12,
6646
+ BLUE_DOT_UPDATE_POSITION = 13,
6647
+ BLUE_DOT_SET_FOLLOWING = 14,
6648
+ CLEAR_MOUSE = 15,
6649
+ MAP_CLICK = 16,
6650
+ USER_ZOOM = 17,
6651
+ USER_ZOOM_BEGIN = 18,
6652
+ USER_ROTATE = 19,
6653
+ USER_ROTATE_BEGIN = 20,
6654
+ USER_PAN = 21,
6655
+ USER_PAN_BEGIN = 22,
6656
+ USER_TILT = 23,
6657
+ USER_MULTI_BEGIN = 24,
6658
+ USER_MULTI_END = 25,
6659
+ FOCUSON_BEGIN = 26,
6660
+ USER_HANDS_ON = 27,
6661
+ USER_HANDS_OFF = 28,
6662
+ JOURNEY_CREATED = 29,
6663
+ JOURNEY_DESTROYED = 30,
6664
+ OUTDOOR_VIEW_LOADED = 31,
6665
+ LAYER_VISIBILITY_CHANGED = 32
6537
6666
  }
6538
6667
  export type INTERNAL_EVENT_PAYLOAD = {
6539
6668
  [INTERNAL_EVENT.SET_SCENE_START]: undefined;
@@ -6544,7 +6673,9 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6544
6673
  [INTERNAL_EVENT.RENDER]: undefined;
6545
6674
  [INTERNAL_EVENT.RENDER_NOW]: undefined;
6546
6675
  [INTERNAL_EVENT.UPDATE_FLIPPABLES]: undefined | boolean;
6547
- [INTERNAL_EVENT.SET_SCENE]: undefined;
6676
+ [INTERNAL_EVENT.SET_SCENE]: {
6677
+ context?: string;
6678
+ };
6548
6679
  [INTERNAL_EVENT.CAMERA_MOVING]: any;
6549
6680
  [INTERNAL_EVENT.SET_BLUE_DOT_SIZE_FROM_ZOOM]: number;
6550
6681
  [INTERNAL_EVENT.PUBLISH_BLUE_DOT]: undefined;
@@ -6570,6 +6701,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6570
6701
  [INTERNAL_EVENT.USER_HANDS_OFF]: undefined;
6571
6702
  [INTERNAL_EVENT.USER_PAN]: undefined;
6572
6703
  [INTERNAL_EVENT.USER_TILT]: undefined;
6704
+ [INTERNAL_EVENT.LAYER_VISIBILITY_CHANGED]: MappedinMap;
6705
+ [INTERNAL_EVENT.JOURNEY_CREATED]: undefined;
6706
+ [INTERNAL_EVENT.JOURNEY_DESTROYED]: undefined;
6707
+ [INTERNAL_EVENT.SCENE_VISIBLITY_CHANGED]: undefined;
6573
6708
  };
6574
6709
  /**
6575
6710
  * Factories
@@ -6587,6 +6722,8 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6587
6722
  export { default as MapViewStackScene } from '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/MapView.StackScene';
6588
6723
  export { default as Element } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.Element';
6589
6724
  export { default as FlippableImage } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.FlippableImage';
6725
+ export { default as Building } from '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/dynamic-focus-scene-manager/building';
6726
+ export { default as DynamicFocusScene } from '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/dynamic-focus-scene-manager/dynamic-focus-scene';
6590
6727
  /**
6591
6728
  * Controllers/Managers
6592
6729
  */
@@ -6594,6 +6731,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6594
6731
  export { default as FloatingLabelsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/FloatingLabelsController';
6595
6732
  export { default as FlatLabelsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/FlatLabelsController';
6596
6733
  export { default as PolygonColorsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonColorsController';
6734
+ export { default as PolygonHoverColorsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonHoverColorsController';
6597
6735
  export { default as MarkersController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/MarkersController';
6598
6736
  export { default as PolygonInteractionController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonInteractionController';
6599
6737
  export { default as TooltipsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/TooltipsController';
@@ -6610,7 +6748,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal' {
6610
6748
  export { default as BillboardManager } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/BillboardManager';
6611
6749
  export { default as StackedMapsController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/StackedMapsController';
6612
6750
  export { MultiBufferRenderer } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.Renderer';
6751
+ export { JourneyController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/JourneyController';
6613
6752
  export { default as OutdoorViewController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/OutdoorViewController';
6753
+ export { default as WatermarkController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/WatermarkController';
6754
+ export { default as LayerController } from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/LayerController';
6614
6755
  /**
6615
6756
  * Types
6616
6757
  */
@@ -6659,6 +6800,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer' {
6659
6800
  export type { Paths } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/Paths';
6660
6801
  export type { StackedMaps } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/StackedMaps';
6661
6802
  export type { OutdoorView } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/OutdoorView';
6803
+ export type { DynamicFocus } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/DynamicFocus';
6662
6804
  export type { TOOLTIP_ANCHOR } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.SmartTooltip';
6663
6805
  export type TMappedinInitializeOutput = {
6664
6806
  mapView: MapView;
@@ -6683,7 +6825,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer' {
6683
6825
  * @returns
6684
6826
  */
6685
6827
  function showVenue<T extends Mappedin>(el: HTMLElement, venue: T, options?: TMapViewOptions): Promise<MapView>;
6686
- export { COLLISION_RANKING_TIERS, STATE, E_SDK_EVENT, E_BLUEDOT_STATE_REASON, E_BLUEDOT_MARKER_STATE, E_BLUEDOT_EVENT, E_BLUEDOT_STATE, E_CAMERA_EVENT, E_CAMERA_DIRECTION, SAFE_AREA_INSET_TYPE, ANIMATION_TWEENS, CAMERA_EASING_MODE, STACKED_MAPS_STATE, MARKER_ANCHOR, GEOLOCATION_STATUS, } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
6828
+ export { COLLISION_RANKING_TIERS, STATE, E_SDK_EVENT, E_BLUEDOT_STATE_REASON, E_BLUEDOT_MARKER_STATE, E_BLUEDOT_EVENT, E_BLUEDOT_STATE, E_CAMERA_EVENT, E_CAMERA_DIRECTION, SAFE_AREA_INSET_TYPE, ANIMATION_TWEENS, CAMERA_EASING_MODE, STACKED_MAPS_STATE, MARKER_ANCHOR, GEOLOCATION_STATUS, E_MAP_CHANGED_REASON, } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
6687
6829
  export { getVenue, getVenueMVF, getVenueBundle, showVenue, downloadBundle, getVenueBundleURL, downloadVenueBundleMVF, hydrateVenue, PositionUpdater, MappedinDestinationSet, };
6688
6830
  import DefaultAssetManager from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.AssetManager';
6689
6831
  import { TTileManagerOptions } from '@mappedin/react-native-sdk/core/packages/renderer/internal/outdoor-context/Mappedin.TileManager';
@@ -6780,6 +6922,19 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
6780
6922
  export default WatermarkController;
6781
6923
  }
6782
6924
 
6925
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonHoverColorsController' {
6926
+ import { MappedinPolygon } from '@mappedin/react-native-sdk/core/packages/renderer';
6927
+ import { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/private/Core.interface';
6928
+ class PolygonHoverColorsController {
6929
+ #private;
6930
+ constructor(core: ICore);
6931
+ setPolygonHoverColor(polygonOrPolygonId: MappedinPolygon | string, color: string): void;
6932
+ clearPolygonHoverColor(polygonOrPolygonId: MappedinPolygon | string): void;
6933
+ clearAllPolygonHoverColors(): void;
6934
+ }
6935
+ export default PolygonHoverColorsController;
6936
+ }
6937
+
6783
6938
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/shave-text' {
6784
6939
  export type TDrawFn = (ctx: CanvasRenderingContext2D, x: number, y: number) => void;
6785
6940
  type TShave = (str: string, size: number, maxWidth: number, maxLines?: number, lineHeight?: number, options?: {
@@ -6875,6 +7030,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
6875
7030
  activeDirections: MappedinDirections;
6876
7031
  get isMultiFloor(): boolean;
6877
7032
  get mapsInJourney(): any[];
7033
+ get buildingsInJourney(): any;
6878
7034
  get mapIdsInvolvedInJourney(): string[];
6879
7035
  constructor(directions: MappedinDirections | MappedinDirections[], options: TJourneyOptions, core: ICore);
6880
7036
  setStep: (step: any) => void;
@@ -6916,6 +7072,223 @@ declare module '@mappedin/react-native-sdk/core/packages/get-venue/MappedinTheme
6916
7072
  }
6917
7073
  }
6918
7074
 
7075
+ declare module '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin.MVF.types' {
7076
+ import { MapId } from '@mappedin/mvf';
7077
+ import { FeatureCollection, MultiPolygon, Point, Polygon } from 'geojson';
7078
+ import { TImage, TMap, TNode, TOpeningHours, TPhone, TSiblingGroup, TSocial } from '@mappedin/react-native-sdk/core/packages/get-venue/Mappedin.API.types';
7079
+ export type WithIDs<T> = Map<string, T>;
7080
+ type ManifestFile = {
7081
+ type: 'file';
7082
+ name: string;
7083
+ };
7084
+ type ManifestFolder = {
7085
+ type: 'folder';
7086
+ name: string;
7087
+ children: ManifestFile[];
7088
+ };
7089
+ export type MVFv1PolygonLikeProperties = {
7090
+ id: string;
7091
+ altitude?: number;
7092
+ color?: string;
7093
+ externalId?: string | null;
7094
+ height?: number;
7095
+ opacity?: number;
7096
+ layer?: string;
7097
+ level: string;
7098
+ parent?: string | null;
7099
+ };
7100
+ export type MVFv1SpaceProperties = MVFv1PolygonLikeProperties & {
7101
+ entrances: {
7102
+ level: TMap['id'];
7103
+ id: TNode['id'];
7104
+ }[];
7105
+ };
7106
+ export type MVFv1ObstructionProperties = MVFv1PolygonLikeProperties;
7107
+ export type MVFv1ConnectionProperties = {
7108
+ id: string;
7109
+ /**
7110
+ * Indicates that a connection is accessible
7111
+ */
7112
+ accessible: boolean;
7113
+ /**
7114
+ * Array of node ids that this Connection connects with.
7115
+ */
7116
+ destinations: string[];
7117
+ level: string;
7118
+ multiplier: number;
7119
+ name: string;
7120
+ /**
7121
+ * Type of the connection such as `escalator` or `elevator`
7122
+ */
7123
+ type: string;
7124
+ weight: number;
7125
+ };
7126
+ export type MVFv1NodeProperties = {
7127
+ id: string;
7128
+ /**
7129
+ * Indicates that a node is accessible
7130
+ */
7131
+ accessible: boolean;
7132
+ /**
7133
+ * External id of a node is used to sync and connect to external systems to Mappedin data
7134
+ */
7135
+ externalId: string | null;
7136
+ level: string;
7137
+ multiplier: number;
7138
+ neighbors: string[];
7139
+ weight: number;
7140
+ };
7141
+ export type MVFv1LevelProperties = {
7142
+ id: string;
7143
+ abbreviation?: string;
7144
+ building?: string;
7145
+ elevation?: number;
7146
+ name: string;
7147
+ };
7148
+ export type MVFv1ManifestProperties = {
7149
+ /**
7150
+ * Name of the venue
7151
+ */
7152
+ name: string;
7153
+ folder_struct: (ManifestFolder | ManifestFile)[];
7154
+ /**
7155
+ * Mappedin Venue Format version number of the MVF bundle
7156
+ */
7157
+ version: string;
7158
+ /**
7159
+ * Timestamp when the MVF bundle was generated. E.g. `2022-02-25T16:26:09.908Z`
7160
+ */
7161
+ time: string;
7162
+ };
7163
+ export type MVFv1BuildingProperties = {
7164
+ id: string;
7165
+ name: string;
7166
+ venue: string;
7167
+ };
7168
+ export type MVFv1CategoryProperties = {
7169
+ id: string;
7170
+ name: string;
7171
+ picture?: TImage;
7172
+ };
7173
+ export type MVFv1LocationProperties = {
7174
+ id: string;
7175
+ address?: string | null;
7176
+ /**
7177
+ * Array of {@link MICategoryProperties | category} ids
7178
+ */
7179
+ categories: string[];
7180
+ /**
7181
+ * A text description of the location usually indicating what the location is used for
7182
+ */
7183
+ description?: string | null;
7184
+ /**
7185
+ * Email address to for contacting this location
7186
+ */
7187
+ email?: string | null;
7188
+ /**
7189
+ * External id used to connect Mappedin Location to an external system
7190
+ */
7191
+ externalId?: string | null;
7192
+ /**
7193
+ * Opening hours of the location
7194
+ */
7195
+ hours?: TOpeningHours[] | null;
7196
+ /**
7197
+ * Collection of links related to this location
7198
+ */
7199
+ links?: {
7200
+ label: string;
7201
+ url: string;
7202
+ }[] | null;
7203
+ logo?: TImage | null;
7204
+ /**
7205
+ * Name of the location. By default this is the string displayed in the location label
7206
+ */
7207
+ name: string;
7208
+ /**
7209
+ * Phone number for contacting this location
7210
+ */
7211
+ phone?: TPhone | null;
7212
+ picture?: TImage | null;
7213
+ services?: string | null;
7214
+ siblingGroups?: TSiblingGroup[] | null;
7215
+ /**
7216
+ * Social media links of the location
7217
+ */
7218
+ social?: TSocial | null;
7219
+ /**
7220
+ * Array of {@link MISpaceProperties | MVF Space} ids for this location
7221
+ */
7222
+ spaces?: {
7223
+ id: string;
7224
+ map: string;
7225
+ }[] | null;
7226
+ states?: {
7227
+ type: string;
7228
+ start?: string;
7229
+ end?: string;
7230
+ }[] | null;
7231
+ type: string;
7232
+ };
7233
+ export type MVFv1ObstructionCollection = FeatureCollection<Polygon, MVFv1ObstructionProperties>;
7234
+ export type MVFv1SpaceCollection = FeatureCollection<Polygon, MVFv1SpaceProperties>;
7235
+ export type MVFv1ConnectionCollection = FeatureCollection<Point, MVFv1ConnectionProperties>;
7236
+ export type MVFv1NodeCollection = FeatureCollection<Point, MVFv1NodeProperties>;
7237
+ export type MVFv1LevelCollection = FeatureCollection<Polygon | MultiPolygon, MVFv1LevelProperties>;
7238
+ export type MVFv1ManifestCollection = FeatureCollection<Point, MVFv1ManifestProperties>;
7239
+ export type MVFv1BuildingCollection = FeatureCollection<Polygon, MVFv1BuildingProperties>;
7240
+ export type MVFv1CategoryCollection = FeatureCollection<null, MVFv1CategoryProperties>;
7241
+ export type MVFv1LocationCollection = FeatureCollection<null, MVFv1LocationProperties>;
7242
+ export type ParsedMVFv1 = {
7243
+ /**
7244
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
7245
+ */
7246
+ space: {
7247
+ [mapId: MapId]: MVFv1SpaceCollection | undefined;
7248
+ };
7249
+ /**
7250
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
7251
+ */
7252
+ obstruction: {
7253
+ [mapId: MapId]: MVFv1ObstructionCollection | undefined;
7254
+ };
7255
+ /**
7256
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
7257
+ */
7258
+ level: {
7259
+ [mapId: MapId]: MVFv1LevelCollection | undefined;
7260
+ };
7261
+ /**
7262
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
7263
+ */
7264
+ node: {
7265
+ [mapId: MapId]: MVFv1NodeCollection | undefined;
7266
+ };
7267
+ /**
7268
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
7269
+ */
7270
+ connection: {
7271
+ [mapId: MapId]: MVFv1ConnectionCollection | undefined;
7272
+ };
7273
+ 'manifest.geojson': MVFv1ManifestCollection;
7274
+ 'building.geojson': MVFv1BuildingCollection;
7275
+ 'category.geojson': MVFv1CategoryCollection;
7276
+ 'location.geojson': MVFv1LocationCollection;
7277
+ };
7278
+ export type RawMVFv1 = {
7279
+ 'manifest.geojson': Uint8Array;
7280
+ 'building.geojson': Uint8Array;
7281
+ 'category.geojson': Uint8Array;
7282
+ 'location.geojson': Uint8Array;
7283
+ level: Partial<Record<MapId, Uint8Array>>;
7284
+ node: Partial<Record<MapId, Uint8Array>>;
7285
+ space: Partial<Record<MapId, Uint8Array>>;
7286
+ obstruction: Partial<Record<MapId, Uint8Array>>;
7287
+ connection: Partial<Record<MapId, Uint8Array>>;
7288
+ };
7289
+ export {};
7290
+ }
7291
+
6919
7292
  declare module '@mappedin/react-native-sdk/core/packages/navigator/Edge' {
6920
7293
  import INode from '@mappedin/react-native-sdk/core/packages/navigator/interfaces/INode';
6921
7294
  import IVortex from '@mappedin/react-native-sdk/core/packages/navigator/interfaces/IVortex';
@@ -6987,6 +7360,33 @@ declare module '@mappedin/react-native-sdk/core/packages/navigator/interfaces/IV
6987
7360
  export default IVortex;
6988
7361
  }
6989
7362
 
7363
+ declare module '@mappedin/react-native-sdk/core/packages/navigator/Navigator.utils' {
7364
+ export type TCoordinate = {
7365
+ x: number;
7366
+ y: number;
7367
+ };
7368
+ /**
7369
+ * Modified line intercept math by Paul Bourke http://paulbourke.net/geometry/pointlineplane/
7370
+ * Determines the intersection point of two line segments.
7371
+ * Return null if the lines don't intersect.
7372
+ */
7373
+ export function getLineIntersection(line1Point1: TCoordinate, line1Point2: TCoordinate, line2Point1: TCoordinate, line2Point2: TCoordinate): {
7374
+ x: number;
7375
+ y: number;
7376
+ };
7377
+ /**
7378
+ * Offsets a line between two nodes by a certain distance.
7379
+ */
7380
+ export function getOffsetLine(point1: TCoordinate, point2: TCoordinate, offset: number): {
7381
+ x: number;
7382
+ y: number;
7383
+ }[];
7384
+ /**
7385
+ * Determines if there is a line of sight between two nodes.
7386
+ */
7387
+ export function hasLineOfSight(origin: TCoordinate, destination: TCoordinate, edges?: TCoordinate[][], bufferRadius?: number): boolean;
7388
+ }
7389
+
6990
7390
  declare module '@mappedin/react-native-sdk/core/packages/navigator/interfaces/ILocation' {
6991
7391
  interface ILocation {
6992
7392
  id: string;
@@ -7012,6 +7412,40 @@ declare module '@mappedin/react-native-sdk/core/packages/navigator/interfaces/IP
7012
7412
  export default IPolygon;
7013
7413
  }
7014
7414
 
7415
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/json-scene-loader' {
7416
+ import { Element } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
7417
+ import DefaultAssetManager from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.AssetManager';
7418
+ import { MappedinMap, MappedinPolygon } from '@mappedin/react-native-sdk/core/packages/renderer';
7419
+ import { MAP_RENDER_MODE } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
7420
+ class JSONSceneLoader {
7421
+ defaultExtrudeSettings: {
7422
+ amount: number;
7423
+ bevelEnabled: boolean;
7424
+ };
7425
+ materials: {};
7426
+ scale: number;
7427
+ assetManager: DefaultAssetManager;
7428
+ setAssetManager<T extends DefaultAssetManager>(am: T): void;
7429
+ overlayHeight: number;
7430
+ /**
7431
+ Takes in either an object containing polygons and generates a 3D scene based
7432
+ on it, or a string URL to fetch those polygons from.
7433
+ **/
7434
+ load(polygons: string | MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE): Promise<{
7435
+ container: any;
7436
+ elements: Element[];
7437
+ visibleLayers: Set<unknown>;
7438
+ }>;
7439
+ _build(polygons: MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE): Promise<{
7440
+ container: any;
7441
+ elements: Element[];
7442
+ visibleLayers: Set<unknown>;
7443
+ }>;
7444
+ }
7445
+ const _default: JSONSceneLoader;
7446
+ export default _default;
7447
+ }
7448
+
7015
7449
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.RenderTasks' {
7016
7450
  /**
7017
7451
  * Tasks that can be submitted to the renderer. The `STATIC_AND_ANIMATED` task
@@ -7583,7 +8017,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/scene-
7583
8017
  };
7584
8018
  };
7585
8019
  class SceneManager {
7586
- #private;
8020
+ core: ICore;
7587
8021
  currentScene: MapViewScene;
7588
8022
  /**
7589
8023
  * MapObjects that have been loaded and positioned in the scene
@@ -7597,6 +8031,29 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/scene-
7597
8031
  export default SceneManager;
7598
8032
  }
7599
8033
 
8034
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/MapView.DynamicFocusSceneManager' {
8035
+ import { MappedinMap } from '@mappedin/react-native-sdk/core/packages/get-venue';
8036
+ import type { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8037
+ import { MapViewScene, DynamicFocusScene } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8038
+ class DynamicFocusSceneManager {
8039
+ dynamicFocusScene: DynamicFocusScene;
8040
+ core: ICore;
8041
+ constructor(core: ICore, baseMap: MappedinMap);
8042
+ panBounds: any;
8043
+ mapShouldSetOnUserInteraction: boolean;
8044
+ get currentScene(): {
8045
+ resize: () => void;
8046
+ currentMap: MappedinMap;
8047
+ mapObjects: Map<string, MapObject>;
8048
+ };
8049
+ get currentMap(): MappedinMap;
8050
+ determineTargetMap(): void;
8051
+ update(): void;
8052
+ transitionTo(scene?: MapViewScene): Promise<void>;
8053
+ }
8054
+ export default DynamicFocusSceneManager;
8055
+ }
8056
+
7600
8057
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/pub-sub.typed' {
7601
8058
  export class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD> {
7602
8059
  /**
@@ -7683,6 +8140,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
7683
8140
  visible: boolean;
7684
8141
  rank: number;
7685
8142
  id: string;
8143
+ layer: string;
7686
8144
  _bboxes?: [string, Rectangle, (collider: TCustomCollider<any>) => void, TGetBoundingBox][];
7687
8145
  offscreen?: boolean;
7688
8146
  setAction: (action: EColliderAction) => void;
@@ -7705,7 +8163,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
7705
8163
  colliderDidUpdatePosition?: (prop: [x: number, y: number]) => void;
7706
8164
  }
7707
8165
  class BaseCollider implements ICollider {
7708
- __engine: any;
8166
+ __engine?: SmartCollisionEngine;
7709
8167
  _initialRank: number;
7710
8168
  screenPosition: [number, number];
7711
8169
  enabled: boolean;
@@ -7722,6 +8180,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
7722
8180
  width: number;
7723
8181
  height: number;
7724
8182
  };
8183
+ layer: string;
7725
8184
  flipIfNeeded(): void;
7726
8185
  constructor(options: any);
7727
8186
  setPosition(position: MappedinNode | MappedinCoordinate, updateCollisionEngine?: boolean): void;
@@ -8069,7 +8528,99 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
8069
8528
  export default Element;
8070
8529
  }
8071
8530
 
8531
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/dynamic-focus-scene-manager/building' {
8532
+ import { Object3D } from 'three';
8533
+ import { MappedinMap, MappedinMapGroup } from '@mappedin/react-native-sdk/core/packages/get-venue';
8534
+ import type { ICore, MapObject } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8535
+ import { LayerGroup } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.MapObject';
8536
+ class Building {
8537
+ layerGroup: LayerGroup;
8538
+ mapGroup: MappedinMapGroup;
8539
+ defaultMap: MappedinMap;
8540
+ activeMap: MappedinMap;
8541
+ visibleMap?: MappedinMap;
8542
+ readonly startingMap: MappedinMap;
8543
+ baseMap: MappedinMap;
8544
+ object: Object3D;
8545
+ mapObjects: MapObject[];
8546
+ constructor(core: ICore, mapGroup: MappedinMapGroup, layerGroup: LayerGroup, startingMap: MappedinMap, baseMap: MappedinMap);
8547
+ loading: boolean;
8548
+ activeMapOpacity: number;
8549
+ buildingOpacity: number;
8550
+ animating: boolean;
8551
+ /**
8552
+ * Set the opacity of the currently active map in the building
8553
+ */
8554
+ setActiveMapOpacity(opacity: number, duration?: number): void;
8555
+ tweenActiveMapOpacity(targetOpacity: number, duration?: number): void;
8556
+ /**
8557
+ * Set the opacity of the building outline
8558
+ */
8559
+ setBuildingOutlineOpacity(opacity: number): void;
8560
+ get activeMapObject(): MapObject;
8561
+ get defaultMapObject(): MapObject;
8562
+ get baseMapObject(): MapObject;
8563
+ state: string;
8564
+ /**
8565
+ * The building is in view, so we should have the correct map loaded and ready to be displayed
8566
+ */
8567
+ onInView(): void;
8568
+ /**
8569
+ * The building is out of view, so we can safely reset the map to the default map
8570
+ */
8571
+ onOutOfView(): void;
8572
+ setMap(map: MappedinMap): Promise<void>;
8573
+ }
8574
+ export default Building;
8575
+ }
8576
+
8577
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/scene-manager/dynamic-focus-scene-manager/dynamic-focus-scene' {
8578
+ import { Object3D, Box3, Raycaster } from 'three';
8579
+ import { MappedinMap } from '@mappedin/react-native-sdk/core/packages/get-venue';
8580
+ import type { ICore, MapObject } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8581
+ import { Building } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8582
+ import { LayerGroup } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.MapObject';
8583
+ class DynamicFocusScene {
8584
+ buildings: Building[];
8585
+ object: Object3D;
8586
+ panBounds: Box3;
8587
+ loaded: boolean;
8588
+ baseMapObject: MapObject;
8589
+ raycasters: Raycaster[];
8590
+ baseMap: MappedinMap;
8591
+ options: {
8592
+ indoorsFullyVisibleZoomLevel: number;
8593
+ buildingFullyVisibleZoomLevel: number;
8594
+ setMapAtZoomLevel: number;
8595
+ baseMap: MappedinMap;
8596
+ preloadDefaultMaps: boolean;
8597
+ };
8598
+ constructor(core: ICore, baseMap: MappedinMap);
8599
+ resize: () => void;
8600
+ buildRaycasters(): void;
8601
+ updateRaycasters(): void;
8602
+ /**
8603
+ * Expand the pan bounds to the base map bounds
8604
+ * In dynamic focus mode, these bounds will be retained no matter which building or map is visible
8605
+ */
8606
+ expandToBaseMapBounds(): void;
8607
+ load(): Promise<void>;
8608
+ currentMap: MappedinMap;
8609
+ setMap(map: MappedinMap, fromUserInteraction?: boolean): Promise<void>;
8610
+ buildingVisiblityMap: Map<Building, boolean>;
8611
+ buildingsByPolygonId: Map<string, Building>;
8612
+ get buildingsInView(): Building[];
8613
+ determineBuildingsInView(): Building[];
8614
+ /** Given zoom and camera position, let's figure out the currently active map */
8615
+ determineCurrentMap(): MappedinMap;
8616
+ setOpacities(buildingsInView?: Building[], centerMap?: MappedinMap): void;
8617
+ createBuildings(buildingGeometries: [string, LayerGroup][]): Promise<Building[]>;
8618
+ }
8619
+ export default DynamicFocusScene;
8620
+ }
8621
+
8072
8622
  declare module '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/PolygonColorsController' {
8623
+ import { MappedinPolygon } from '@mappedin/react-native-sdk/core/packages/renderer';
8073
8624
  import { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/private/Core.interface';
8074
8625
  class PolygonColorsController {
8075
8626
  #private;
@@ -8077,6 +8628,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
8077
8628
  setPolygonColor(polygon: any, color: any, highlighted?: boolean): void;
8078
8629
  clearPolygonColor(polygon: any): void;
8079
8630
  clearAllPolygonColors(): void;
8631
+ setPolygonOutlineColor(color: string): void;
8632
+ addPolygonOutline(polygon: MappedinPolygon): void;
8633
+ removePolygonOutline(polygon: MappedinPolygon): void;
8634
+ removeAllPolygonOutlines(): void;
8080
8635
  }
8081
8636
  export default PolygonColorsController;
8082
8637
  }
@@ -8095,9 +8650,8 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
8095
8650
  }
8096
8651
 
8097
8652
  declare module '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/TooltipsController' {
8098
- import { ICore, TCreateTooltipCommonOptions, TCreateTooltipOptions } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8653
+ import { ICore, TCreateTooltipCommonOptions, TCreateTooltipOptions, SmartTooltip } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8099
8654
  import { MappedinNode, MappedinCoordinate } from '@mappedin/react-native-sdk/core/packages/get-venue';
8100
- import { SmartTooltip } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8101
8655
  class TooltipsController {
8102
8656
  #private;
8103
8657
  constructor(core: ICore);
@@ -8162,7 +8716,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
8162
8716
 
8163
8717
  declare module '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/EventSystem' {
8164
8718
  import { Object3D, Color } from 'three';
8165
- import type { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8719
+ import type { ICore, MappedinPolygon } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8166
8720
  import { BlueDotManager, Path } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8167
8721
  class EventSystem {
8168
8722
  core: ICore;
@@ -8228,8 +8782,8 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
8228
8782
  };
8229
8783
  checkMouseIntersectsBlueDot: () => boolean;
8230
8784
  doHoverEffect: () => void;
8231
- onPolygonHoverOut: (polygonId: any) => boolean;
8232
- onPolygonHoverOver: (polygon: any) => boolean;
8785
+ onPolygonHoverOut: (polygonId: string) => boolean;
8786
+ onPolygonHoverOver: (polygon: MappedinPolygon | string) => boolean;
8233
8787
  setHoverColor: (color: string) => void;
8234
8788
  destroy(): void;
8235
8789
  }
@@ -8303,6 +8857,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappe
8303
8857
  remove: (colliderId: string) => void;
8304
8858
  updateMap: (colliderId: string, from: string, to: string) => void;
8305
8859
  update: () => void;
8860
+ debouncedUpdate: any;
8306
8861
  resize: (container: any) => void;
8307
8862
  destroy: () => void;
8308
8863
  }
@@ -8441,6 +8996,28 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/contro
8441
8996
  export default StackedMapsController;
8442
8997
  }
8443
8998
 
8999
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/LayerController' {
9000
+ import type { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/private/Core.interface';
9001
+ import { MappedinMap } from '@mappedin/react-native-sdk/core/packages/get-venue';
9002
+ class LayerController {
9003
+ #private;
9004
+ constructor(core: ICore);
9005
+ /**
9006
+ * Show a set of layers on the current map, and hide all other layers. This also hides any colliders associated with the hidden layers.
9007
+ */
9008
+ showLayers(layers: string[]): void;
9009
+ getAllLayersForMap(map: MappedinMap): Promise<{
9010
+ [layerName: string]: boolean;
9011
+ }>;
9012
+ /**
9013
+ * Return a list of all visible layers for a map, this will NOT trigger a map load, and is mainly used internally
9014
+ * which is why its synchronous
9015
+ */
9016
+ getVisibleLayersForLoadedMap(map: MappedinMap): string[];
9017
+ }
9018
+ export default LayerController;
9019
+ }
9020
+
8444
9021
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.ui' {
8445
9022
  import { IBlueDotCore, BlueDotManager } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
8446
9023
  import { IPubSub } from '@mappedin/react-native-sdk/core/packages/renderer/internal/pub-sub';
@@ -8493,6 +9070,9 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8493
9070
  import { Camera } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/Camera';
8494
9071
  import { StackedMaps } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/StackedMaps';
8495
9072
  import OutdoorView from '@mappedin/react-native-sdk/core/packages/renderer/public/api/OutdoorView';
9073
+ import { Layers } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/Layers';
9074
+ import { DynamicFocus } from '@mappedin/react-native-sdk/core/packages/renderer/public/api/DynamicFocus';
9075
+ import { TN8AOConfiguration } from '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.EffectComposer';
8496
9076
  /**
8497
9077
  * Primary API class for controlling and interacting with a 3D map.
8498
9078
  */
@@ -8531,13 +9111,24 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8531
9111
  */
8532
9112
  options: TMapViewOptions;
8533
9113
  /**
9114
+ * @experimental
8534
9115
  * API for showing multiple maps as a vertical stack.
8535
9116
  */
8536
9117
  StackedMaps: StackedMaps;
8537
9118
  /**
9119
+ * @experimental
8538
9120
  * API to control outdoor context rendering.
8539
9121
  */
8540
9122
  OutdoorView: OutdoorView;
9123
+ /**
9124
+ * API to control layer visibility.
9125
+ */
9126
+ Layers: Layers;
9127
+ /**
9128
+ * @experimental
9129
+ * API to dynamically set the map focus as you pan over map groups.
9130
+ */
9131
+ DynamicFocus?: DynamicFocus;
8541
9132
  /**
8542
9133
  * @hidden
8543
9134
  */
@@ -8692,6 +9283,71 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8692
9283
  * ```
8693
9284
  */
8694
9285
  clearAllPolygonColors(): void;
9286
+ /**
9287
+ * @experimental
9288
+ * Sets a color that the outline of a {@link MappedinPolygon} instance will receive.
9289
+ * If no color is set the outline will default to red (#ff0000). See also {@link addPolygonOutline},
9290
+ * {@link removePolygonOutline} and {@link removeAllPolygonOutlines}.
9291
+ *
9292
+ * ```ts
9293
+ * mapView.setPolygonOutlineColor("#0000ff");
9294
+ * ```
9295
+ *
9296
+ * @param color The color to set the outline to.
9297
+ */
9298
+ setPolygonOutlineColor(color: string): void;
9299
+ /**
9300
+ * @experimental
9301
+ * Given a {@link MappedinPolygon}, the polygon will be outlined. The outline color of the polygon is
9302
+ * set using {@link setPolygonOutlineColor}, the default color is red (#ff0000). See also
9303
+ * {@link removePolygonOutline} and {@link removeAllPolygonOutlines}.
9304
+ *
9305
+ * ```ts
9306
+ * // Find the polygons of the Apple store and change them to blue
9307
+ * const location = mapView.venue.locations.find((l) => l.name === "Apple")!;
9308
+ * for (const polygon of location.polygons) {
9309
+ * mapView.addPolygonOutline(polygon);
9310
+ * }
9311
+ * ```
9312
+ *
9313
+ * @param polygon The {@link MappedinPolygon} to outline.
9314
+ */
9315
+ addPolygonOutline(polygon: MappedinPolygon): void;
9316
+ /**
9317
+ * @experimental
9318
+ * Removes the outline on a {@link MappedinPolygon}. See also {@link setPolygonOutlineColor},
9319
+ * {@link addPolygonOutline} and {@link removeAllPolygonOutlines}.
9320
+ *
9321
+ * ```ts
9322
+ * mapView.setPolygonOutlineColor("#0000ff");
9323
+ * mapView.addPolygonOutline(polygon);
9324
+ *
9325
+ * ...
9326
+ *
9327
+ * // Remove the outline from the polygon
9328
+ * mapView.removePolygonOutline(polygon);
9329
+ * ```
9330
+ *
9331
+ * @param polygon The {@link MappedinPolygon} to remove the outline of.
9332
+ */
9333
+ removePolygonOutline(polygon: MappedinPolygon): void;
9334
+ /**
9335
+ * @experimental
9336
+ * Removes outlines on all {@link MappedinPolygon} instances. See also {@link setPolygonOutlineColor},
9337
+ * {@link addPolygonOutline} and {@link removePolygonOutline}.
9338
+ *
9339
+ * ```ts
9340
+ * mapView.setPolygonOutlineColor("#0000ff");
9341
+ * mapView.addPolygonOutline(polygon1);
9342
+ * mapView.addPolygonOutline(polygon2);
9343
+ *
9344
+ * ...
9345
+ *
9346
+ * // Remove the outline from all polygons
9347
+ * mapView.removeAllPolygonOutlines();
9348
+ * ```
9349
+ */
9350
+ removeAllPolygonOutlines(): void;
8695
9351
  /**
8696
9352
  * Makes a {@link MappedinPolygon} interactive. This means it will receive a hover effect and
8697
9353
  * respond to the `CLICK` {@link E_SDK_EVENT}. See also {@link on} and {@link addInteractivePolygonsForAllLocations}.
@@ -8904,9 +9560,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8904
9560
  */
8905
9561
  setBackgroundColor(color: string, alpha?: number): void;
8906
9562
  /**
8907
- * Sets a color that {@link MappedinPolygon} instances will receive when they are
9563
+ * Sets the color that all {@link MappedinPolygon} instances will receive when they are
8908
9564
  * beneath a cursor. This only applies to interactive polygons set using {@link addInteractivePolygon}
8909
- * or {@link addInteractivePolygonsForAllLocations}.
9565
+ * or {@link addInteractivePolygonsForAllLocations}. Hover colors set by {@link setPolygonHoverColor} will take
9566
+ * precedence over this value.
8910
9567
  *
8911
9568
  * ```ts
8912
9569
  * // Make all location polygons interactive and have a red hover color
@@ -8915,6 +9572,46 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8915
9572
  * ```
8916
9573
  */
8917
9574
  setHoverColor(color: string): void;
9575
+ /**
9576
+ * Sets a color that a {@link MappedinPolygon} instance will receive when it is beneath a cursor.
9577
+ * This will take precedence over the value set by {@link setHoverColor} and only applies to an interactive polygon set using {@link addInteractivePolygon}
9578
+ * or {@link addInteractivePolygonsForAllLocations}. See also {@link clearPolygonHoverColor} and {@link clearAllPolygonHoverColors}.
9579
+ *
9580
+ * ```ts
9581
+ * // Make polygon interactive and have a red hover color
9582
+ * mapView.addInteractivePolygon(polygon);
9583
+ * mapView.setPolygonHoverColor(polygon, "#ff0000");
9584
+ * ```
9585
+ */
9586
+ setPolygonHoverColor(polygon: MappedinPolygon, color: string): void;
9587
+ /**
9588
+ * Resets a {@link MappedinPolygon} back to it's original hover color or the default hover color set by
9589
+ * {@link setHoverColor}. See also {@link clearAllPolygonHoverColors} and {@link setPolygonHoverColor}.
9590
+ *
9591
+ * ```ts
9592
+ * mapView.setPolygonHoverColor(polygon, "#ff0000");
9593
+ *
9594
+ * ...
9595
+ *
9596
+ * // Reset polygon to origin hover color
9597
+ * mapView.clearPolygonHoverColor(polygon);
9598
+ * ```
9599
+ */
9600
+ clearPolygonHoverColor(polygon: MappedinPolygon): void;
9601
+ /**
9602
+ * Resets all {@link MappedinPolygon} instances back to their original hover colors or the default hover color set by
9603
+ * {@link setHoverColor}. See also {@link clearPolygonHoverColor} and {@link setPolygonHoverColor}.
9604
+ *
9605
+ * ```ts
9606
+ * mapView.setPolygonHoverColor(polygon1, "#ff0000");
9607
+ * mapView.setPolygonHoverColor(polygon1, "#00ff00");
9608
+ *
9609
+ * ...
9610
+ *
9611
+ * mapView.clearAllPolygonHoverColors();
9612
+ * ```
9613
+ */
9614
+ clearAllPolygonHoverColors(): void;
8918
9615
  /**
8919
9616
  * @deprecated This should no longer need to be called externally and is now a no-op.
8920
9617
  */
@@ -8988,6 +9685,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/MapView
8988
9685
  * @returns A {@link MappedinCoordinate} on the given map.
8989
9686
  */
8990
9687
  getMappedinCoordinateAtScreenCoordinate(x: number, y: number, map: MappedinMap): MappedinCoordinate;
9688
+ setAmbientOcclusionSettings(settings: TN8AOConfiguration): void;
8991
9689
  /**
8992
9690
  * Destroy the mapView instance and reclaim memory.
8993
9691
  *
@@ -9072,12 +9770,12 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/outdo
9072
9770
 
9073
9771
  declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core' {
9074
9772
  import '../internal/externals/globalThisPolyfill';
9075
- import { Mesh, PerspectiveCamera, Scene, Vector2 } from 'three';
9773
+ import { Color, Mesh, PerspectiveCamera, Scene, Vector2 } from 'three';
9076
9774
  import '../internal/object3D.destroy';
9077
- import type { TGetPolygonsAtCoordinateOptions, TMapViewOptions, TPadding } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
9078
- import { Renderer, TaskScheduler, MapManager, FlatLabel, SmartCollisionEngine, PubSub, INTERNAL_EVENT, INTERNAL_EVENT_PAYLOAD, MapView, STATE, MapObject, SceneManager, TileManager, PathsController, FloatingLabelsController, FlatLabelsController, PolygonColorsController, MarkersController, PolygonInteractionController, TooltipsController, PolygonStatesController, PolygonImagesController, ThreeDMarkersController, EventSystem, BlueDotController, CameraController, BillboardManager, StackedMapsController, OutdoorViewController } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
9775
+ import type { TGetPolygonsAtCoordinateOptions, TMapViewOptions, TPadding, MappedinPolygon } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
9776
+ import { Renderer, TaskScheduler, MapManager, FlatLabel, SmartCollisionEngine, PubSub, INTERNAL_EVENT, INTERNAL_EVENT_PAYLOAD, MapView, STATE, MapObject, SceneManager, TileManager, PathsController, FloatingLabelsController, FlatLabelsController, PolygonColorsController, MarkersController, PolygonInteractionController, TooltipsController, PolygonStatesController, PolygonImagesController, ThreeDMarkersController, EventSystem, BlueDotController, CameraController, BillboardManager, StackedMapsController, OutdoorViewController, WatermarkController, PolygonHoverColorsController, LayerController } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
9079
9777
  import { Mappedin as IMappedin, MappedinCoordinate, MappedinMap, MappedinNode } from '@mappedin/react-native-sdk/core/packages/get-venue';
9080
- import WatermarkController from '@mappedin/react-native-sdk/core/packages/renderer/private/controllers/WatermarkController';
9778
+ import { E_MAP_CHANGED_REASON } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.enums';
9081
9779
  export const raycaster: any;
9082
9780
  let Mappedin: any;
9083
9781
  /**
@@ -9109,6 +9807,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9109
9807
  flatLabels: FlatLabelsController;
9110
9808
  paths: PathsController;
9111
9809
  polygonColors: PolygonColorsController;
9810
+ polygonHoverColors: PolygonHoverColorsController;
9112
9811
  polygonInteraction: PolygonInteractionController;
9113
9812
  polygonStates: PolygonStatesController;
9114
9813
  polygonImages: PolygonImagesController;
@@ -9119,6 +9818,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9119
9818
  camera: CameraController;
9120
9819
  outdoorViewController?: OutdoorViewController;
9121
9820
  watermark: WatermarkController;
9821
+ layerController: LayerController;
9122
9822
  options: TMapViewOptions & {
9123
9823
  onDataLoaded?: (data: IMappedin) => void;
9124
9824
  onFirstMapLoaded?: (data: IMappedin) => void;
@@ -9137,6 +9837,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9137
9837
  taskScheduler: TaskScheduler;
9138
9838
  renderer: Renderer;
9139
9839
  highlightedPolygons: Record<string, string>;
9840
+ outlinedPolygons: Map<string, MappedinPolygon>;
9140
9841
  scene: Scene;
9141
9842
  focusZoomFactor: number;
9142
9843
  cameraObject: PerspectiveCamera;
@@ -9145,6 +9846,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9145
9846
  labelOrientationDelay: number;
9146
9847
  isWebGL2: boolean;
9147
9848
  interactivePolygons: Record<string, boolean>;
9849
+ polygonHoverColorsById: Record<string, Color>;
9148
9850
  mapManager: MapManager | undefined;
9149
9851
  sceneManager: SceneManager | undefined;
9150
9852
  mapObjects: Map<MappedinMap['id'], MapObject>;
@@ -9164,10 +9866,16 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9164
9866
  billboardManager: BillboardManager;
9165
9867
  stackedMaps: StackedMapsController;
9166
9868
  tileManager: TileManager;
9869
+ setMapReason?: E_MAP_CHANGED_REASON;
9167
9870
  /**
9168
9871
  * Get all maps that are "visible" in the scene.
9169
9872
  */
9170
9873
  get visibleMapsInCurrentScene(): any[];
9874
+ get visibleMapObjectsInCurrentScene(): MapObject[];
9875
+ /**
9876
+ * Returns all currently visible layers
9877
+ */
9878
+ get visibleLayersInCurrentScene(): {};
9171
9879
  constructor(container: HTMLDivElement, venue: IMappedin, options: TMapViewOptions & {
9172
9880
  onDataLoaded?: (data: IMappedin) => void;
9173
9881
  onFirstMapLoaded?: (data: IMappedin) => void;
@@ -9180,7 +9888,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9180
9888
  focusOn: (options: any) => any;
9181
9889
  focusOnPolygon: (polygon: any, changeZoom: any, duration: any, curve: any) => any;
9182
9890
  focusOnPath: (path: any, polygons: any, changeZoom: any, duration: any, curve: any) => any;
9183
- getCameraFrameForPoints: (pointCloud: any, horizontalFovFactor: any, verticalFovFactor: any, padding: any, ignoreZoom: any) => {
9891
+ getCameraFrameForPoints: (pointCloud: any, horizontalFovFactor: any, verticalFovFactor: any, padding: any, ignoreZoom?: boolean, minZoom?: any, maxZoom?: any) => {
9184
9892
  position: any;
9185
9893
  zoom: any;
9186
9894
  };
@@ -9236,7 +9944,10 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/private/Core'
9236
9944
  */
9237
9945
  hideDebugUI: () => void;
9238
9946
  determineNewLabelSize: () => void;
9239
- setMap: (map: string | MappedinMap) => Promise<any>;
9947
+ mapSetInProgress: Promise<any>;
9948
+ mapSetResolved: any;
9949
+ setMap: (map: string | MappedinMap) => any;
9950
+ setMapWithReason: (map: string | MappedinMap, reason: E_MAP_CHANGED_REASON) => any;
9240
9951
  getPolygonsAtScreenCoordinate: (x: number, y: number, options?: TGetPolygonsAtCoordinateOptions) => any;
9241
9952
  getPolygonsAtCoordinate: (coordinate: MappedinCoordinate, options?: TGetPolygonsAtCoordinateOptions) => any;
9242
9953
  getNearestNodeByScreenCoordinate(x: number, y: number, mapOrMapId?: MappedinMap | MappedinMap['id']): MappedinNode;
@@ -9444,6 +10155,14 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Cam
9444
10155
  * @param transform The new transform of the camera.
9445
10156
  */
9446
10157
  set(transform: TCameraTransform): void;
10158
+ /**
10159
+ * Convert a Mercator Zoom Level to altitude, which can be used in the Camera APIs
10160
+ */
10161
+ convertZoomLevelToAltitude(zoomLevel: number): any;
10162
+ /**
10163
+ * Convert the altitude returned by getZoom into Mercator Zoom level
10164
+ */
10165
+ convertAltitudeToZoomLevel(altitude: number): any;
9447
10166
  /**
9448
10167
  * Smoothly transition the camera's transform to be in a new configuration. See also {@link set}.
9449
10168
  *
@@ -9713,6 +10432,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Sta
9713
10432
  import { MappedinMap } from '@mappedin/react-native-sdk/core/packages/get-venue';
9714
10433
  import { STACKED_MAPS_STATE, StackedMapsController, TCameraTransform } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
9715
10434
  /**
10435
+ * @experimental
9716
10436
  * API for showing multiple maps involved in a {@link Journey} as a vertical stack.
9717
10437
  */
9718
10438
  export class StackedMaps {
@@ -9830,7 +10550,7 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Out
9830
10550
  /**
9831
10551
  * @experimental
9832
10552
  * API to control outdoor view rendering. Outdoor view can be enabled when
9833
- * initializing the {@link MapView} with {@link TMapViewOptions.outdoorView.enabled}.
10553
+ * initializing the {@link MapView} with `outdoorView: { enabled: true }` in {@link TMapViewOptions}.
9834
10554
  * @example
9835
10555
  * ```typescript
9836
10556
  * const mapView = await showVenue(document.getElementById('mappedin-map'), venue, {
@@ -9848,13 +10568,14 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Out
9848
10568
  */
9849
10569
  constructor(outdoorViewController: OutdoorViewController | undefined);
9850
10570
  /**
9851
- *
10571
+ * @experimental
9852
10572
  * @param style A style object conforming to the [Maplibre Style Spec](https://maplibre.org/maplibre-style-spec/)
9853
10573
  * @returns
9854
10574
  */
9855
10575
  setStyle(style: any): void;
9856
10576
  /**
9857
- * * A position definition for the attribution control to be placed, can be in one of the corners of the map.
10577
+ * @experimental
10578
+ * A position definition for the attribution control to be placed, can be in one of the corners of the map.
9858
10579
  *
9859
10580
  * @param {string} style A position definition
9860
10581
  * @returns
@@ -9864,6 +10585,70 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Out
9864
10585
  export default OutdoorView;
9865
10586
  }
9866
10587
 
10588
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/DynamicFocus' {
10589
+ import { DynamicFocusSceneManager } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
10590
+ /**
10591
+ * @experimental
10592
+ * API to dynamically set the map focus as you pan over map groups. Dynamic Focus can be enabled when
10593
+ * initializing the {@link MapView} with base map set in {@link TMapViewOptions}
10594
+ * @example
10595
+ * ```typescript
10596
+ * const mapView = await showVenue(document.getElementById('mappedin-map'), venue, {
10597
+ * dynamicFocus: {
10598
+ * baseMap: venue.maps[0],
10599
+ * },
10600
+ * });
10601
+ * ```
10602
+ */
10603
+ class DynamicFocus {
10604
+ #private;
10605
+ /**
10606
+ * @hidden
10607
+ */
10608
+ constructor(dynamicFocusSceneManager: DynamicFocusSceneManager);
10609
+ /**
10610
+ * @experimental
10611
+ * Controls whether the map should be set when the user pans over to it.
10612
+ *
10613
+ * @example
10614
+ * ```ts
10615
+ * if (mapView.DynamicFocus) {
10616
+ * mapView.DynamicFocus.setMapOnUserInteraction = false;
10617
+ * }
10618
+ * ```
10619
+ */
10620
+ set setMapOnUserInteraction(value: boolean);
10621
+ /**
10622
+ * @experimental
10623
+ * Returns the current boolean value whether the map should be set when the user pans over it.
10624
+ *
10625
+ * @example
10626
+ * ```ts
10627
+ * if(mapView.DynamicFocus && mapView.DynamicFocus.setMapOnUserInteraction) {
10628
+ * mapView.DynamicFocus.setMapOnUserInteraction = false;
10629
+ * }
10630
+ * ```
10631
+ */
10632
+ get setMapOnUserInteraction(): boolean;
10633
+ /**
10634
+ * @experimental
10635
+ * Force Dynamic Focus to evaluate and set the current map based on camera position.
10636
+ *
10637
+ * @example
10638
+ * ```ts
10639
+ * // Animate the camera to focus on a building
10640
+ * await mapView.Camera.focusOn({
10641
+ * polygons: venue.locations.find(l => l.name === 'Building')?.polygons,
10642
+ * });
10643
+ * // Force Dynamic Focus update
10644
+ * mapView.DynamicFocus?.update();
10645
+ * ```
10646
+ */
10647
+ update(): void;
10648
+ }
10649
+ export { DynamicFocus };
10650
+ }
10651
+
9867
10652
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/quad-tree' {
9868
10653
  export function contains(rect1: Rectangle, rect2: Rectangle): boolean;
9869
10654
  export function intersects(rect1: Rectangle, rect2: Rectangle): boolean;
@@ -9899,6 +10684,137 @@ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/quad-
9899
10684
  export { QuadTree, Rectangle };
9900
10685
  }
9901
10686
 
10687
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/public/api/Layers' {
10688
+ import { LayerController, MappedinMap } from '@mappedin/react-native-sdk/core/packages/renderer/internal';
10689
+ /**
10690
+ * @experimental
10691
+ * API to control per-map layer management, visibility and interpolations.
10692
+ */
10693
+ export class Layers {
10694
+ #private;
10695
+ /**
10696
+ * @private
10697
+ */
10698
+ constructor(layerController: LayerController | undefined);
10699
+ /**
10700
+ * Returns a mapping of all layers for a map, and whether they are visible or not.
10701
+ */
10702
+ getAllLayersForMap(map: MappedinMap): Promise<any[] | {
10703
+ [layerName: string]: boolean;
10704
+ }>;
10705
+ /**
10706
+ * Re-renders the map only showing the layers specified in the array. This will discard any polygons that have been highlighted.
10707
+ */
10708
+ showLayers(layers: string[]): void;
10709
+ }
10710
+ export default LayerController;
10711
+ }
10712
+
10713
+ declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/Mappedin.EffectComposer' {
10714
+ import { N8AOPostPass } from 'n8ao';
10715
+ import { EffectComposer as PPEffectComposer, EffectPass, Pass, ShaderPass, RenderPass, ClearPass, Effect } from 'postprocessing';
10716
+ import type { PerspectiveCamera, Scene, Texture, Mesh } from 'three';
10717
+ import { Color } from 'three';
10718
+ import type { TMapViewOptions } from '@mappedin/react-native-sdk/core/packages/renderer/MapView.types';
10719
+ import { Uniform } from 'three';
10720
+ export type TCompositeUniforms = {
10721
+ animatedColorOpacity: Uniform;
10722
+ inputBuffer: Uniform;
10723
+ staticSceneColorTexture: Uniform;
10724
+ staticSceneDepthTexture: Uniform;
10725
+ animatedSceneColorTexture: Uniform;
10726
+ animatedSceneDepthTexture: Uniform;
10727
+ alwaysOnTopSceneColorTexture: Uniform;
10728
+ alwaysOnBottomSceneColorTexture: Uniform;
10729
+ };
10730
+ type TAmbientOcclusionOptions = Pick<TMapViewOptions, 'aoQuality' | 'aoResolution' | 'aoEnabled'>;
10731
+ export type TPostProcessingOptions = TAmbientOcclusionOptions & {
10732
+ antialias?: boolean;
10733
+ compositeUniforms?: TCompositeUniforms;
10734
+ };
10735
+ export type TPass = (RenderPass | ShaderPass | EffectPass | AmbientOcclusionPass) & {
10736
+ name: string;
10737
+ };
10738
+ export enum EAOQualities {
10739
+ performance = "Performance",
10740
+ low = "Low",
10741
+ medium = "Medium",
10742
+ high = "High",
10743
+ ultra = "Ultra"
10744
+ }
10745
+ export enum EPass {
10746
+ RenderPass = "RenderPass",
10747
+ CompositeRenderPass = "CompositeRenderPass",
10748
+ AmbientOcclusionPass = "AmbientOcclusionPass",
10749
+ EffectsPass = "EffectsPass",
10750
+ FinalPass = "FinalPass"
10751
+ }
10752
+ export enum EEffect {
10753
+ FXAA = "FXAAEffect",
10754
+ Outline = "OutlineEffect"
10755
+ }
10756
+ export type TN8AOConfiguration = {
10757
+ aoSamples?: number;
10758
+ aoRadius?: number;
10759
+ denoiseSamples?: number;
10760
+ denoiseRadius?: number;
10761
+ intensity?: number;
10762
+ denoiseIterations?: number;
10763
+ renderMode?: number;
10764
+ color?: Color;
10765
+ gammaCorrection?: boolean;
10766
+ logarithmicDepthBuffer?: boolean;
10767
+ screenSpaceRadius?: boolean;
10768
+ halfRes?: boolean;
10769
+ depthAwareUpsampling?: boolean;
10770
+ autoRenderBeauty?: boolean;
10771
+ };
10772
+ export class CustomRenderPass extends Pass {
10773
+ effectComposer: EffectComposer;
10774
+ clearPass: ClearPass;
10775
+ constructor(effectComposer: any);
10776
+ render(renderer: any, inputBuffer: any, outputBuffer: any, deltaTime: any, stencilTest: any): void;
10777
+ initialize(_: any, __: any, frameBufferType: any): void;
10778
+ }
10779
+ export class AmbientOcclusionPass extends N8AOPostPass {
10780
+ effectComposer: EffectComposer;
10781
+ cachePass: ShaderPass;
10782
+ constructor(effectComposer: EffectComposer, configuration: TN8AOConfiguration);
10783
+ setAOConfiguration(configuration: TN8AOConfiguration): void;
10784
+ setQualityMode(aoQuality: any): void;
10785
+ get distanceFalloff(): number;
10786
+ initialize(renderer: any, alpha: any, frameBufferType: any): void;
10787
+ render(renderer: any, inputBuffer: any, outputBuffer: any, deltaTime: any, stencilTest: any): void;
10788
+ }
10789
+ export class CustomEffectPass extends EffectPass {
10790
+ constructor(camera?: PerspectiveCamera, ...effects: Effect[]);
10791
+ getEffects(): Effect[];
10792
+ setEffects(effects: Effect[]): void;
10793
+ }
10794
+ export class EffectComposer {
10795
+ options: TPostProcessingOptions;
10796
+ isWebGL2: boolean;
10797
+ effectComposer: PPEffectComposer;
10798
+ scene: Scene;
10799
+ camera: PerspectiveCamera;
10800
+ depthTexture?: Texture;
10801
+ renderer: any;
10802
+ ambientOcclusionPass: AmbientOcclusionPass | null;
10803
+ constructor(renderer: any, options: TPostProcessingOptions);
10804
+ get initialized(): boolean;
10805
+ init(scene: Scene, camera: PerspectiveCamera): void;
10806
+ render(): void;
10807
+ setSize(width: number, height: number): void;
10808
+ getPassByName(passName: EPass): TPass | null;
10809
+ getEffectByName(name: EEffect): Effect | null;
10810
+ setAmbientOcclusionConfiguration(configuration: TN8AOConfiguration): void;
10811
+ setPolygonOutlineColor(color: string): void;
10812
+ addSelectionForOutline(polygonMesh: Mesh): void;
10813
+ removeSelectionForOutline(polygonMesh: Mesh): void;
10814
+ }
10815
+ export {};
10816
+ }
10817
+
9902
10818
  declare module '@mappedin/react-native-sdk/core/packages/renderer/internal/outdoor-context/Mappedin.Tile' {
9903
10819
  import { Texture, Mesh, MeshBasicMaterial } from 'three';
9904
10820
  import type { ICore } from '@mappedin/react-native-sdk/core/packages/renderer/internal';