@mappedin/mappedin-js 5.45.0 → 5.46.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.
@@ -10,7 +10,8 @@
10
10
 
11
11
  declare module '@mappedin/mappedin-js' {
12
12
  import { MapView } from '@mappedin/mappedin-js/renderer/public/MapView';
13
- import { getVenue, getVenueMVF, getVenueBundle, getVenueMaker, Mappedin, downloadBundle, getVenueBundleURL, downloadVenueBundleMVF, MappedinDestinationSet, MappedinMap, TGetVenueBundleOptions, TGetVenueOptions, hydrateVenue, GET_VENUE_EVENT } from '@mappedin/mappedin-js/get-venue';
13
+ import type { Mappedin, MappedinMap, TGetVenueBundleOptions, TGetVenueOptions } from '@mappedin/mappedin-js/get-venue';
14
+ import { getVenue, getVenueMVF, getVenueBundle, getVenueMaker, downloadBundle, getVenueBundleURL, downloadVenueBundleMVF, MappedinDestinationSet, hydrateVenue, GET_VENUE_EVENT } from '@mappedin/mappedin-js/get-venue';
14
15
  import { PositionUpdater } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.core';
15
16
  import type { TMapViewOptions } from '@mappedin/mappedin-js/renderer/MapView.types';
16
17
  export { E_SDK_LOG_LEVEL, setLoggerLevel } from '@mappedin/mappedin-js/common/Mappedin.Logger';
@@ -33,6 +34,7 @@ declare module '@mappedin/mappedin-js' {
33
34
  export type { DynamicFocus } from '@mappedin/mappedin-js/renderer/public/api/DynamicFocus';
34
35
  export type { Layers } from '@mappedin/mappedin-js/renderer/public/api/Layers';
35
36
  export type { TOOLTIP_ANCHOR } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartTooltip';
37
+ export { setStackedMapsOverviewTiltInDegrees } from '@mappedin/mappedin-js/renderer/internal';
36
38
  export type TMappedinInitializeOutput = {
37
39
  mapView: MapView;
38
40
  venue: Mappedin;
@@ -59,8 +61,8 @@ declare module '@mappedin/mappedin-js' {
59
61
  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/mappedin-js/renderer/MapView.enums';
60
62
  export { getVenue, getVenueMVF, getVenueBundle, getVenueMaker, showVenue, downloadBundle, getVenueBundleURL, downloadVenueBundleMVF, hydrateVenue, PositionUpdater, MappedinDestinationSet, GET_VENUE_EVENT, };
61
63
  import DefaultAssetManager from '@mappedin/mappedin-js/renderer/internal/Mappedin.AssetManager';
62
- import { TTileManagerOptions } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
63
- import { TShowWatermarkOptions } from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
64
+ import type { TTileManagerOptions } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
65
+ import type { TShowWatermarkOptions } from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
64
66
  export { setAssetManager } from '@mappedin/mappedin-js/renderer/internal';
65
67
  export { DefaultAssetManager as AssetManager };
66
68
  export type { TMappedinDirective, IAction, IActionArrival, IActionDeparture, IActionExitVortex, IActionTakeVortex, IActionTurn, } from '@mappedin/mappedin-js/get-venue/MappedinDirections';
@@ -981,6 +983,14 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedi
981
983
  import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
982
984
  import { BlueDotManager } from '@mappedin/mappedin-js/renderer/internal';
983
985
  export const DEFAULT_BLUE_DOT_COLOR = "#2266ff";
986
+ /**
987
+ * Position Updater Events
988
+ * @internal
989
+ */
990
+ export enum E_POSITION_UPDATER_EVENT {
991
+ POSITION_UPDATE = 0,
992
+ ERROR = 1
993
+ }
984
994
  export interface IPositionUpdater extends IPubSub {
985
995
  /**
986
996
  * Function that emits position updates
@@ -3894,6 +3904,198 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartTooltip' {
3894
3904
  export default SmartTooltip;
3895
3905
  }
3896
3906
 
3907
+ declare module '@mappedin/mappedin-js/renderer/internal' {
3908
+ import { Texture } from 'three';
3909
+ import { STACKED_MAPS_STATE, STATE } from '@mappedin/mappedin-js/renderer/MapView.enums';
3910
+ import { TMapClickEvent } from '@mappedin/mappedin-js/renderer/MapView.types';
3911
+ import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
3912
+ import { Vector3 } from '@mappedin/mvf';
3913
+ export { MappedinMap, Mappedin, MappedinCoordinate, MappedinPolygon, MappedinNode, MappedinLocation, MappedinVenue, } from '@mappedin/mappedin-js/get-venue';
3914
+ 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/mappedin-js/renderer/MapView.types';
3915
+ export { labelThemes } from '@mappedin/mappedin-js/renderer/MapView.types';
3916
+ 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, ANIMATION_TWEENS, STACKED_MAPS_STATE, } from '@mappedin/mappedin-js/renderer/MapView.enums';
3917
+ export { MAP_RENDER_MODE } from '@mappedin/mappedin-js/get-venue';
3918
+ export { default as JSONSceneLoader } from '@mappedin/mappedin-js/renderer/internal/json-scene-loader';
3919
+ export { default as RENDER } from '@mappedin/mappedin-js/renderer/internal/Mappedin.RenderTasks';
3920
+ export { FrameUpdate, FrameTask, TaskScheduler } from '@mappedin/mappedin-js/get-venue/Mappedin.TaskScheduler';
3921
+ export { default as SceneManager } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager';
3922
+ export { default as DynamicFocusSceneManager } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.DynamicFocusSceneManager';
3923
+ export { PubSub } from '@mappedin/mappedin-js/get-venue/pub-sub.typed';
3924
+ export { default as MapObject } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapObject';
3925
+ export { default as CAMERA_LAYER } from '@mappedin/mappedin-js/renderer/internal/Mappedin.CameraLayers';
3926
+ export { default as AssetManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.AssetManager';
3927
+ export { BundleAssetManager } from '@mappedin/mappedin-js/renderer/bundle-asset-manager';
3928
+ /**
3929
+ * Internal Events and Payloads
3930
+ */
3931
+ export enum INTERNAL_EVENT {
3932
+ ON_FIRST_MAP_LOADED = 0,
3933
+ TEXTURE_LOADED = 1,
3934
+ RENDER = 2,
3935
+ RENDER_NOW = 3,
3936
+ UPDATE_FLIPPABLES = 4,
3937
+ SET_SCENE_MAP = 5,
3938
+ SET_SCENE_START = 6,
3939
+ SET_SCENE = 7,
3940
+ SCENE_VISIBLITY_CHANGED = 8,
3941
+ CAMERA_MOVING = 9,
3942
+ SET_BLUE_DOT_SIZE_FROM_ZOOM = 10,
3943
+ PUBLISH_BLUE_DOT = 11,
3944
+ SET_STATE_SILENT = 12,
3945
+ BLUE_DOT_UPDATE_POSITION = 13,
3946
+ BLUE_DOT_SET_FOLLOWING = 14,
3947
+ CLEAR_MOUSE = 15,
3948
+ MAP_CLICK = 16,
3949
+ USER_ZOOM = 17,
3950
+ USER_ZOOM_BEGIN = 18,
3951
+ USER_ROTATE = 19,
3952
+ USER_ROTATE_BEGIN = 20,
3953
+ USER_PAN = 21,
3954
+ USER_PAN_BEGIN = 22,
3955
+ USER_TILT = 23,
3956
+ USER_MULTI_BEGIN = 24,
3957
+ USER_MULTI_END = 25,
3958
+ FOCUSON_BEGIN = 26,
3959
+ USER_HANDS_ON = 27,
3960
+ USER_HANDS_OFF = 28,
3961
+ JOURNEY_CREATED = 29,
3962
+ JOURNEY_DESTROYED = 30,
3963
+ OUTDOOR_VIEW_LOADED = 31,
3964
+ LAYER_VISIBILITY_CHANGED = 32,
3965
+ USER_INTERACTION_START = 33,
3966
+ USER_INTERACTION_END = 34,
3967
+ STACKED_MAPS_STATE_CHANGE = 35
3968
+ }
3969
+ export type INTERNAL_EVENT_PAYLOAD = {
3970
+ [INTERNAL_EVENT.SET_SCENE_START]: undefined;
3971
+ [INTERNAL_EVENT.SET_SCENE_MAP]: undefined;
3972
+ [INTERNAL_EVENT.ON_FIRST_MAP_LOADED]: undefined;
3973
+ [INTERNAL_EVENT.TEXTURE_LOADED]: Texture;
3974
+ [INTERNAL_EVENT.OUTDOOR_VIEW_LOADED]: undefined;
3975
+ [INTERNAL_EVENT.RENDER]: undefined;
3976
+ [INTERNAL_EVENT.RENDER_NOW]: undefined;
3977
+ [INTERNAL_EVENT.UPDATE_FLIPPABLES]: undefined | boolean;
3978
+ [INTERNAL_EVENT.SET_SCENE]: {
3979
+ context?: string;
3980
+ };
3981
+ [INTERNAL_EVENT.CAMERA_MOVING]: {
3982
+ position: Vector3;
3983
+ tilt: number;
3984
+ rotation: number;
3985
+ zoom: number;
3986
+ };
3987
+ [INTERNAL_EVENT.SET_BLUE_DOT_SIZE_FROM_ZOOM]: number;
3988
+ [INTERNAL_EVENT.PUBLISH_BLUE_DOT]: undefined;
3989
+ [INTERNAL_EVENT.CLEAR_MOUSE]: undefined;
3990
+ [INTERNAL_EVENT.SET_STATE_SILENT]: {
3991
+ state: STATE;
3992
+ };
3993
+ [INTERNAL_EVENT.BLUE_DOT_UPDATE_POSITION]: {
3994
+ x: number;
3995
+ y: number;
3996
+ };
3997
+ [INTERNAL_EVENT.BLUE_DOT_SET_FOLLOWING]: boolean;
3998
+ [INTERNAL_EVENT.MAP_CLICK]: TMapClickEvent;
3999
+ [INTERNAL_EVENT.USER_ZOOM]: undefined;
4000
+ [INTERNAL_EVENT.USER_ZOOM_BEGIN]: undefined;
4001
+ [INTERNAL_EVENT.USER_ROTATE_BEGIN]: undefined;
4002
+ [INTERNAL_EVENT.USER_MULTI_BEGIN]: undefined;
4003
+ [INTERNAL_EVENT.USER_PAN_BEGIN]: undefined;
4004
+ [INTERNAL_EVENT.USER_ROTATE]: undefined;
4005
+ [INTERNAL_EVENT.USER_MULTI_END]: undefined;
4006
+ [INTERNAL_EVENT.FOCUSON_BEGIN]: undefined;
4007
+ [INTERNAL_EVENT.USER_HANDS_ON]: undefined;
4008
+ [INTERNAL_EVENT.USER_HANDS_OFF]: undefined;
4009
+ [INTERNAL_EVENT.USER_INTERACTION_START]: undefined;
4010
+ [INTERNAL_EVENT.USER_INTERACTION_END]: undefined;
4011
+ [INTERNAL_EVENT.USER_PAN]: undefined;
4012
+ [INTERNAL_EVENT.USER_TILT]: undefined;
4013
+ [INTERNAL_EVENT.LAYER_VISIBILITY_CHANGED]: MappedinMap;
4014
+ [INTERNAL_EVENT.JOURNEY_CREATED]: undefined;
4015
+ [INTERNAL_EVENT.JOURNEY_DESTROYED]: undefined;
4016
+ [INTERNAL_EVENT.SCENE_VISIBLITY_CHANGED]: undefined;
4017
+ [INTERNAL_EVENT.USER_INTERACTION_START]: undefined;
4018
+ [INTERNAL_EVENT.USER_INTERACTION_END]: undefined;
4019
+ [INTERNAL_EVENT.STACKED_MAPS_STATE_CHANGE]: STACKED_MAPS_STATE;
4020
+ };
4021
+ /**
4022
+ * Factories
4023
+ */
4024
+ export { Atlas, FlatLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.LabelAtlas.js';
4025
+ export { default as HoverLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HoverLabel';
4026
+ export { default as BaseCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4027
+ export { default as InternalFloatingLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.FloatingLabel';
4028
+ export { default as HTMLCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HTMLCollider';
4029
+ export { Marker } from '@mappedin/mappedin-js/renderer/private/controllers/MarkersController';
4030
+ export { default as SmartTooltip } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartTooltip';
4031
+ export { default as InternalMarker } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Marker';
4032
+ export { ThreeJSMarkerHandle } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapObject';
4033
+ export { default as MapViewScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.Scene';
4034
+ export { default as MapViewStackScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.StackScene';
4035
+ export { default as Element } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Element';
4036
+ export { default as FlippableImage } from '@mappedin/mappedin-js/renderer/internal/Mappedin.FlippableImage';
4037
+ export { default as Building } from '@mappedin/mappedin-js/renderer/private/scene-manager/dynamic-focus-scene-manager/building';
4038
+ export { default as DynamicFocusScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/dynamic-focus-scene-manager/dynamic-focus-scene';
4039
+ /**
4040
+ * Controllers/Managers
4041
+ */
4042
+ export { default as PathsController, Path } from '@mappedin/mappedin-js/renderer/private/controllers/PathsController';
4043
+ export { default as FloatingLabelsController } from '@mappedin/mappedin-js/renderer/private/controllers/FloatingLabelsController';
4044
+ export { default as FlatLabelsController } from '@mappedin/mappedin-js/renderer/private/controllers/FlatLabelsController';
4045
+ export { default as PolygonColorsController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonColorsController';
4046
+ export { default as PolygonHoverColorsController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonHoverColorsController';
4047
+ export { default as MarkersController } from '@mappedin/mappedin-js/renderer/private/controllers/MarkersController';
4048
+ export { default as PolygonInteractionController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonInteractionController';
4049
+ export { default as TooltipsController } from '@mappedin/mappedin-js/renderer/private/controllers/TooltipsController';
4050
+ export { default as PolygonStatesController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonStatesController';
4051
+ export { default as PolygonImagesController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonImagesController';
4052
+ export { default as ThreeDMarkersController } from '@mappedin/mappedin-js/renderer/private/controllers/ThreeDMarkersController';
4053
+ export { default as BlueDotController } from '@mappedin/mappedin-js/renderer/private/controllers/BlueDotController';
4054
+ export { default as BlueDotManager } from '@mappedin/mappedin-js/renderer/internal/blue-dot-manager';
4055
+ export { default as CameraController } from '@mappedin/mappedin-js/renderer/private/controllers/CameraController';
4056
+ export { default as EventSystem } from '@mappedin/mappedin-js/renderer/private/controllers/EventSystem';
4057
+ export { default as ClosedPolygonManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.ClosedPolygonManager';
4058
+ export { default as BinaryAssetManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BinaryAssetManager';
4059
+ export { default as SmartCollisionEngine } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4060
+ export { default as BillboardManager } from '@mappedin/mappedin-js/renderer/private/controllers/BillboardManager';
4061
+ export { default as StackedMapsController, setStackedMapsOverviewTiltInDegrees, } from '@mappedin/mappedin-js/renderer/private/controllers/StackedMapsController';
4062
+ export { MultiBufferRenderer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Renderer';
4063
+ export { JourneyController } from '@mappedin/mappedin-js/renderer/private/controllers/JourneyController';
4064
+ export { default as OutdoorViewController } from '@mappedin/mappedin-js/renderer/private/controllers/OutdoorViewController';
4065
+ export { default as ExportController } from '@mappedin/mappedin-js/renderer/private/controllers/ExportController';
4066
+ export { default as WatermarkController } from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
4067
+ export { default as LayerController } from '@mappedin/mappedin-js/renderer/private/controllers/LayerController';
4068
+ /**
4069
+ * Types
4070
+ */
4071
+ export type { TSceneTransitionOptions } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager';
4072
+ export type { IPositionUpdater, IBlueDotCore } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.core';
4073
+ export type { TSafeAreaInsets, TCameraTargets, TFocusOnCameraOptions, TCameraTransform, TCameraAnimationOptions, } from '@mappedin/mappedin-js/renderer/private/controllers/CameraController';
4074
+ export type { TColliderPosition } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4075
+ export type { ICollider, TColliderStrategy } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4076
+ export { EColliderAction } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4077
+ export type { IHTMLCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HTMLCollider';
4078
+ export { COLLIDER_STRATEGY_LOW_PRIORITY } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4079
+ export { default as BlueDotCore } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.core';
4080
+ export { default as BlueDotUI } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.ui';
4081
+ export { default as CameraControls } from '@mappedin/mappedin-js/renderer/internal/Mappedin.CameraControls.js';
4082
+ export { default as Renderer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Renderer.js';
4083
+ export { determineStartingMap, getObject, getObjectId } from '@mappedin/mappedin-js/renderer/internal/utils';
4084
+ export { default as MapManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapManager';
4085
+ export { default as DebugUI } from '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUI';
4086
+ export { DebugUIScalarSlider, DebugUIColorPicker } from '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUIControl';
4087
+ export type { Collider, ColliderQuadTree } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4088
+ export { MapView } from '@mappedin/mappedin-js/renderer/public/MapView';
4089
+ export { default as Logger } from '@mappedin/mappedin-js/common/Mappedin.Logger';
4090
+ export { TileManager, TILE_COLOR } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
4091
+ export type { ICore } from '@mappedin/mappedin-js/renderer/private/Core.interface';
4092
+ export * from '@mappedin/mappedin-js/renderer/private/Core';
4093
+ const setAssetManager: <T extends import("./internal/Mappedin.AssetManager").default>(am: T) => void;
4094
+ export { setAssetManager };
4095
+ export let MAPLIBRE_WORKER_URL: string;
4096
+ export function setMaplibreWorkerURL(url: string): void;
4097
+ }
4098
+
3897
4099
  declare module '@mappedin/mappedin-js/renderer/MapView.enums' {
3898
4100
  export enum GEOLOCATION_STATUS {
3899
4101
  SUCCESS = 0
@@ -4297,238 +4499,46 @@ declare module '@mappedin/mappedin-js/renderer/private/controllers/WatermarkCont
4297
4499
  export default WatermarkController;
4298
4500
  }
4299
4501
 
4300
- declare module '@mappedin/mappedin-js/renderer/internal' {
4301
- import { Texture } from 'three';
4302
- import { STACKED_MAPS_STATE, STATE } from '@mappedin/mappedin-js/renderer/MapView.enums';
4303
- import { TMapClickEvent } from '@mappedin/mappedin-js/renderer/MapView.types';
4304
- import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
4305
- import { Vector3 } from '@mappedin/mvf';
4306
- export { MappedinMap, Mappedin, MappedinCoordinate, MappedinPolygon, MappedinNode, MappedinLocation, MappedinVenue, } from '@mappedin/mappedin-js/get-venue';
4307
- 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/mappedin-js/renderer/MapView.types';
4308
- export { labelThemes } from '@mappedin/mappedin-js/renderer/MapView.types';
4309
- 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, ANIMATION_TWEENS, STACKED_MAPS_STATE, } from '@mappedin/mappedin-js/renderer/MapView.enums';
4310
- export { MAP_RENDER_MODE } from '@mappedin/mappedin-js/get-venue';
4311
- export { default as JSONSceneLoader } from '@mappedin/mappedin-js/renderer/internal/json-scene-loader';
4312
- export { default as RENDER } from '@mappedin/mappedin-js/renderer/internal/Mappedin.RenderTasks';
4313
- export { FrameUpdate, FrameTask, TaskScheduler } from '@mappedin/mappedin-js/get-venue/Mappedin.TaskScheduler';
4314
- export { default as SceneManager } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager';
4315
- export { default as DynamicFocusSceneManager } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.DynamicFocusSceneManager';
4316
- export { PubSub } from '@mappedin/mappedin-js/get-venue/pub-sub.typed';
4317
- export { default as MapObject } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapObject';
4318
- export { default as CAMERA_LAYER } from '@mappedin/mappedin-js/renderer/internal/Mappedin.CameraLayers';
4319
- export { default as AssetManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.AssetManager';
4320
- export { BundleAssetManager } from '@mappedin/mappedin-js/renderer/bundle-asset-manager';
4502
+ declare module '@mappedin/mappedin-js/get-venue/MappedinDirections' {
4503
+ import { IDirectionsResult } from '@mappedin/mappedin-js/navigator';
4504
+ import { ACTION_TYPE, BEARING_TYPE } from '@mappedin/mappedin-js/navigator/Directive';
4505
+ import type { MappedinNode, MappedinVortex, MappedinMap, Mappedin } from '@mappedin/mappedin-js/get-venue/internal';
4506
+ export interface IActionDeparture {
4507
+ type: ACTION_TYPE.DEPARTURE;
4508
+ }
4509
+ export interface IActionArrival {
4510
+ type: ACTION_TYPE.ARRIVAL;
4511
+ }
4512
+ export interface IActionTakeVortex {
4513
+ type: ACTION_TYPE.TAKEVORTEX;
4514
+ toMap: MappedinMap;
4515
+ fromMap: MappedinMap;
4516
+ }
4517
+ export interface IActionExitVortex {
4518
+ type: ACTION_TYPE.EXITVORTEX;
4519
+ toMap: MappedinMap;
4520
+ fromMap: MappedinMap;
4521
+ }
4522
+ export interface IActionTurn {
4523
+ type: ACTION_TYPE.TURN;
4524
+ bearing: BEARING_TYPE;
4525
+ referencePosition?: string;
4526
+ }
4527
+ export type IAction = IActionArrival | IActionDeparture | IActionTurn | IActionTakeVortex | IActionExitVortex;
4528
+ /** this is the "overloaded" version of the directive, with get-venue classes instead of stubs */
4529
+ export type TMappedinDirective = {
4530
+ node: MappedinNode;
4531
+ /**
4532
+ * Distance from the last instruction to the current. Useful for turn by turn navigation
4533
+ */
4534
+ distance: number;
4535
+ instruction: string;
4536
+ action?: IAction;
4537
+ atLocation?: MappedinVortex;
4538
+ type?: BEARING_TYPE;
4539
+ };
4321
4540
  /**
4322
- * Internal Events and Payloads
4323
- */
4324
- export enum INTERNAL_EVENT {
4325
- ON_FIRST_MAP_LOADED = 0,
4326
- TEXTURE_LOADED = 1,
4327
- RENDER = 2,
4328
- RENDER_NOW = 3,
4329
- UPDATE_FLIPPABLES = 4,
4330
- SET_SCENE_MAP = 5,
4331
- SET_SCENE_START = 6,
4332
- SET_SCENE = 7,
4333
- SCENE_VISIBLITY_CHANGED = 8,
4334
- CAMERA_MOVING = 9,
4335
- SET_BLUE_DOT_SIZE_FROM_ZOOM = 10,
4336
- PUBLISH_BLUE_DOT = 11,
4337
- SET_STATE_SILENT = 12,
4338
- BLUE_DOT_UPDATE_POSITION = 13,
4339
- BLUE_DOT_SET_FOLLOWING = 14,
4340
- CLEAR_MOUSE = 15,
4341
- MAP_CLICK = 16,
4342
- USER_ZOOM = 17,
4343
- USER_ZOOM_BEGIN = 18,
4344
- USER_ROTATE = 19,
4345
- USER_ROTATE_BEGIN = 20,
4346
- USER_PAN = 21,
4347
- USER_PAN_BEGIN = 22,
4348
- USER_TILT = 23,
4349
- USER_MULTI_BEGIN = 24,
4350
- USER_MULTI_END = 25,
4351
- FOCUSON_BEGIN = 26,
4352
- USER_HANDS_ON = 27,
4353
- USER_HANDS_OFF = 28,
4354
- JOURNEY_CREATED = 29,
4355
- JOURNEY_DESTROYED = 30,
4356
- OUTDOOR_VIEW_LOADED = 31,
4357
- LAYER_VISIBILITY_CHANGED = 32,
4358
- USER_INTERACTION_START = 33,
4359
- USER_INTERACTION_END = 34,
4360
- STACKED_MAPS_STATE_CHANGE = 35
4361
- }
4362
- export type INTERNAL_EVENT_PAYLOAD = {
4363
- [INTERNAL_EVENT.SET_SCENE_START]: undefined;
4364
- [INTERNAL_EVENT.SET_SCENE_MAP]: undefined;
4365
- [INTERNAL_EVENT.ON_FIRST_MAP_LOADED]: undefined;
4366
- [INTERNAL_EVENT.TEXTURE_LOADED]: Texture;
4367
- [INTERNAL_EVENT.OUTDOOR_VIEW_LOADED]: undefined;
4368
- [INTERNAL_EVENT.RENDER]: undefined;
4369
- [INTERNAL_EVENT.RENDER_NOW]: undefined;
4370
- [INTERNAL_EVENT.UPDATE_FLIPPABLES]: undefined | boolean;
4371
- [INTERNAL_EVENT.SET_SCENE]: {
4372
- context?: string;
4373
- };
4374
- [INTERNAL_EVENT.CAMERA_MOVING]: {
4375
- position: Vector3;
4376
- tilt: number;
4377
- rotation: number;
4378
- zoom: number;
4379
- };
4380
- [INTERNAL_EVENT.SET_BLUE_DOT_SIZE_FROM_ZOOM]: number;
4381
- [INTERNAL_EVENT.PUBLISH_BLUE_DOT]: undefined;
4382
- [INTERNAL_EVENT.CLEAR_MOUSE]: undefined;
4383
- [INTERNAL_EVENT.SET_STATE_SILENT]: {
4384
- state: STATE;
4385
- };
4386
- [INTERNAL_EVENT.BLUE_DOT_UPDATE_POSITION]: {
4387
- x: number;
4388
- y: number;
4389
- };
4390
- [INTERNAL_EVENT.BLUE_DOT_SET_FOLLOWING]: boolean;
4391
- [INTERNAL_EVENT.MAP_CLICK]: TMapClickEvent;
4392
- [INTERNAL_EVENT.USER_ZOOM]: undefined;
4393
- [INTERNAL_EVENT.USER_ZOOM_BEGIN]: undefined;
4394
- [INTERNAL_EVENT.USER_ROTATE_BEGIN]: undefined;
4395
- [INTERNAL_EVENT.USER_MULTI_BEGIN]: undefined;
4396
- [INTERNAL_EVENT.USER_PAN_BEGIN]: undefined;
4397
- [INTERNAL_EVENT.USER_ROTATE]: undefined;
4398
- [INTERNAL_EVENT.USER_MULTI_END]: undefined;
4399
- [INTERNAL_EVENT.FOCUSON_BEGIN]: undefined;
4400
- [INTERNAL_EVENT.USER_HANDS_ON]: undefined;
4401
- [INTERNAL_EVENT.USER_HANDS_OFF]: undefined;
4402
- [INTERNAL_EVENT.USER_INTERACTION_START]: undefined;
4403
- [INTERNAL_EVENT.USER_INTERACTION_END]: undefined;
4404
- [INTERNAL_EVENT.USER_PAN]: undefined;
4405
- [INTERNAL_EVENT.USER_TILT]: undefined;
4406
- [INTERNAL_EVENT.LAYER_VISIBILITY_CHANGED]: MappedinMap;
4407
- [INTERNAL_EVENT.JOURNEY_CREATED]: undefined;
4408
- [INTERNAL_EVENT.JOURNEY_DESTROYED]: undefined;
4409
- [INTERNAL_EVENT.SCENE_VISIBLITY_CHANGED]: undefined;
4410
- [INTERNAL_EVENT.USER_INTERACTION_START]: undefined;
4411
- [INTERNAL_EVENT.USER_INTERACTION_END]: undefined;
4412
- [INTERNAL_EVENT.STACKED_MAPS_STATE_CHANGE]: STACKED_MAPS_STATE;
4413
- };
4414
- /**
4415
- * Factories
4416
- */
4417
- export { Atlas, FlatLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.LabelAtlas.js';
4418
- export { default as HoverLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HoverLabel';
4419
- export { default as BaseCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4420
- export { default as InternalFloatingLabel } from '@mappedin/mappedin-js/renderer/internal/Mappedin.FloatingLabel';
4421
- export { default as HTMLCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HTMLCollider';
4422
- export { Marker } from '@mappedin/mappedin-js/renderer/private/controllers/MarkersController';
4423
- export { default as SmartTooltip } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartTooltip';
4424
- export { default as InternalMarker } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Marker';
4425
- export { ThreeJSMarkerHandle } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapObject';
4426
- export { default as MapViewScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.Scene';
4427
- export { default as MapViewStackScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.StackScene';
4428
- export { default as Element } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Element';
4429
- export { default as FlippableImage } from '@mappedin/mappedin-js/renderer/internal/Mappedin.FlippableImage';
4430
- export { default as Building } from '@mappedin/mappedin-js/renderer/private/scene-manager/dynamic-focus-scene-manager/building';
4431
- export { default as DynamicFocusScene } from '@mappedin/mappedin-js/renderer/private/scene-manager/dynamic-focus-scene-manager/dynamic-focus-scene';
4432
- /**
4433
- * Controllers/Managers
4434
- */
4435
- export { default as PathsController, Path } from '@mappedin/mappedin-js/renderer/private/controllers/PathsController';
4436
- export { default as FloatingLabelsController } from '@mappedin/mappedin-js/renderer/private/controllers/FloatingLabelsController';
4437
- export { default as FlatLabelsController } from '@mappedin/mappedin-js/renderer/private/controllers/FlatLabelsController';
4438
- export { default as PolygonColorsController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonColorsController';
4439
- export { default as PolygonHoverColorsController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonHoverColorsController';
4440
- export { default as MarkersController } from '@mappedin/mappedin-js/renderer/private/controllers/MarkersController';
4441
- export { default as PolygonInteractionController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonInteractionController';
4442
- export { default as TooltipsController } from '@mappedin/mappedin-js/renderer/private/controllers/TooltipsController';
4443
- export { default as PolygonStatesController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonStatesController';
4444
- export { default as PolygonImagesController } from '@mappedin/mappedin-js/renderer/private/controllers/PolygonImagesController';
4445
- export { default as ThreeDMarkersController } from '@mappedin/mappedin-js/renderer/private/controllers/ThreeDMarkersController';
4446
- export { default as BlueDotController } from '@mappedin/mappedin-js/renderer/private/controllers/BlueDotController';
4447
- export { default as BlueDotManager } from '@mappedin/mappedin-js/renderer/internal/blue-dot-manager';
4448
- export { default as CameraController } from '@mappedin/mappedin-js/renderer/private/controllers/CameraController';
4449
- export { default as EventSystem } from '@mappedin/mappedin-js/renderer/private/controllers/EventSystem';
4450
- export { default as ClosedPolygonManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.ClosedPolygonManager';
4451
- export { default as BinaryAssetManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BinaryAssetManager';
4452
- export { default as SmartCollisionEngine } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4453
- export { default as BillboardManager } from '@mappedin/mappedin-js/renderer/private/controllers/BillboardManager';
4454
- export { default as StackedMapsController } from '@mappedin/mappedin-js/renderer/private/controllers/StackedMapsController';
4455
- export { MultiBufferRenderer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Renderer';
4456
- export { JourneyController } from '@mappedin/mappedin-js/renderer/private/controllers/JourneyController';
4457
- export { default as OutdoorViewController } from '@mappedin/mappedin-js/renderer/private/controllers/OutdoorViewController';
4458
- export { default as ExportController } from '@mappedin/mappedin-js/renderer/private/controllers/ExportController';
4459
- export { default as WatermarkController } from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
4460
- export { default as LayerController } from '@mappedin/mappedin-js/renderer/private/controllers/LayerController';
4461
- /**
4462
- * Types
4463
- */
4464
- export type { TSceneTransitionOptions } from '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager';
4465
- export type { IPositionUpdater, IBlueDotCore } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.core';
4466
- export type { TSafeAreaInsets, TCameraTargets, TFocusOnCameraOptions, TCameraTransform, TCameraAnimationOptions, } from '@mappedin/mappedin-js/renderer/private/controllers/CameraController';
4467
- export type { TColliderPosition } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4468
- export type { ICollider, TColliderStrategy } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4469
- export { EColliderAction } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollider';
4470
- export type { IHTMLCollider } from '@mappedin/mappedin-js/renderer/internal/Mappedin.HTMLCollider';
4471
- export { COLLIDER_STRATEGY_LOW_PRIORITY } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4472
- export { default as BlueDotCore } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.core';
4473
- export { default as BlueDotUI } from '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.ui';
4474
- export { default as CameraControls } from '@mappedin/mappedin-js/renderer/internal/Mappedin.CameraControls.js';
4475
- export { default as Renderer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.Renderer.js';
4476
- export { determineStartingMap, getObject, getObjectId } from '@mappedin/mappedin-js/renderer/internal/utils';
4477
- export { default as MapManager } from '@mappedin/mappedin-js/renderer/internal/Mappedin.MapManager';
4478
- export { default as DebugUI } from '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUI';
4479
- export { DebugUIScalarSlider, DebugUIColorPicker } from '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUIControl';
4480
- export type { Collider, ColliderQuadTree } from '@mappedin/mappedin-js/renderer/internal/Mappedin.SmartCollisionEngine';
4481
- export { MapView } from '@mappedin/mappedin-js/renderer/public/MapView';
4482
- export { default as Logger } from '@mappedin/mappedin-js/common/Mappedin.Logger';
4483
- export { TileManager, TILE_COLOR } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
4484
- export type { ICore } from '@mappedin/mappedin-js/renderer/private/Core.interface';
4485
- export * from '@mappedin/mappedin-js/renderer/private/Core';
4486
- const setAssetManager: <T extends import("./internal/Mappedin.AssetManager").default>(am: T) => void;
4487
- export { setAssetManager };
4488
- export let MAPLIBRE_WORKER_URL: string;
4489
- export function setMaplibreWorkerURL(url: string): void;
4490
- }
4491
-
4492
- declare module '@mappedin/mappedin-js/get-venue/MappedinDirections' {
4493
- import { IDirectionsResult } from '@mappedin/mappedin-js/navigator';
4494
- import { ACTION_TYPE, BEARING_TYPE } from '@mappedin/mappedin-js/navigator/Directive';
4495
- import type { MappedinNode, MappedinVortex, MappedinMap, Mappedin } from '@mappedin/mappedin-js/get-venue/internal';
4496
- export interface IActionDeparture {
4497
- type: ACTION_TYPE.DEPARTURE;
4498
- }
4499
- export interface IActionArrival {
4500
- type: ACTION_TYPE.ARRIVAL;
4501
- }
4502
- export interface IActionTakeVortex {
4503
- type: ACTION_TYPE.TAKEVORTEX;
4504
- toMap: MappedinMap;
4505
- fromMap: MappedinMap;
4506
- }
4507
- export interface IActionExitVortex {
4508
- type: ACTION_TYPE.EXITVORTEX;
4509
- toMap: MappedinMap;
4510
- fromMap: MappedinMap;
4511
- }
4512
- export interface IActionTurn {
4513
- type: ACTION_TYPE.TURN;
4514
- bearing: BEARING_TYPE;
4515
- referencePosition?: string;
4516
- }
4517
- export type IAction = IActionArrival | IActionDeparture | IActionTurn | IActionTakeVortex | IActionExitVortex;
4518
- /** this is the "overloaded" version of the directive, with get-venue classes instead of stubs */
4519
- export type TMappedinDirective = {
4520
- node: MappedinNode;
4521
- /**
4522
- * Distance from the last instruction to the current. Useful for turn by turn navigation
4523
- */
4524
- distance: number;
4525
- instruction: string;
4526
- action?: IAction;
4527
- atLocation?: MappedinVortex;
4528
- type?: BEARING_TYPE;
4529
- };
4530
- /**
4531
- * Directions Object
4541
+ * Directions Object
4532
4542
  */
4533
4543
  export class MappedinDirections {
4534
4544
  #private;
@@ -5597,6 +5607,51 @@ declare module '@mappedin/mappedin-js/get-venue/MappedinLocation' {
5597
5607
  */
5598
5608
  get parent(): MappedinLocation | undefined;
5599
5609
  set parent(parent: MappedinLocation | undefined);
5610
+ /**
5611
+ * Specific instances of this location with different properties.
5612
+ * Typically, there will be at least one node or polygon defined,
5613
+ * plus one or more other properties that are different from the parent.
5614
+ * The remaining properties will be the same as the parent.
5615
+ * For example, suppose there is a location like this:
5616
+ *
5617
+ * ```json
5618
+ * {
5619
+ * "id": "location-id-1",
5620
+ * "name": "Location 1",
5621
+ * "nodes": ["node-1", "node-2"],
5622
+ * "polygons": ["polygon-1", "polygon-2"],
5623
+ * "externalId": "externalId-1",
5624
+ * "description": "Description 1",
5625
+ * }
5626
+ * ```
5627
+ *
5628
+ * (Note that for clarity, we have put strings in for nodes and polygons, but in practice they would be objects.)
5629
+ *
5630
+ * Then suppose it had an `instances` array that contained an object that looked like this:
5631
+ *
5632
+ * ```json
5633
+ * {
5634
+ * "id": "instance-id-1",
5635
+ * "name": "Location 1 - A",
5636
+ * "nodes": ["node-1"],
5637
+ * "polygons": ["polygon-1"],
5638
+ * "externalId": "externalId-1-A",
5639
+ * "description": "Description 1",
5640
+ * }
5641
+ * ```
5642
+ * This says "Location 1" is the parent location, and "Location 1 - A" is an instance of it. The instance has a different name, and a different external ID, and it only applies to node `node-1` and polygon `polygon-1`.
5643
+ * The ID will always be different, but other properties (like the description) are the same as the parent.
5644
+ *
5645
+ * Example use cases:
5646
+ * - A Mall may have a location with two nodes and one polygon. It may then have an instance with one of the nodes, and operating hours
5647
+ * that are different from the parent. This indicates that this instance is an entrance for the location that is accessible at different times, perhaps for an interior mall entrance, when the main location (and other, exterior entrance) is open later than the rest of the mall.
5648
+ * - An airport may have a location with several polygons and nodes, and an instance for each node (and corresponding polygon, if any) with a different siblingGroup. The location in the sibling group may be the airport terminal, or airside vs landside.
5649
+ * This would allow an application to show the location once in a search result, but offer UX to select the instance that is in the right terminal.
5650
+ *
5651
+ * Note: Instances are actual EnterpriseLocations. This means they have all the properties of a normal EnterpriseLocation, including an `instances` property, that will always be undefined. They also do NOT have a parent property, or any other explicit reference to the parent location. These instances are
5652
+ * only referenced from their parent location, and will not show up in other places in the map data. However, they should otherwise behave like normal EnterpriseLocations, being targetable for things like navigation and focus.
5653
+ */
5654
+ get instances(): MappedinLocation[];
5600
5655
  /**
5601
5656
  * Categories related to this location.
5602
5657
  *
@@ -6892,7 +6947,7 @@ declare module '@mappedin/mappedin-js/renderer/index.rn' {
6892
6947
  export type { ThingsOption } from '@mappedin/mappedin-js/renderer/MapView.types';
6893
6948
  export type { IFlatLabels } from '@mappedin/mappedin-js/renderer/public/api/FlatLabels';
6894
6949
  export type { IFloatingLabels } from '@mappedin/mappedin-js/renderer/public/api/FloatingLabels';
6895
- export type { TBlueDotPositionUpdate, TBlueDotStateChange, TJourneyOptions, TMapViewOptions, TCreateMarkerOptions, TGeolocationObject, TPathOptions, TFlatLabelOptions, TAddFloatingLabelOptions, TAddFlatLabelOptions, TLabelAllLocationCommonOptions, TFloatingLabelAllLocationsOptions, TFlatLabelAllLocationsOptions, TLabelAllLocationFlatLabelOptions, TLabelAllLocationFloatingLabelOptions, TEnableBlueDotOptions, TFloatingLabelAppearance, TFlatLabelAppearance, CAMERA_EVENT_PAYLOAD, TMapClickEvent, TGetPolygonsAtCoordinateOptions, TShowVenueOptions, TAnimationOptions, } from '@mappedin/mappedin-js/renderer/MapView.types';
6950
+ export type { TBlueDotPositionUpdate, TBlueDotStateChange, TJourneyOptions, TMapViewOptions, TCreateMarkerOptions, TGeolocationObject, TPathOptions, TFlatLabelOptions, TAddFloatingLabelOptions, TAddFlatLabelOptions, TLabelAllLocationCommonOptions, TFloatingLabelAllLocationsOptions, TFlatLabelAllLocationsOptions, TLabelAllLocationFlatLabelOptions, TLabelAllLocationFloatingLabelOptions, TEnableBlueDotOptions, TFloatingLabelAppearance, TFlatLabelAppearance, CAMERA_EVENT_PAYLOAD, TMapClickEvent, TGetPolygonsAtCoordinateOptions, TShowVenueOptions, TAnimationOptions, TCreateTooltipOptions, } from '@mappedin/mappedin-js/renderer/MapView.types';
6896
6951
  export { BEARING_TYPE, ACTION_TYPE } from '@mappedin/mappedin-js/navigator';
6897
6952
  export type { IDirectionsResult, E_MESSAGES as E_GET_DIRECTIONS_MESSAGES } from '@mappedin/mappedin-js/navigator';
6898
6953
  export type { TGetVenueBundleOptions, TGetVenueOptions, TGetVenueMakerOptions, TMappedinDirective, TMappedinOfflineSearchOptions, TMappedinOfflineSearchResult, TMappedinOfflineSearchSuggestions, TMappedinOfflineSearchAllOptions, TMappedinOfflineAllSearchMatch, TDirectionToOptions, } from '@mappedin/mappedin-js/get-venue';
@@ -6901,994 +6956,678 @@ declare module '@mappedin/mappedin-js/renderer/index.rn' {
6901
6956
  export { MAP_RENDER_MODE } from '@mappedin/mappedin-js/get-venue/Mappedin.enums';
6902
6957
  }
6903
6958
 
6904
- declare module '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.Tile' {
6905
- import { Texture, Mesh, MeshBasicMaterial } from 'three';
6906
- import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
6907
- import { MappedinCoordinate, MappedinMap } from '@mappedin/mappedin-js/get-venue';
6908
- import { TileManager } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
6909
- export class Tile {
6910
- #private;
6911
- center: MappedinCoordinate;
6912
- zoomLevel: number;
6913
- mesh: Mesh;
6914
- material?: MeshBasicMaterial;
6915
- texture?: Texture;
6916
- cache: {
6917
- tileXY?: {
6918
- tileX: number;
6919
- tileY: number;
6959
+ declare module '@mappedin/mappedin-js/renderer/internal/json-scene-loader' {
6960
+ import { Group } from 'three';
6961
+ import { Element } from '@mappedin/mappedin-js/renderer/internal';
6962
+ import DefaultAssetManager from '@mappedin/mappedin-js/renderer/internal/Mappedin.AssetManager';
6963
+ import { MappedinMap, MappedinPolygon } from '@mappedin/mappedin-js/renderer/internal';
6964
+ import { type MAP_RENDER_MODE } from '@mappedin/mappedin-js/get-venue';
6965
+ class JSONSceneLoader {
6966
+ defaultExtrudeSettings: {
6967
+ amount: number;
6968
+ bevelEnabled: boolean;
6920
6969
  };
6921
- tileBoundingBoxInLatLon?: number[];
6922
- };
6923
- get tileXY(): {
6924
- tileX: number;
6925
- tileY: number;
6926
- };
6927
- get tileBoundingBoxInLatLon(): number[];
6928
- constructor(center: MappedinCoordinate, zoomLevel: number, tileManager: TileManager, core: ICore, currentAbortController: AbortController);
6929
- rendered: boolean;
6930
- discardTexture(): void;
6931
- applyTexture(): void;
6932
- render(metersPerTile: number, referenceMap: MappedinMap): Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>;
6970
+ materials: {};
6971
+ scale: number;
6972
+ assetManager: DefaultAssetManager;
6973
+ setAssetManager<T extends DefaultAssetManager>(am: T): void;
6974
+ overlayHeight: number;
6975
+ /**
6976
+ Takes in either an object containing polygons and generates a 3D scene based
6977
+ on it, or a string URL to fetch those polygons from.
6978
+ **/
6979
+ load(polygons: string | MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE, allLayersVisible?: boolean): Promise<{
6980
+ container: Group<import("three").Object3DEventMap>;
6981
+ elements: (Element | null)[];
6982
+ visibleLayers: Set<unknown>;
6983
+ }>;
6984
+ _build(polygons: MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE,
6985
+ /**
6986
+ * If true, sets all layers to be visible. If false, uses the layer visibility from the mapClass.
6987
+ */
6988
+ allLayersVisible?: boolean): Promise<{
6989
+ container: Group<import("three").Object3DEventMap>;
6990
+ elements: (Element | null)[];
6991
+ visibleLayers: Set<unknown>;
6992
+ }>;
6933
6993
  }
6994
+ const _default: JSONSceneLoader;
6995
+ export default _default;
6934
6996
  }
6935
6997
 
6936
- declare module '@mappedin/mappedin-js/renderer/private/Core.interface' {
6937
- import { Color, Vector2, Vector3, Mesh } from 'three';
6938
- import type { TPadding, TGetPolygonsAtCoordinateOptions, TMapViewOptions, TileManager, BillboardManager, StackedMapsController, SmartCollisionEngine, OutdoorViewController, LayerController } from '@mappedin/mappedin-js/renderer/internal';
6939
- 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, ExportController, EventSystem } from '@mappedin/mappedin-js/renderer/internal';
6940
- import Tween, { Easing } from '@tweenjs/tween.js';
6941
- import WatermarkController from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
6942
- import PolygonHoverColorsController from '@mappedin/mappedin-js/renderer/private/controllers/PolygonHoverColorsController';
6943
- import { E_MAP_CHANGED_REASON } from '@mappedin/mappedin-js/renderer/MapView.enums';
6944
- export type TFocusOptionsLegacy = {
6998
+ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.RenderTasks' {
6999
+ /**
7000
+ * Tasks that can be submitted to the renderer. The `STATIC_AND_ANIMATED` task
7001
+ * is equivalent to a full re-render.
7002
+ */
7003
+ enum RENDER {
7004
+ ANIMATED = "animated",
7005
+ ALWAYS_ON_TOP = "always_on_top",
7006
+ ALL = "all",
7007
+ TWEEN = "tween",
7008
+ COMPOSITE = "composite"
7009
+ }
7010
+ export default RENDER;
7011
+ }
7012
+
7013
+ declare module '@mappedin/mappedin-js/get-venue/Mappedin.TaskScheduler' {
7014
+ /**
7015
+ * A function that can be submitted to the Task Scheduler to run each frame for
7016
+ * some provided number of frames. A single update can be repeatedly submitted;
7017
+ * if the number of frames left on the update is less than `frameCount`, it will
7018
+ * be reset to `frameCount`.
7019
+ *
7020
+ * @class FrameUpdate
7021
+ * @private
7022
+ */
7023
+ export class FrameUpdate {
6945
7024
  /**
6946
- * An array of Nodes to focus in on
7025
+ * Create a new frame update that can be submitted to a scheduler.
7026
+ * @constructor
7027
+ * @param [options] {Object} Options for the update
7028
+ * @param [options.callback] {function}
7029
+ * The actual function to run every time this update is scheduled for
7030
+ * a frame.
7031
+ * @param [options.frameCount=1] {number}
7032
+ * How many frames this update should run for when it's submitted to
7033
+ * a scheduler
7034
+ * @param [options.ordering=0] {number}
7035
+ * An ordering value that's used to determine the order in which
7036
+ * frame updates will be run within a frame; larger numbers will
7037
+ * be run first
7038
+ * @param [options.supersededBy=[]] {[FrameUpdate]}
7039
+ * If this update is scheduled to run in a frame, but another update in
7040
+ * the provided list is also scheduled to run on that frame, then
7041
+ * this update will not be run.
7042
+ * @param [options.name=undefined] {string}
7043
+ * If provided, an arbitrary name for logging purposes.
7044
+ * @param [options.userdata] {Any}
7045
+ * Arbitrary data that you can store along with this update.
6947
7046
  */
6948
- nodes?: (MappedinNode | MappedinNode['id'])[];
7047
+ constructor(options: {
7048
+ callback: (...args: any[]) => any;
7049
+ frameCount?: number;
7050
+ ordering?: number;
7051
+ supersededBy?: Set<any>;
7052
+ name: string;
7053
+ userdata?: Record<string, any>;
7054
+ });
7055
+ _callback: (...args: any[]) => any;
7056
+ _frameCount: number;
7057
+ _ordering: number;
7058
+ _supersededBy: Set<any>;
7059
+ name: string;
7060
+ _remainingFrameCount: number;
7061
+ _lastFrameTime: number;
7062
+ userdata?: Record<string, any>;
6949
7063
  /**
6950
- * An array of Polygons to focus on. It's the center of the bounds of all Polygons, designed to fit everything into view.
7064
+ * Return the amount of time that this frame update took to execute during
7065
+ * its most recent execution, in milliseconds. If called during this frame
7066
+ * update, the value returned will be for the previous invocation. If called
7067
+ * before this frame update has been executed at least once, the returned
7068
+ * value is unspecified.
7069
+ *
7070
+ * @method lastFrameTime
7071
+ * @return {number} the previous frame time, in milliseconds
6951
7072
  */
6952
- polygons?: (MappedinPolygon | MappedinPolygon['id'])[];
7073
+ getLastFrameTime(): number;
7074
+ }
7075
+ /**
7076
+ * A task that can be submitted to the Task Scheduler to be run every time
7077
+ * there is a frame update with spare time in the frame.
7078
+ *
7079
+ * @class FrameTask
7080
+ * @private
7081
+ */
7082
+ export class FrameTask {
6953
7083
  /**
6954
- * The duration (in ms) the focus animation should last for.
6955
- * @defaultValue `100`
7084
+ * Create a new frame task that can be submitted to a scheduler.
7085
+ * @constructor
7086
+ * @param [options] {Object} Options for the task
7087
+ * @param [options.callback] {function}
7088
+ * The actual function to run when this task is scheduled.
7089
+ * @param [options.group=null] {FrameTaskGroup}
7090
+ * If provided, a group to which this task will be added when scheduled
7091
+ * @param [options.priority=0] {number}
7092
+ * Tasks with higher priority will be taken from the queue before tasks
7093
+ * with a lower priority.
7094
+ * @param [options.postponeOnAdd=false] {number}
7095
+ * If true, this task will not be run until `resumeTask` is called on the
7096
+ * scheduler.
7097
+ * @param [options.name=undefined] {string}
7098
+ * If provided, an arbitrary name for logging purposes.
7099
+ * @param [options.userdata] {Any}
7100
+ * Arbitrary data that you can store along with this task.
6956
7101
  */
6957
- duration?: number;
7102
+ constructor(options: {
7103
+ userdata?: Record<string, any>;
7104
+ priority?: number;
7105
+ group?: FrameTaskGroup;
7106
+ postponeOnAdd?: number | boolean;
7107
+ name: string;
7108
+ lastFrameTime?: number;
7109
+ callback: (...args: any[]) => any;
7110
+ });
7111
+ _postponed: number | boolean;
7112
+ userdata: Record<string, any>;
7113
+ _priority: number;
7114
+ _group: FrameTaskGroup | null;
7115
+ name: string;
7116
+ _lastFrameTime: number;
7117
+ _callback: (...args: any[]) => any;
7118
+ _complete: boolean;
7119
+ _scheduled: boolean;
7120
+ _cancelled: boolean;
6958
7121
  /**
6959
- * Whether to zoom the camera in or out, or just pan it.
6960
- * @defaultValue `true`
7122
+ * Return true if this task has been run at least once.
7123
+ *
7124
+ * @method isComplete
7125
+ * @return {boolean}
6961
7126
  */
6962
- changeZoom?: boolean;
7127
+ isComplete(): boolean;
6963
7128
  /**
6964
- * The animation curve to use for zooming in. Uses the animateCamera one by default.
7129
+ * Return the amount of time that this frame task took to execute,
7130
+ * in milliseconds. If this task has not yet completed, the returned value
7131
+ * is unspecified.
7132
+ *
7133
+ * @method lastFrameTime
7134
+ * @return {number} the frame time, in milliseconds
6965
7135
  */
6966
- curve?: typeof Easing;
7136
+ getLastFrameTime(): number;
7137
+ }
7138
+ /**
7139
+ * A group of tasks that must all be completed before the group is considered
7140
+ * complete. The tasks will be automatically garbage collected so that references
7141
+ * to the task don't linger.
7142
+ *
7143
+ * @class FrameTaskGroup
7144
+ * @private
7145
+ */
7146
+ export class FrameTaskGroup {
6967
7147
  /**
6968
- * Camera tilt between 0 (top-down) to 1 (from the side)
7148
+ * Create a new frame task group.
7149
+ *
7150
+ * @constructor
7151
+ * @param [options] {Object} Options for the task group
7152
+ * @param [options.onComplete] {function}
7153
+ * A callback that will be triggered once every task in this group
7154
+ * has been completed. This callback may schedule a task, and the
7155
+ * scheduler will run that task in the same frame, if there is still
7156
+ * frame time for it.
7157
+ * @param [options.priority=0] {number}
7158
+ * The priority of all the tasks in this group.
7159
+ * @param [options.postponeOnAdd=false] {number}
7160
+ * If true, tasks from this task group will not be run until `resumeTask`
7161
+ * is called on the scheduler with this group.
7162
+ * @param [options.name=undefined] {string}
7163
+ * If provided, an arbitrary name for logging purposes.
7164
+ * @param [options.userdata] {Any}
7165
+ * Arbitrary data that you can store along with this task group.
6969
7166
  */
6970
- tilt?: number;
7167
+ constructor(options: {
7168
+ onComplete?: (...args: any[]) => any;
7169
+ priority?: number;
7170
+ userdata: Record<string, any>;
7171
+ postponeOnAdd: number | boolean;
7172
+ name: string;
7173
+ });
7174
+ _postponed: number | boolean;
7175
+ _onComplete: (...args: any[]) => any;
7176
+ _priority: number;
7177
+ userdata: Record<string, any>;
7178
+ name: string;
7179
+ _tasks: Set<any>;
7180
+ _scheduledTasks: Set<any>;
7181
+ _scheduled: boolean;
7182
+ _cancelled: boolean;
6971
7183
  /**
6972
- * Rotation in degrees
7184
+ * Return true if every task in this group has been run at least once.
7185
+ * @method isComplete
7186
+ * @return {boolean}
6973
7187
  */
6974
- rotation?: number;
7188
+ isComplete(): boolean;
6975
7189
  /**
6976
- * You can overide the {{#crossLink "MapView/focusZoomFactor:property"}}{{/crossLink}} for a specific {{#crossLink "MapView/focusOn:method"}}{{/crossLink}} call, rather than globally, if you like.
7190
+ * Return a list of tasks in this group. This will be a copy of the
7191
+ * underlying task group, so it's safe to mutate the group while
7192
+ * iterating over this array.
7193
+ *
7194
+ * @method tasks
7195
+ * @return {[FrameTask]} list of tasks in this group
6977
7196
  */
6978
- focusZoomFactor?: number;
7197
+ getTasks(): any[];
6979
7198
  /**
6980
- * Sets a floor for how close you can zoom in on the scene. If it's lower than mapView.controls.minZoom, it's ignored.
6981
- * @defaultValue: 0
7199
+ * Empty this task group. This will trivially satisfy `isComplete`.
7200
+ *
7201
+ * @method clear
6982
7202
  */
6983
- minZoom?: number;
6984
- maxZoom?: number;
7203
+ clear(): void;
6985
7204
  /**
6986
- * Whether {@link Camera.minZoom} and {@link Camera.maxZoom} should be recalculated during the focusing animation.
7205
+ * Return one arbitrary incomplete task from this group, or undefined if
7206
+ * there are none.
7207
+ *
7208
+ * @method _popTask
7209
+ * @return {FrameTask} arbitrary scheduled task
7210
+ * @private
6987
7211
  */
6988
- updateZoomLimits?: boolean;
6989
- padding?: TPadding;
6990
- points?: any[];
6991
- boundingBox?: any;
6992
- callback: () => void;
6993
- cancelledCallback?: () => void;
6994
- };
7212
+ _popTask(): any;
7213
+ }
6995
7214
  /**
6996
- * Ben Liu, 2023/03/29
6997
- *
6998
- * This causes the generation of the index.d.ts file to break entirely for some reason.
7215
+ * A timer for the task scheduler that uses real wall-time to determine if there's
7216
+ * enough remaining time in a frame to execute another task.
6999
7217
  *
7000
- * TODO: Figure out why
7218
+ * @class RealTimeTimer
7219
+ * @private
7001
7220
  */
7002
- export interface ICore extends PubSub<INTERNAL_EVENT_PAYLOAD, INTERNAL_EVENT> {
7221
+ export class RealTimeTimer {
7222
+ _maxMillisecondsPerFrame: number;
7223
+ _time: number;
7003
7224
  /**
7004
- * Controllers
7225
+ * @constructor
7226
+ * @param [options] {Object} Options for the timer
7227
+ * @param [options.maxMillisecondsPerFrame]
7228
+ * If the time since the beginning of the frame has been less than
7229
+ * or equal to this value, then another task may be executed
7005
7230
  */
7006
- eventSystem: EventSystem;
7007
- floatingLabels: FloatingLabelsController;
7008
- flatLabels: FlatLabelsController;
7009
- paths: PathsController;
7010
- polygonColors: PolygonColorsController;
7011
- polygonHoverColors: PolygonHoverColorsController;
7012
- polygonInteraction: PolygonInteractionController;
7013
- polygonStates: PolygonStatesController;
7014
- polygonImages: PolygonImagesController;
7015
- markers: MarkersController;
7016
- tooltips: TooltipsController;
7017
- threeDMarkers: ThreeDMarkersController;
7018
- blueDot: BlueDotController;
7019
- camera: CameraController;
7020
- tileManager: TileManager;
7021
- billboardManager: BillboardManager;
7022
- stackedMaps: StackedMapsController;
7023
- outdoorViewController?: OutdoorViewController;
7024
- exportController: ExportController;
7025
- watermark: WatermarkController;
7026
- layerController: LayerController;
7027
- state: STATE;
7028
- options: TMapViewOptions & {
7029
- onDataLoaded?: (data: Mappedin) => void;
7030
- onFirstMapLoaded?: (data: Mappedin) => void;
7031
- };
7032
- currentPath?: MappedinNode[];
7033
- referenceMap: MappedinMap;
7034
- taskScheduler: TaskScheduler;
7035
- sceneManager: SceneManager | undefined;
7036
- loadOptions?: TMapViewOptions['loadOptions'];
7037
- imageFlippingEnabled: boolean;
7038
- imageFlippingCache: Record<any, any>;
7039
- cachedPadding: TPadding;
7040
- getCameraFrameForPoints: any;
7041
- polygonMeshesById: Record<string, Mesh>;
7042
- textLabelsByPolygonId: Record<string, FlatLabel>;
7043
- renderer: any;
7044
- scene: any;
7045
- cameraParameters: Vector2;
7046
- cameraParametersZoomVector: Vector2;
7047
- resolution: Vector2;
7048
- determineNewLabelSize: any;
7049
- visibleMapsInCurrentScene: MappedinMap[];
7050
- visibleLayersInCurrentScene: {
7051
- [mapId: string]: MappedinPolygon['layer'][];
7052
- };
7053
- visibleMapObjectsInCurrentScene: MapObject[];
7054
- mapSetInProgress: Promise<undefined>;
7055
- mapSetResolved: (...args: any[]) => any;
7056
- on<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, fn: (payload: INTERNAL_EVENT_PAYLOAD[EVENT_NAME] extends {
7057
- data: null;
7058
- } ? INTERNAL_EVENT_PAYLOAD[EVENT_NAME]['data'] : INTERNAL_EVENT_PAYLOAD[EVENT_NAME]) => void): void;
7059
- off<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, fn: changeListenerFn<INTERNAL_EVENT_PAYLOAD[EVENT_NAME]>): void;
7060
- publish<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, payload?: INTERNAL_EVENT_PAYLOAD[EVENT_NAME]): void;
7231
+ constructor(options?: {
7232
+ maxMillisecondsPerFrame?: number;
7233
+ });
7061
7234
  /**
7062
- * Manual camera controls for MapView. Generally you should be using the functions on MapView like {{#crossLink "MapView/focusOn:method"}}{{/crossLink}},
7063
- * but if you have some cool animations in mind, you can do it with the {{#crossLink "CameraControls"}}{{/crossLink}}.
7064
- * Some of the functions don't do anything in 2D.
7235
+ * Begin timing a frame.
7065
7236
  *
7237
+ * @method beginFrame
7066
7238
  */
7067
- controls: any;
7239
+ beginFrame(): void;
7068
7240
  /**
7069
- * The Venue data this MapView is using.
7241
+ * If true, there is enough time remaining to execute another task.
7070
7242
  *
7071
- * @property venue {MappedinVenue}
7072
- * @final
7243
+ * @method hasTimeRemaining
7244
+ * @return {boolean}
7073
7245
  */
7074
- readonly venue: Mappedin;
7246
+ hasTimeRemaining(): boolean;
7247
+ }
7248
+ /**
7249
+ * A timer that ticks every time `hasTimeRemaining` is called.
7250
+ *
7251
+ * @class FixedTimer
7252
+ * @private
7253
+ */
7254
+ export class FixedTimer {
7255
+ _ticks: number;
7256
+ maxTasksPerFrame: number;
7075
7257
  /**
7076
- * The div MapView is using.
7077
- *
7078
- * @property container {Div}
7079
- * @final
7258
+ * @constructor
7259
+ * @param [options] {Object} Options for the timer
7260
+ * @param [options.maxTasksPerFrame=5]
7261
+ * The number of tasks that will be exceuted in a single update call.
7262
+ * Can be modified as the `maxTasksPerFrame` property on this boject.
7080
7263
  */
7081
- readonly container: HTMLElement;
7264
+ constructor(options?: {
7265
+ maxTasksPerFrame?: number;
7266
+ });
7082
7267
  /**
7083
- * The ID of the Map currently being displayed.
7268
+ * Begin timing a frame.
7084
7269
  *
7270
+ * @method beginFrame
7085
7271
  */
7086
- readonly currentMap: string | null;
7272
+ beginFrame(): void;
7087
7273
  /**
7088
- * Change this factor to influence how much the camera zooms in on a {@link IMapView3D.focusOn} call.
7274
+ * If true, there is enough time remaining to execute another task.
7089
7275
  *
7090
- * @property focusZoomFactor {Integer}
7091
- * @default 3
7276
+ * @method hasTimeRemaining
7277
+ * @return {boolean}
7092
7278
  */
7093
- focusZoomFactor: number;
7279
+ hasTimeRemaining(): boolean;
7280
+ }
7281
+ export type TaskSchedulerOptions = {
7282
+ timer?: RealTimeTimer;
7283
+ performance?: boolean;
7284
+ onUpdateEnd?: () => void;
7285
+ };
7286
+ /**
7287
+ * A class that handles scheduling tasks to be performed within the time
7288
+ * constraints of frame updates, triggered using `requestAnimationFrame`.
7289
+ *
7290
+ * Tasks can either be scheduled once per frame (called "frame updates"), or
7291
+ * to execute as many times per frame as there is room for after processing
7292
+ * all frame updates (called "frame tasks").
7293
+ *
7294
+ * Posted tasks will always run during the same frame, assuming there's time to
7295
+ * process them. However, an update or task that posts an update will not run
7296
+ * that update until the next frame.
7297
+ *
7298
+ * @class TaskScheduler
7299
+ * @private
7300
+ */
7301
+ export class TaskScheduler {
7094
7302
  /**
7095
- * Returns the value you should call {@link CameraControls.setZoom} on to fit the Polygon exactly.
7303
+ * Construct a new `TaskScheduler` with no tasks scheduled.
7096
7304
  *
7097
- * @return The zoom level that will fit the Polygon
7305
+ * @constructor
7306
+ * @param [options] {Object} Options for the scheduler
7307
+ * @param [options.timer=new RealTimeTimer()]
7308
+ * Timer that determines whether there is sufficient time left in a frame
7309
+ * to continue executing tasks
7310
+ * @param [options.performance=false]
7311
+ * If true, this task scheduler will annotate tasks and frame updates with
7312
+ * performance information.
7098
7313
  */
7099
- getZoomLevelForPolygon(props: {
7100
- /**
7101
- * The Polygon or Polygon ID to get the zoom level for
7102
- */
7103
- polygonOrPolygonId: MappedinPolygon | string;
7104
- }): number;
7314
+ constructor(options?: TaskSchedulerOptions);
7315
+ _raf?: (callback: FrameRequestCallback) => number;
7316
+ options?: TaskSchedulerOptions;
7317
+ _timer: RealTimeTimer;
7318
+ _performance: boolean;
7319
+ _scheduledUpdatesByOrdering: Multimap;
7320
+ _scheduledTasksByPriority: Multimap;
7321
+ _postponedTasks: Set<any>;
7322
+ _requestAnimationFrameHandle: number | null;
7323
+ _updatesToRunThisFrame: any[];
7324
+ _lastFrameTime: number;
7325
+ _updatesRunLastFrame: Set<any>;
7105
7326
  /**
7106
- * Returns the value you should call {@link CameraControls.setZoom} on to fit the {@link IMapView3D.currentMap} exactly.
7327
+ * Empty the task scheduler's queue. All tasks in it will be cancelled.
7107
7328
  *
7108
- * @return The zoom level that will fit the {@link IMapView3D.currentMap}.
7329
+ * @method clear
7109
7330
  */
7110
- getZoomLevelForCurrentMap(): number;
7331
+ clear(): void;
7111
7332
  /**
7112
- * Returns the angle that points to north, in radians, from the default orientation.
7333
+ * Destroy this task scheduler and remove all tasks from it.
7113
7334
  *
7114
- * @return The angle to north from the default orientation, in radians.
7335
+ * @method destroy
7115
7336
  */
7116
- getNorth(): number;
7337
+ destroy(): void;
7117
7338
  /**
7118
- * Takes an element on the DOM and rotates it such that the top is pointing north. It will rotate with the camera, staying locked
7119
- * on north. If you would like to align it do a different direction, or a different side of the element, pass in an offset. This
7120
- * is how you would do a compass rose.
7121
- *
7122
- * This will modify your element's transform.
7123
- *
7124
- * @param element The element on the page to rotate.
7125
- * @param offset The amount to offset the rotation by, in radians.
7339
+ * Schedule this task scheduler to execute updates and tasks on the next
7340
+ * available animation frame.
7126
7341
  *
7342
+ * @method requestAnimationFrame
7127
7343
  */
7128
- lockNorth(element: HTMLElement, offset?: number): void;
7129
- /**
7130
- * Stops the MapView from trying to rotate your element with the camera. Do this if you remove the element, or want to stop it from rotating.
7131
- * @param element The node to stop rotating. It won't reset the transform, just leave it as is.
7132
- */
7133
- unlockNorth(element: HTMLElement): void;
7344
+ requestAnimationFrame(): void;
7134
7345
  /**
7135
- * Returns all polygons that contain the specified MappedinCoordinate.
7346
+ * Run all scheduled updates, and re-schedule another animation frame if any
7347
+ * scheduled updates still exist. If any scheduled update specifies
7348
+ * `shouldRunTasksAfterCompletion`, this will also run queued tasks until the
7349
+ * frame time runs out.
7136
7350
  *
7137
- * @param coordinate The MappedinCoordinate to check
7138
- * @param hoverableMeshChildren
7139
- * @param options {@link TGetPolygonsAtCoordinateOptions}
7351
+ * @method update
7352
+ * @param timestamp {number} the current animation time, as returned from
7353
+ * `performance.now()`; will be automatically filled in by
7354
+ * `requestAnimationFrame` when it triggers this as a callback
7140
7355
  */
7141
- getPolygonsAtScreenCoordinate(x: number, y: number, options?: TGetPolygonsAtCoordinateOptions): MappedinPolygon[];
7356
+ update(timestamp: number): void;
7142
7357
  /**
7143
- * Returns all polygons at the specified screen coordinate.
7358
+ * Execute all tasks that are currently pending, without regard for the
7359
+ * available frame time.
7144
7360
  *
7145
- * @param coordinate The Vector2 coordinate to check
7146
- * @param hoverableMeshChildren
7147
- * @param options {@link TGetPolygonsAtCoordinateOptions}
7361
+ * @method flushTasks
7148
7362
  */
7149
- getPolygonsAtCoordinate(coordinate: MappedinCoordinate, options?: TGetPolygonsAtCoordinateOptions): MappedinPolygon[];
7150
- currentInteractionEvent: INTERNAL_EVENT | undefined;
7151
- interactivePolygons: Record<string, boolean>;
7363
+ flushTasks(): void;
7152
7364
  /**
7153
- * An object containing polygon ids and their hover colors.
7365
+ * Return the amount of time elapsed during the last completed frame update,
7366
+ * in milliseconds. This value is unspecified if the task scheduler's
7367
+ * `update` method has not yet run or if the scheduler has been cleared.
7368
+ * If called during a frame update, this will
7369
+ * return the time elapsed during the previous frame update.
7370
+ *
7371
+ * @method lastFrameTime
7372
+ * @return {number} time elapsed during last frame update, in milliseconds
7154
7373
  */
7155
- polygonHoverColorsById: Record<string, Color>;
7374
+ getLastFrameTime(): number;
7156
7375
  /**
7157
- * An Object to keep track of highlighted polygon id and the highlight color as the value initiated by setPolygonColor
7376
+ * Return a set containing every update that was run during the previous
7377
+ * frame update. This will be empty if the task scheduler's `update` method
7378
+ * has not yet been run or if the scheduler has been cleared.
7158
7379
  */
7159
- highlightedPolygons: Record<string, string>;
7380
+ getUpdatesRunLastFrame(): Set<any>;
7381
+ _executeOneTask(timestamp: number): void;
7160
7382
  /**
7161
- * An object containing all outlined polygons.
7383
+ * Schedule an update to be run for the next `update.frameCount` frames. If
7384
+ * the update already exists in the scheduler, the update's frame count will
7385
+ * be refreshed to `update.frameCount`. This will also schedule an animation
7386
+ * frame to begin processing the update.
7387
+ *
7388
+ * @method scheduleUpdate
7389
+ * @param task {FrameUpdate} the update to schedule
7162
7390
  */
7163
- outlinedPolygons: Map<string, MappedinPolygon>;
7391
+ scheduleUpdate(update: FrameUpdate): void;
7164
7392
  /**
7165
- * A plane that is parallel to the ground and is used for raycasting.
7393
+ * Schedule a task to be run during a frame update. This will also schedule
7394
+ * an animation frame to begin processing the task queue.
7395
+ *
7396
+ * @method scheduleTask
7397
+ * @param task {FrameTask} the task to schedule
7166
7398
  */
7167
- worldPlane: Mesh;
7168
- getPositionLatLon(lat: number, lon: number, map?: MappedinMap | string | null): Vector3;
7169
- currentScale: number;
7170
- getPositionPolygon(polygon: MappedinPolygon | string): Vector3;
7399
+ scheduleTask(task: FrameTask): void;
7171
7400
  /**
7172
- * Takes an x/y pair in Mappedin coordinate space and gives you a Vector3 in scene space
7173
- * @param nodeOrCoordinate a node or coordinate
7401
+ * If the given update is in the queue, remove it.
7402
+ *
7403
+ * @method cancelUpdate
7404
+ * @param task {FrameUpdate} the update to cancel
7174
7405
  */
7175
- convertTo3DMapPosition(nodeOrCoordinate: MappedinCoordinate | MappedinNode): Vector3;
7406
+ cancelUpdate(update: FrameUpdate): void;
7176
7407
  /**
7177
- * Converts a Vector-like object into a MappedinCoordinate for a map.
7178
- * @param position an object with x and y, like a Vector3
7179
- * @param mapClass An optional map; otherwise, the current map will be used.
7408
+ * If the given task or group is in the queue, remove it. Cancelling a
7409
+ * completed task is a no-op.
7410
+ *
7411
+ * Canceling an individual task will also remove it from its task group, if
7412
+ * it isn't already complete.
7413
+ *
7414
+ * @method cancelTask
7415
+ * @param task {FrameTask or FrameTaskGroup} the task to cancel
7180
7416
  */
7181
- convert3DMapPositionToCoordinate(position: {
7182
- x: number;
7183
- y: number;
7184
- }, mapClass?: MappedinMap): MappedinCoordinate;
7417
+ cancelTask(task: FrameTask | FrameTaskGroup): void;
7185
7418
  /**
7186
- * Converts a 2D x,y screen position into a 3D MappedinCoordinate using projection
7419
+ * Set the provided task or group not to run, until it's resumed using `resumeTask`.
7420
+ *
7421
+ * Tasks that are in a group can't be postponed individually; instead, call
7422
+ * `postponeTask` with the entire group.
7423
+ *
7424
+ * @method postponeTask
7425
+ * @param task {FrameTask or FrameTaskGroup} the task to postpone
7187
7426
  */
7188
- convertScreenCoordinateToMapCoordinate(x: number, y: number, map: MappedinMap): MappedinCoordinate;
7189
- setPadding(padding: {
7190
- top: number;
7191
- left: number;
7192
- bottom: number;
7193
- right: number;
7194
- }): void;
7195
- smartCollisionEngine: SmartCollisionEngine;
7196
- mapObjects: Map<MappedinMap['id'], MapObject>;
7427
+ postponeTask(task: FrameTask | FrameTaskGroup): void;
7197
7428
  /**
7198
- * The scene only renders when something has changed. This should be something a 3rd party developer doesn't need to worry about,
7199
- * but if you are doing something weird, or have your own special tween for something, you will want to call this function.
7200
- * You can call it as often as you want, it just sets a flag that we need to render again, and renders a few frames if we weren't already doing that.
7201
- * Ignored in 2D.
7429
+ * Allow a postponed task or task group to resume processing. This will also
7430
+ * request an animation frame to allow the resumed task to be processed.
7431
+ *
7432
+ * Tasks that are in a group can't be resumed individually; instead, call
7433
+ * `resumeTask` with the entire group.
7434
+ *
7435
+ * @method resumeTask
7436
+ * @param task {FrameTask or FrameTaskGroup} the task to resume
7202
7437
  */
7203
- tryRendering(renderMode?: RENDER): void;
7204
- setMapReason?: E_MAP_CHANGED_REASON;
7205
- setMap(mapOrMapId: MappedinMap | string): Promise<null>;
7206
- setMapWithReason(mapOrMapId: MappedinMap | string, context: E_MAP_CHANGED_REASON): Promise<null>;
7207
- getPositionNode(node: MappedinNode): Vector3;
7208
- cameraObject: any;
7209
- setBackgroundColor(color: string, alpha?: number): void;
7210
- mapManager: any;
7211
- focusOn(focusOptions: TFocusOptionsLegacy): Tween;
7212
- canvasWidth: number;
7213
- canvasHeight: number;
7214
- setState(state: STATE): Promise<void>;
7215
- getNearestNodeByScreenCoordinate(x: number, y: number, mapOrMapId?: MappedinMap | MappedinMap['id']): MappedinNode;
7216
- destroy(): void;
7217
- }
7218
- }
7219
-
7220
- declare module '@mappedin/mappedin-js/renderer/internal/json-scene-loader' {
7221
- import { Group } from 'three';
7222
- import { Element } from '@mappedin/mappedin-js/renderer/internal';
7223
- import DefaultAssetManager from '@mappedin/mappedin-js/renderer/internal/Mappedin.AssetManager';
7224
- import { MappedinMap, MappedinPolygon } from '@mappedin/mappedin-js/renderer/internal';
7225
- import { type MAP_RENDER_MODE } from '@mappedin/mappedin-js/get-venue';
7226
- class JSONSceneLoader {
7227
- defaultExtrudeSettings: {
7228
- amount: number;
7229
- bevelEnabled: boolean;
7230
- };
7231
- materials: {};
7232
- scale: number;
7233
- assetManager: DefaultAssetManager;
7234
- setAssetManager<T extends DefaultAssetManager>(am: T): void;
7235
- overlayHeight: number;
7236
- /**
7237
- Takes in either an object containing polygons and generates a 3D scene based
7238
- on it, or a string URL to fetch those polygons from.
7239
- **/
7240
- load(polygons: string | MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE, allLayersVisible?: boolean): Promise<{
7241
- container: Group<import("three").Object3DEventMap>;
7242
- elements: (Element | null)[];
7243
- visibleLayers: Set<unknown>;
7244
- }>;
7245
- _build(polygons: MappedinPolygon[], mapClass: MappedinMap, mapLoadingStrategy?: MAP_RENDER_MODE,
7438
+ resumeTask(task: FrameTask | FrameTaskGroup): void;
7246
7439
  /**
7247
- * If true, sets all layers to be visible. If false, uses the layer visibility from the mapClass.
7440
+ * Change the priority of the given scheduled task or task group.
7441
+ *
7442
+ * @method setTaskPriority
7443
+ * @param task {FrameTask or FrameTaskGroup} the task whose priority will be changed
7444
+ * @param priority {number} the priority to assign the task
7248
7445
  */
7249
- allLayersVisible?: boolean): Promise<{
7250
- container: Group<import("three").Object3DEventMap>;
7251
- elements: (Element | null)[];
7252
- visibleLayers: Set<unknown>;
7253
- }>;
7254
- }
7255
- const _default: JSONSceneLoader;
7256
- export default _default;
7257
- }
7258
-
7259
- declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.RenderTasks' {
7260
- /**
7261
- * Tasks that can be submitted to the renderer. The `STATIC_AND_ANIMATED` task
7262
- * is equivalent to a full re-render.
7263
- */
7264
- enum RENDER {
7265
- ANIMATED = "animated",
7266
- ALWAYS_ON_TOP = "always_on_top",
7267
- ALL = "all",
7268
- TWEEN = "tween",
7269
- COMPOSITE = "composite"
7446
+ setTaskPriority(task: FrameTask | FrameTaskGroup, priority: number): void;
7270
7447
  }
7271
- export default RENDER;
7272
- }
7273
-
7274
- declare module '@mappedin/mappedin-js/get-venue/Mappedin.TaskScheduler' {
7275
7448
  /**
7276
- * A function that can be submitted to the Task Scheduler to run each frame for
7277
- * some provided number of frames. A single update can be repeatedly submitted;
7278
- * if the number of frames left on the update is less than `frameCount`, it will
7279
- * be reset to `frameCount`.
7449
+ * A map that maps a numeric key to a set of values.
7280
7450
  *
7281
- * @class FrameUpdate
7451
+ * For use in the scheduler, we also maintain a sorted list of keys.
7452
+ *
7453
+ * @class Multimap
7282
7454
  * @private
7283
7455
  */
7284
- export class FrameUpdate {
7456
+ class Multimap {
7285
7457
  /**
7286
- * Create a new frame update that can be submitted to a scheduler.
7287
- * @constructor
7288
- * @param [options] {Object} Options for the update
7289
- * @param [options.callback] {function}
7290
- * The actual function to run every time this update is scheduled for
7291
- * a frame.
7292
- * @param [options.frameCount=1] {number}
7293
- * How many frames this update should run for when it's submitted to
7294
- * a scheduler
7295
- * @param [options.ordering=0] {number}
7296
- * An ordering value that's used to determine the order in which
7297
- * frame updates will be run within a frame; larger numbers will
7298
- * be run first
7299
- * @param [options.supersededBy=[]] {[FrameUpdate]}
7300
- * If this update is scheduled to run in a frame, but another update in
7301
- * the provided list is also scheduled to run on that frame, then
7302
- * this update will not be run.
7303
- * @param [options.name=undefined] {string}
7304
- * If provided, an arbitrary name for logging purposes.
7305
- * @param [options.userdata] {Any}
7306
- * Arbitrary data that you can store along with this update.
7458
+ * @method constructor
7307
7459
  */
7308
- constructor(options: {
7309
- callback: (...args: any[]) => any;
7310
- frameCount?: number;
7311
- ordering?: number;
7312
- supersededBy?: Set<any>;
7313
- name: string;
7314
- userdata?: Record<string, any>;
7315
- });
7316
- _callback: (...args: any[]) => any;
7317
- _frameCount: number;
7318
- _ordering: number;
7319
- _supersededBy: Set<any>;
7320
- name: string;
7321
- _remainingFrameCount: number;
7322
- _lastFrameTime: number;
7323
- userdata?: Record<string, any>;
7460
+ constructor();
7461
+ _map: Map<any, any>;
7462
+ _size: number;
7463
+ _sortedKeys: any[];
7324
7464
  /**
7325
- * Return the amount of time that this frame update took to execute during
7326
- * its most recent execution, in milliseconds. If called during this frame
7327
- * update, the value returned will be for the previous invocation. If called
7328
- * before this frame update has been executed at least once, the returned
7329
- * value is unspecified.
7465
+ * Return true if the set for the given key contains the provided value.
7330
7466
  *
7331
- * @method lastFrameTime
7332
- * @return {number} the previous frame time, in milliseconds
7467
+ * @method has
7468
+ * @param key {number} the key whose set to check
7469
+ * @param value {Any} the value to check
7333
7470
  */
7334
- getLastFrameTime(): number;
7335
- }
7336
- /**
7337
- * A task that can be submitted to the Task Scheduler to be run every time
7338
- * there is a frame update with spare time in the frame.
7339
- *
7340
- * @class FrameTask
7341
- * @private
7342
- */
7343
- export class FrameTask {
7471
+ has(key: number, value: any): any;
7344
7472
  /**
7345
- * Create a new frame task that can be submitted to a scheduler.
7346
- * @constructor
7347
- * @param [options] {Object} Options for the task
7348
- * @param [options.callback] {function}
7349
- * The actual function to run when this task is scheduled.
7350
- * @param [options.group=null] {FrameTaskGroup}
7351
- * If provided, a group to which this task will be added when scheduled
7352
- * @param [options.priority=0] {number}
7353
- * Tasks with higher priority will be taken from the queue before tasks
7354
- * with a lower priority.
7355
- * @param [options.postponeOnAdd=false] {number}
7356
- * If true, this task will not be run until `resumeTask` is called on the
7357
- * scheduler.
7358
- * @param [options.name=undefined] {string}
7359
- * If provided, an arbitrary name for logging purposes.
7360
- * @param [options.userdata] {Any}
7361
- * Arbitrary data that you can store along with this task.
7473
+ * Return the list of elements at the given key. Make sure not to modify
7474
+ * it, as it will mess up the total element count.
7475
+ *
7476
+ * @method get
7477
+ * @param key {number}
7478
+ * @param value {Set(Any)}
7362
7479
  */
7363
- constructor(options: {
7364
- userdata?: Record<string, any>;
7365
- priority?: number;
7366
- group?: FrameTaskGroup;
7367
- postponeOnAdd?: number | boolean;
7368
- name: string;
7369
- lastFrameTime?: number;
7370
- callback: (...args: any[]) => any;
7371
- });
7372
- _postponed: number | boolean;
7373
- userdata: Record<string, any>;
7374
- _priority: number;
7375
- _group: FrameTaskGroup | null;
7376
- name: string;
7377
- _lastFrameTime: number;
7378
- _callback: (...args: any[]) => any;
7379
- _complete: boolean;
7380
- _scheduled: boolean;
7381
- _cancelled: boolean;
7480
+ get(key: number): any;
7382
7481
  /**
7383
- * Return true if this task has been run at least once.
7384
- *
7385
- * @method isComplete
7386
- * @return {boolean}
7482
+ * @method insert
7483
+ * @param key {number} the key to which another value will be added
7484
+ * @param value {Any} the value to add to the key's set
7387
7485
  */
7388
- isComplete(): boolean;
7486
+ insert(key: number, value: any): void;
7389
7487
  /**
7390
- * Return the amount of time that this frame task took to execute,
7391
- * in milliseconds. If this task has not yet completed, the returned value
7392
- * is unspecified.
7393
- *
7394
- * @method lastFrameTime
7395
- * @return {number} the frame time, in milliseconds
7488
+ * @method delete
7489
+ * @param key {number} the key at which the value is stored
7490
+ * @param value {Any} the value to delete
7396
7491
  */
7397
- getLastFrameTime(): number;
7398
- }
7399
- /**
7400
- * A group of tasks that must all be completed before the group is considered
7401
- * complete. The tasks will be automatically garbage collected so that references
7402
- * to the task don't linger.
7403
- *
7404
- * @class FrameTaskGroup
7405
- * @private
7406
- */
7407
- export class FrameTaskGroup {
7492
+ delete(key: number, value: any): void;
7408
7493
  /**
7409
- * Create a new frame task group.
7494
+ * Remove and return an arbitrary value from the set at the given key.
7410
7495
  *
7411
- * @constructor
7412
- * @param [options] {Object} Options for the task group
7413
- * @param [options.onComplete] {function}
7414
- * A callback that will be triggered once every task in this group
7415
- * has been completed. This callback may schedule a task, and the
7416
- * scheduler will run that task in the same frame, if there is still
7417
- * frame time for it.
7418
- * @param [options.priority=0] {number}
7419
- * The priority of all the tasks in this group.
7420
- * @param [options.postponeOnAdd=false] {number}
7421
- * If true, tasks from this task group will not be run until `resumeTask`
7422
- * is called on the scheduler with this group.
7423
- * @param [options.name=undefined] {string}
7424
- * If provided, an arbitrary name for logging purposes.
7425
- * @param [options.userdata] {Any}
7426
- * Arbitrary data that you can store along with this task group.
7496
+ * @method pop
7497
+ * @param key {number} the key from which to remove a value
7498
+ * @return {Any} arbitrary value from the given key's set, or undefined if
7499
+ * the set at the given key is empty.
7427
7500
  */
7428
- constructor(options: {
7429
- onComplete?: (...args: any[]) => any;
7430
- priority?: number;
7431
- userdata: Record<string, any>;
7432
- postponeOnAdd: number | boolean;
7433
- name: string;
7434
- });
7435
- _postponed: number | boolean;
7436
- _onComplete: (...args: any[]) => any;
7437
- _priority: number;
7438
- userdata: Record<string, any>;
7439
- name: string;
7440
- _tasks: Set<any>;
7441
- _scheduledTasks: Set<any>;
7442
- _scheduled: boolean;
7443
- _cancelled: boolean;
7501
+ pop(key: number): any;
7444
7502
  /**
7445
- * Return true if every task in this group has been run at least once.
7446
- * @method isComplete
7447
- * @return {boolean}
7503
+ * Remove and return an arbitrary value from the set corresponding to
7504
+ * the key with the highest numeric value, using the javascript `<`
7505
+ * operator.
7506
+ *
7507
+ * @method popFromMaxKey
7508
+ * @return {Any} arbitrary value from the highest key's set, or undefined
7509
+ * if the map is empty
7448
7510
  */
7449
- isComplete(): boolean;
7511
+ popFromMaxKey(): any;
7450
7512
  /**
7451
- * Return a list of tasks in this group. This will be a copy of the
7452
- * underlying task group, so it's safe to mutate the group while
7453
- * iterating over this array.
7513
+ * Return an iterator over every value in this multimap, at every key.
7514
+ * Mutating the multimap during iteration will result in undefined
7515
+ * behaviour.
7454
7516
  *
7455
- * @method tasks
7456
- * @return {[FrameTask]} list of tasks in this group
7517
+ * @method values
7518
+ * @return {Iterator} iterator over the values in the map
7457
7519
  */
7458
- getTasks(): any[];
7520
+ values(): {
7521
+ [Symbol.iterator]: () => any;
7522
+ next: () => any;
7523
+ };
7459
7524
  /**
7460
- * Empty this task group. This will trivially satisfy `isComplete`.
7525
+ * A list of keys in this set, sorted by numeric value. Not cloned,
7526
+ * for efficiency's sake, so please don't mutate it.
7461
7527
  *
7462
- * @method clear
7528
+ * @method keys
7529
+ * @return {[number]} sorted list of numeric keys in the map
7463
7530
  */
7464
- clear(): void;
7531
+ keys(): any[];
7465
7532
  /**
7466
- * Return one arbitrary incomplete task from this group, or undefined if
7467
- * there are none.
7533
+ * The number of elements in this multimap, equal to the sum of the sizes
7534
+ * of each key's set of values.
7468
7535
  *
7469
- * @method _popTask
7470
- * @return {FrameTask} arbitrary scheduled task
7471
- * @private
7536
+ * @property size {number} number of elements in this multimap
7472
7537
  */
7473
- _popTask(): any;
7538
+ get size(): number;
7474
7539
  }
7475
- /**
7476
- * A timer for the task scheduler that uses real wall-time to determine if there's
7477
- * enough remaining time in a frame to execute another task.
7478
- *
7479
- * @class RealTimeTimer
7480
- * @private
7481
- */
7482
- export class RealTimeTimer {
7483
- _maxMillisecondsPerFrame: number;
7484
- _time: number;
7540
+ export {};
7541
+ }
7542
+
7543
+ declare module '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager' {
7544
+ import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
7545
+ import type { ICore, TCameraAnimationOptions, TFocusOnCameraOptions, TCameraTargets, MapViewStackScene } from '@mappedin/mappedin-js/renderer/internal';
7546
+ import { MapObject, MapViewScene } from '@mappedin/mappedin-js/renderer/internal';
7547
+ export type TSceneTransitionOptions = {
7485
7548
  /**
7486
- * @constructor
7487
- * @param [options] {Object} Options for the timer
7488
- * @param [options.maxMillisecondsPerFrame]
7489
- * If the time since the beginning of the frame has been less than
7490
- * or equal to this value, then another task may be executed
7549
+ * Map to set as active during the transition. This will decide where the camera will be positioned, as well as which
7550
+ * colliders are enabled.
7491
7551
  */
7492
- constructor(options?: {
7493
- maxMillisecondsPerFrame?: number;
7494
- });
7552
+ activeMap?: MappedinMap;
7553
+ verticalDistanceBetweenMaps?: number;
7495
7554
  /**
7496
- * Begin timing a frame.
7497
- *
7498
- * @method beginFrame
7555
+ * Whether to auto focus on the active map or leave the camera where it is.
7556
+ * For single building venues, this should look the same way it did with MapManager
7557
+ * For multi-building venues, this means the camera will not pan over to where the active map
7558
+ * is relative to the world, which may look like broken behavior.
7559
+ * @default true
7499
7560
  */
7500
- beginFrame(): void;
7561
+ autoFocusOnActiveMap?: boolean;
7501
7562
  /**
7502
- * If true, there is enough time remaining to execute another task.
7503
- *
7504
- * @method hasTimeRemaining
7505
- * @return {boolean}
7563
+ * Where to focus the camera during transition to Scene. Will focus to fit the map if not provided.
7564
+ * Currently, will discard any targets that are not on the active map.
7506
7565
  */
7507
- hasTimeRemaining(): boolean;
7566
+ focusOn?: {
7567
+ targets?: TCameraTargets;
7568
+ options?: TFocusOnCameraOptions & TCameraAnimationOptions;
7569
+ };
7570
+ };
7571
+ class SceneManager {
7572
+ core: ICore;
7573
+ currentScene: MapViewScene | MapViewStackScene;
7574
+ /**
7575
+ * MapObjects that have been loaded and positioned in the scene
7576
+ */
7577
+ processedMapObjects: Set<MapObject>;
7578
+ constructor(core: ICore, startingScene: MapViewScene);
7579
+ get currentMap(): MappedinMap;
7580
+ renderGrid(): void;
7581
+ transitionTo(scene: MapViewScene, transitionOptions?: TSceneTransitionOptions): Promise<void>;
7582
+ }
7583
+ export default SceneManager;
7584
+ }
7585
+
7586
+ declare module '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.DynamicFocusSceneManager' {
7587
+ import { MappedinMap, MappedinMapGroup } from '@mappedin/mappedin-js/get-venue';
7588
+ import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
7589
+ import { MapViewScene, DynamicFocusScene } from '@mappedin/mappedin-js/renderer/internal';
7590
+ class DynamicFocusSceneManager {
7591
+ dynamicFocusScene: DynamicFocusScene;
7592
+ core: ICore;
7593
+ constructor(core: ICore, baseMap: MappedinMap);
7594
+ panBounds: any;
7595
+ mapShouldSetOnUserInteraction: boolean;
7596
+ get currentScene(): {
7597
+ resize: () => void;
7598
+ currentMap: MappedinMap;
7599
+ mapObjects: Map<string, import("../../internal/Mappedin.MapObject").default>;
7600
+ };
7601
+ get currentMap(): MappedinMap;
7602
+ setDefaultMapForMapGroup(mapGroup: MappedinMapGroup, map: MappedinMap): void;
7603
+ resetDefaultMapForMapGroup(mapGroup: MappedinMapGroup): void;
7604
+ determineTargetMap(): void;
7605
+ update(): void;
7606
+ transitionTo(scene?: MapViewScene): Promise<void>;
7508
7607
  }
7608
+ export default DynamicFocusSceneManager;
7609
+ }
7610
+
7611
+ declare module '@mappedin/mappedin-js/get-venue/pub-sub.typed' {
7509
7612
  /**
7510
- * A timer that ticks every time `hasTimeRemaining` is called.
7613
+ * Generic PubSub class implementing the Publish-Subscribe pattern for event handling.
7511
7614
  *
7512
- * @class FixedTimer
7513
- * @private
7615
+ * @template EVENT_PAYLOAD - The type of the event payload.
7616
+ * @template EVENT - The type of the event.
7514
7617
  */
7515
- export class FixedTimer {
7516
- _ticks: number;
7517
- maxTasksPerFrame: number;
7618
+ export class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
7518
7619
  /**
7519
- * @constructor
7520
- * @param [options] {Object} Options for the timer
7521
- * @param [options.maxTasksPerFrame=5]
7522
- * The number of tasks that will be exceuted in a single update call.
7523
- * Can be modified as the `maxTasksPerFrame` property on this boject.
7620
+ * @private
7621
+ * @internal
7524
7622
  */
7525
- constructor(options?: {
7526
- maxTasksPerFrame?: number;
7527
- });
7623
+ _subscribers: any;
7528
7624
  /**
7529
- * Begin timing a frame.
7530
- *
7531
- * @method beginFrame
7625
+ * @private
7626
+ * @internal
7532
7627
  */
7533
- beginFrame(): void;
7628
+ publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
7534
7629
  /**
7535
- * If true, there is enough time remaining to execute another task.
7536
- *
7537
- * @method hasTimeRemaining
7538
- * @return {boolean}
7539
- */
7540
- hasTimeRemaining(): boolean;
7541
- }
7542
- export type TaskSchedulerOptions = {
7543
- timer?: RealTimeTimer;
7544
- performance?: boolean;
7545
- onUpdateEnd?: () => void;
7546
- };
7547
- /**
7548
- * A class that handles scheduling tasks to be performed within the time
7549
- * constraints of frame updates, triggered using `requestAnimationFrame`.
7550
- *
7551
- * Tasks can either be scheduled once per frame (called "frame updates"), or
7552
- * to execute as many times per frame as there is room for after processing
7553
- * all frame updates (called "frame tasks").
7554
- *
7555
- * Posted tasks will always run during the same frame, assuming there's time to
7556
- * process them. However, an update or task that posts an update will not run
7557
- * that update until the next frame.
7558
- *
7559
- * @class TaskScheduler
7560
- * @private
7561
- */
7562
- export class TaskScheduler {
7563
- /**
7564
- * Construct a new `TaskScheduler` with no tasks scheduled.
7565
- *
7566
- * @constructor
7567
- * @param [options] {Object} Options for the scheduler
7568
- * @param [options.timer=new RealTimeTimer()]
7569
- * Timer that determines whether there is sufficient time left in a frame
7570
- * to continue executing tasks
7571
- * @param [options.performance=false]
7572
- * If true, this task scheduler will annotate tasks and frame updates with
7573
- * performance information.
7574
- */
7575
- constructor(options?: TaskSchedulerOptions);
7576
- _raf?: (callback: FrameRequestCallback) => number;
7577
- options?: TaskSchedulerOptions;
7578
- _timer: RealTimeTimer;
7579
- _performance: boolean;
7580
- _scheduledUpdatesByOrdering: Multimap;
7581
- _scheduledTasksByPriority: Multimap;
7582
- _postponedTasks: Set<any>;
7583
- _requestAnimationFrameHandle: number | null;
7584
- _updatesToRunThisFrame: any[];
7585
- _lastFrameTime: number;
7586
- _updatesRunLastFrame: Set<any>;
7587
- /**
7588
- * Empty the task scheduler's queue. All tasks in it will be cancelled.
7589
- *
7590
- * @method clear
7591
- */
7592
- clear(): void;
7593
- /**
7594
- * Destroy this task scheduler and remove all tasks from it.
7595
- *
7596
- * @method destroy
7597
- */
7598
- destroy(): void;
7599
- /**
7600
- * Schedule this task scheduler to execute updates and tasks on the next
7601
- * available animation frame.
7602
- *
7603
- * @method requestAnimationFrame
7604
- */
7605
- requestAnimationFrame(): void;
7606
- /**
7607
- * Run all scheduled updates, and re-schedule another animation frame if any
7608
- * scheduled updates still exist. If any scheduled update specifies
7609
- * `shouldRunTasksAfterCompletion`, this will also run queued tasks until the
7610
- * frame time runs out.
7611
- *
7612
- * @method update
7613
- * @param timestamp {number} the current animation time, as returned from
7614
- * `performance.now()`; will be automatically filled in by
7615
- * `requestAnimationFrame` when it triggers this as a callback
7616
- */
7617
- update(timestamp: number): void;
7618
- /**
7619
- * Execute all tasks that are currently pending, without regard for the
7620
- * available frame time.
7621
- *
7622
- * @method flushTasks
7623
- */
7624
- flushTasks(): void;
7625
- /**
7626
- * Return the amount of time elapsed during the last completed frame update,
7627
- * in milliseconds. This value is unspecified if the task scheduler's
7628
- * `update` method has not yet run or if the scheduler has been cleared.
7629
- * If called during a frame update, this will
7630
- * return the time elapsed during the previous frame update.
7631
- *
7632
- * @method lastFrameTime
7633
- * @return {number} time elapsed during last frame update, in milliseconds
7634
- */
7635
- getLastFrameTime(): number;
7636
- /**
7637
- * Return a set containing every update that was run during the previous
7638
- * frame update. This will be empty if the task scheduler's `update` method
7639
- * has not yet been run or if the scheduler has been cleared.
7640
- */
7641
- getUpdatesRunLastFrame(): Set<any>;
7642
- _executeOneTask(timestamp: number): void;
7643
- /**
7644
- * Schedule an update to be run for the next `update.frameCount` frames. If
7645
- * the update already exists in the scheduler, the update's frame count will
7646
- * be refreshed to `update.frameCount`. This will also schedule an animation
7647
- * frame to begin processing the update.
7648
- *
7649
- * @method scheduleUpdate
7650
- * @param task {FrameUpdate} the update to schedule
7651
- */
7652
- scheduleUpdate(update: FrameUpdate): void;
7653
- /**
7654
- * Schedule a task to be run during a frame update. This will also schedule
7655
- * an animation frame to begin processing the task queue.
7656
- *
7657
- * @method scheduleTask
7658
- * @param task {FrameTask} the task to schedule
7659
- */
7660
- scheduleTask(task: FrameTask): void;
7661
- /**
7662
- * If the given update is in the queue, remove it.
7663
- *
7664
- * @method cancelUpdate
7665
- * @param task {FrameUpdate} the update to cancel
7666
- */
7667
- cancelUpdate(update: FrameUpdate): void;
7668
- /**
7669
- * If the given task or group is in the queue, remove it. Cancelling a
7670
- * completed task is a no-op.
7671
- *
7672
- * Canceling an individual task will also remove it from its task group, if
7673
- * it isn't already complete.
7674
- *
7675
- * @method cancelTask
7676
- * @param task {FrameTask or FrameTaskGroup} the task to cancel
7677
- */
7678
- cancelTask(task: FrameTask | FrameTaskGroup): void;
7679
- /**
7680
- * Set the provided task or group not to run, until it's resumed using `resumeTask`.
7681
- *
7682
- * Tasks that are in a group can't be postponed individually; instead, call
7683
- * `postponeTask` with the entire group.
7684
- *
7685
- * @method postponeTask
7686
- * @param task {FrameTask or FrameTaskGroup} the task to postpone
7687
- */
7688
- postponeTask(task: FrameTask | FrameTaskGroup): void;
7689
- /**
7690
- * Allow a postponed task or task group to resume processing. This will also
7691
- * request an animation frame to allow the resumed task to be processed.
7692
- *
7693
- * Tasks that are in a group can't be resumed individually; instead, call
7694
- * `resumeTask` with the entire group.
7695
- *
7696
- * @method resumeTask
7697
- * @param task {FrameTask or FrameTaskGroup} the task to resume
7698
- */
7699
- resumeTask(task: FrameTask | FrameTaskGroup): void;
7700
- /**
7701
- * Change the priority of the given scheduled task or task group.
7702
- *
7703
- * @method setTaskPriority
7704
- * @param task {FrameTask or FrameTaskGroup} the task whose priority will be changed
7705
- * @param priority {number} the priority to assign the task
7706
- */
7707
- setTaskPriority(task: FrameTask | FrameTaskGroup, priority: number): void;
7708
- }
7709
- /**
7710
- * A map that maps a numeric key to a set of values.
7711
- *
7712
- * For use in the scheduler, we also maintain a sorted list of keys.
7713
- *
7714
- * @class Multimap
7715
- * @private
7716
- */
7717
- class Multimap {
7718
- /**
7719
- * @method constructor
7720
- */
7721
- constructor();
7722
- _map: Map<any, any>;
7723
- _size: number;
7724
- _sortedKeys: any[];
7725
- /**
7726
- * Return true if the set for the given key contains the provided value.
7727
- *
7728
- * @method has
7729
- * @param key {number} the key whose set to check
7730
- * @param value {Any} the value to check
7731
- */
7732
- has(key: number, value: any): any;
7733
- /**
7734
- * Return the list of elements at the given key. Make sure not to modify
7735
- * it, as it will mess up the total element count.
7736
- *
7737
- * @method get
7738
- * @param key {number}
7739
- * @param value {Set(Any)}
7740
- */
7741
- get(key: number): any;
7742
- /**
7743
- * @method insert
7744
- * @param key {number} the key to which another value will be added
7745
- * @param value {Any} the value to add to the key's set
7746
- */
7747
- insert(key: number, value: any): void;
7748
- /**
7749
- * @method delete
7750
- * @param key {number} the key at which the value is stored
7751
- * @param value {Any} the value to delete
7752
- */
7753
- delete(key: number, value: any): void;
7754
- /**
7755
- * Remove and return an arbitrary value from the set at the given key.
7756
- *
7757
- * @method pop
7758
- * @param key {number} the key from which to remove a value
7759
- * @return {Any} arbitrary value from the given key's set, or undefined if
7760
- * the set at the given key is empty.
7761
- */
7762
- pop(key: number): any;
7763
- /**
7764
- * Remove and return an arbitrary value from the set corresponding to
7765
- * the key with the highest numeric value, using the javascript `<`
7766
- * operator.
7767
- *
7768
- * @method popFromMaxKey
7769
- * @return {Any} arbitrary value from the highest key's set, or undefined
7770
- * if the map is empty
7771
- */
7772
- popFromMaxKey(): any;
7773
- /**
7774
- * Return an iterator over every value in this multimap, at every key.
7775
- * Mutating the multimap during iteration will result in undefined
7776
- * behaviour.
7777
- *
7778
- * @method values
7779
- * @return {Iterator} iterator over the values in the map
7780
- */
7781
- values(): {
7782
- [Symbol.iterator]: () => any;
7783
- next: () => any;
7784
- };
7785
- /**
7786
- * A list of keys in this set, sorted by numeric value. Not cloned,
7787
- * for efficiency's sake, so please don't mutate it.
7788
- *
7789
- * @method keys
7790
- * @return {[number]} sorted list of numeric keys in the map
7791
- */
7792
- keys(): any[];
7793
- /**
7794
- * The number of elements in this multimap, equal to the sum of the sizes
7795
- * of each key's set of values.
7796
- *
7797
- * @property size {number} number of elements in this multimap
7798
- */
7799
- get size(): number;
7800
- }
7801
- export {};
7802
- }
7803
-
7804
- declare module '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.SceneManager' {
7805
- import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
7806
- import type { ICore, TCameraAnimationOptions, TFocusOnCameraOptions, TCameraTargets, MapViewStackScene } from '@mappedin/mappedin-js/renderer/internal';
7807
- import { MapObject, MapViewScene } from '@mappedin/mappedin-js/renderer/internal';
7808
- export type TSceneTransitionOptions = {
7809
- /**
7810
- * Map to set as active during the transition. This will decide where the camera will be positioned, as well as which
7811
- * colliders are enabled.
7812
- */
7813
- activeMap?: MappedinMap;
7814
- verticalDistanceBetweenMaps?: number;
7815
- /**
7816
- * Whether to auto focus on the active map or leave the camera where it is.
7817
- * For single building venues, this should look the same way it did with MapManager
7818
- * For multi-building venues, this means the camera will not pan over to where the active map
7819
- * is relative to the world, which may look like broken behavior.
7820
- * @default true
7821
- */
7822
- autoFocusOnActiveMap?: boolean;
7823
- /**
7824
- * Where to focus the camera during transition to Scene. Will focus to fit the map if not provided.
7825
- * Currently, will discard any targets that are not on the active map.
7826
- */
7827
- focusOn?: {
7828
- targets?: TCameraTargets;
7829
- options?: TFocusOnCameraOptions & TCameraAnimationOptions;
7830
- };
7831
- };
7832
- class SceneManager {
7833
- core: ICore;
7834
- currentScene: MapViewScene | MapViewStackScene;
7835
- /**
7836
- * MapObjects that have been loaded and positioned in the scene
7837
- */
7838
- processedMapObjects: Set<MapObject>;
7839
- constructor(core: ICore, startingScene: MapViewScene);
7840
- get currentMap(): MappedinMap;
7841
- renderGrid(): void;
7842
- transitionTo(scene: MapViewScene, transitionOptions?: TSceneTransitionOptions): Promise<void>;
7843
- }
7844
- export default SceneManager;
7845
- }
7846
-
7847
- declare module '@mappedin/mappedin-js/renderer/private/scene-manager/MapView.DynamicFocusSceneManager' {
7848
- import { MappedinMap, MappedinMapGroup } from '@mappedin/mappedin-js/get-venue';
7849
- import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
7850
- import { MapViewScene, DynamicFocusScene } from '@mappedin/mappedin-js/renderer/internal';
7851
- class DynamicFocusSceneManager {
7852
- dynamicFocusScene: DynamicFocusScene;
7853
- core: ICore;
7854
- constructor(core: ICore, baseMap: MappedinMap);
7855
- panBounds: any;
7856
- mapShouldSetOnUserInteraction: boolean;
7857
- get currentScene(): {
7858
- resize: () => void;
7859
- currentMap: MappedinMap;
7860
- mapObjects: Map<string, import("../../internal/Mappedin.MapObject").default>;
7861
- };
7862
- get currentMap(): MappedinMap;
7863
- setDefaultMapForMapGroup(mapGroup: MappedinMapGroup, map: MappedinMap): void;
7864
- resetDefaultMapForMapGroup(mapGroup: MappedinMapGroup): void;
7865
- determineTargetMap(): void;
7866
- update(): void;
7867
- transitionTo(scene?: MapViewScene): Promise<void>;
7868
- }
7869
- export default DynamicFocusSceneManager;
7870
- }
7871
-
7872
- declare module '@mappedin/mappedin-js/get-venue/pub-sub.typed' {
7873
- /**
7874
- * Generic PubSub class implementing the Publish-Subscribe pattern for event handling.
7875
- *
7876
- * @template EVENT_PAYLOAD - The type of the event payload.
7877
- * @template EVENT - The type of the event.
7878
- */
7879
- export class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
7880
- /**
7881
- * @private
7882
- * @internal
7883
- */
7884
- _subscribers: any;
7885
- /**
7886
- * @private
7887
- * @internal
7888
- */
7889
- publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
7890
- /**
7891
- * Subscribe a function to an event.
7630
+ * Subscribe a function to an event.
7892
7631
  *
7893
7632
  * @param eventName An event name which, when fired, will call the provided
7894
7633
  * function.
@@ -9252,6 +8991,10 @@ declare module '@mappedin/mappedin-js/renderer/private/controllers/StackedMapsCo
9252
8991
  zoomInToMap: (map: MappedinMap, cameraOptions?: TCameraTransform & TCameraAnimationOptions) => Promise<void>;
9253
8992
  get currentMap(): MappedinMap;
9254
8993
  }
8994
+ /**
8995
+ * @internal
8996
+ */
8997
+ export function setStackedMapsOverviewTiltInDegrees(v: number): void;
9255
8998
  export default StackedMapsController;
9256
8999
  }
9257
9000
 
@@ -9299,857 +9042,1141 @@ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.Renderer' {
9299
9042
  shouldConsiderAlpha: any;
9300
9043
  antialias: any;
9301
9044
  /**
9302
- * Dispose of any resources and connections allocated by the renderer.
9303
- *
9304
- * @method destroy
9045
+ * Dispose of any resources and connections allocated by the renderer.
9046
+ *
9047
+ * @method destroy
9048
+ */
9049
+ destroy(): void;
9050
+ /**
9051
+ * Render the scene to the provided framebuffer. A null framebuffer will
9052
+ * render to the default canvas.
9053
+ *
9054
+ * @method render
9055
+ * @param renderTask {RENDER}
9056
+ * @param renderTarget {null or WebGLRenderTarget}
9057
+ * @param scene {Scene}
9058
+ * @param sceneCamera {Camera}
9059
+ */
9060
+ render(renderTask: RENDER, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9061
+ /**
9062
+ * Return the maximum supported anisotropy of this renderer.
9063
+ *
9064
+ * @method getMaxAnisotropy
9065
+ * @return {number}
9066
+ */
9067
+ getMaxAnisotropy(): number;
9068
+ /**
9069
+ * Return the size of the renderer's target.
9070
+ *
9071
+ * @method getBufferSize
9072
+ * @return {Vector2}
9073
+ */
9074
+ getBufferSize(): Vector2;
9075
+ /**
9076
+ * Return the WebGL context associated with this renderer, to ensure
9077
+ * other objects that use WebGL will put their textures in the same
9078
+ * context.
9079
+ *
9080
+ * @method context
9081
+ * @return {WebGLRenderingContext} context used by this renderer
9082
+ */
9083
+ getContext(): WebGLRenderingContext;
9084
+ /**
9085
+ * Preload a texture, I think. Not actually sure what this does. TODO.
9086
+ *
9087
+ * @method preloadTexture
9088
+ * @param texture {Texture}
9089
+ */
9090
+ preloadTexture(texture: Texture): void;
9091
+ /**
9092
+ * Set the renderer and all its internal buffers to the provided width and
9093
+ * height in pixels.
9094
+ *
9095
+ * @method setBufferSize
9096
+ * @param width {number}
9097
+ * @param height {number}
9098
+ */
9099
+ setBufferSize(width: number, height: number): void;
9100
+ get backgroundColor(): Color | undefined;
9101
+ get backgroundAlpha(): number | undefined;
9102
+ /**
9103
+ * Set the color and opacity that will be drawn behind the scene.
9104
+ *
9105
+ * @method setBackgroundColor
9106
+ * @param color {Color}
9107
+ * @param alpha {number}
9108
+ */
9109
+ setBackgroundColor(color: Color, alpha?: number): void;
9110
+ /**
9111
+ * Assign an outdoor context to this renderer, which will be included as
9112
+ * part of the `STATIC` rendering pass.
9113
+ *
9114
+ * @method setMapboxOutdoorContext
9115
+ * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9116
+ */
9117
+ setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9118
+ domElement(): HTMLCanvasElement;
9119
+ isAvailable(): boolean;
9120
+ disposeOfRenderLists(): void;
9121
+ reportWebGlContextCreationError(e: any): void;
9122
+ reportWebGlContextLost(e: any): void;
9123
+ reportWebGLContextRestored(): void;
9124
+ /**
9125
+ * Sometimes we have to use WebGL 1 because of a regression in Chrome
9126
+ * due to some unknown performance bug in Apple's OpenGL Angle backend on MacBook+Radeon GPU.
9127
+ * The official recommendation is to turn on Metal backed ANGLE in your Chrome's about:flags.
9128
+ * We can't force our users to do it, so we have to support both WebGL 1 & WebGL 2
9129
+ * See: https://bugs.chromium.org/p/chromium/issues/detail?id=1245448
9130
+ * The Method returns target WebGL version based on the hardware configuration.
9131
+ *
9132
+ * @param context WebGL context
9133
+ * @returns {1|2} WebGL version
9134
+ */
9135
+ getTargetWebGLVersion(context: any): 1 | 2;
9136
+ /**
9137
+ *
9138
+ * @param options
9139
+ * @returns {SingleBufferRenderer|MultiBufferRenderer}
9140
+ */
9141
+ getRenderer(options: any): SingleBufferRenderer | MultiBufferRenderer;
9142
+ }
9143
+ /**
9144
+ * A legacy renderer that renders all the elements in the scene to a single
9145
+ * buffer. Does not support things like transparent paths behind polygons
9146
+ * natively, but can potentially fake it.
9147
+ *
9148
+ * 2019/07/10 Terence Dickson
9149
+ * Generally has worse performance under average loads compared to the
9150
+ * multi-buffer renderer, as the multi-buffer renderer can avoid re-rendering
9151
+ * the entire map if only animated elements on the map have changed.
9152
+ *
9153
+ * @class SingleBufferRenderer
9154
+ * @private
9155
+ */
9156
+ class SingleBufferRenderer {
9157
+ constructor(renderOptions: any, targetWebGLVersion?: number);
9158
+ options: any;
9159
+ core: any;
9160
+ renderer: WebGLRenderer | undefined;
9161
+ effectComposer: EffectComposer | undefined;
9162
+ backgroundColor: Color;
9163
+ backgroundAlpha: number;
9164
+ mapboxOutdoorContext: any;
9165
+ /**
9166
+ * Dispose of the renderer.
9167
+ */
9168
+ destroy(): void;
9169
+ /**
9170
+ * Re-render the scene. This ignores the `renderTask` argument, as all
9171
+ * re-renders in the single-buffer renderer are full re-renders.
9172
+ *
9173
+ * @method render
9174
+ * @param renderTask {RENDER}
9175
+ * @param renderTarget {null or WebGLRenderTarget}
9176
+ * @param scene {Scene}
9177
+ * @param sceneCamera {Camera}
9178
+ */
9179
+ render(renderTask: RENDER, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9180
+ /**
9181
+ * Set the size of the renderer.
9182
+ *
9183
+ * @method setBufferSize
9184
+ * @param width {number}
9185
+ * @param height {number}
9186
+ */
9187
+ setBufferSize(width: number, height: number): void;
9188
+ width: number | undefined;
9189
+ height: number | undefined;
9190
+ /**
9191
+ * Set the color and opacity that will be drawn behind the scene.
9192
+ *
9193
+ * @method setBackgroundColor
9194
+ * @param color {Color}
9195
+ * @param alpha {number}
9196
+ */
9197
+ setBackgroundColor(color: Color, alpha: number): void;
9198
+ /**
9199
+ * Assign an outdoor context to this renderer.
9200
+ *
9201
+ * @method setMapboxOutdoorContext
9202
+ * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9203
+ */
9204
+ setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9205
+ }
9206
+ /**
9207
+ * Our new renderer that renders static elements to one buffer and animated
9208
+ * elements to another buffer, allowing only the latter buffer to be
9209
+ * re-rendered if the camera isn't moving. There is also a third buffer that
9210
+ * can be used to render elements that must appear always on top.
9211
+ *
9212
+ * Does not yet support antialiasing.
9213
+ *
9214
+ * 2019/07/10 Terence Dickson
9215
+ * Generally has better performance under average loads compared to the
9216
+ * single-buffer renderer, but does not work on IE 11.
9217
+ *
9218
+ * @class MultiBufferRenderer
9219
+ * @private
9220
+ */
9221
+ export class MultiBufferRenderer {
9222
+ constructor(renderOptions: any, targetWebGLVersion?: number);
9223
+ effectComposer: null;
9224
+ outdoorsVisible: boolean;
9225
+ options: any;
9226
+ renderer: WebGLRenderer | undefined;
9227
+ core: any;
9228
+ journeyOpacity: number | undefined;
9229
+ backgroundColor: Color | undefined;
9230
+ backgroundAlpha: number | undefined;
9231
+ mapboxOutdoorContext: any;
9232
+ staticSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9233
+ animatedSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9234
+ animatedSceneBackgroundRenderTarget: WebGLRenderTarget<Texture> | undefined;
9235
+ alwaysOnTopSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9236
+ outdoorViewRenderTarget: WebGLRenderTarget<Texture> | undefined;
9237
+ populateRenderTarget(renderTarget: any): void;
9238
+ createOutdoorViewTexture(): void;
9239
+ outdoorViewTexture: Texture | undefined;
9240
+ outdoorViewTextureProps: any;
9241
+ setupEffectComposer(): void;
9242
+ setOutdoorViewTexture(texture: any): void;
9243
+ /**
9244
+ * Dispose of the renderer and its buffers.
9305
9245
  */
9306
9246
  destroy(): void;
9247
+ renderToAnimatedBackgroundBuffer(scene: any, sceneCamera: any): void;
9307
9248
  /**
9308
- * Render the scene to the provided framebuffer. A null framebuffer will
9309
- * render to the default canvas.
9249
+ * Render the provided scene using the given camera, re-rendering only
9250
+ * the animated parts.
9310
9251
  *
9311
- * @method render
9312
- * @param renderTask {RENDER}
9252
+ * @method renderAnimated
9313
9253
  * @param renderTarget {null or WebGLRenderTarget}
9314
9254
  * @param scene {Scene}
9315
9255
  * @param sceneCamera {Camera}
9316
9256
  */
9317
- render(renderTask: RENDER, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9318
- /**
9319
- * Return the maximum supported anisotropy of this renderer.
9320
- *
9321
- * @method getMaxAnisotropy
9322
- * @return {number}
9323
- */
9324
- getMaxAnisotropy(): number;
9257
+ renderAnimated(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9325
9258
  /**
9326
- * Return the size of the renderer's target.
9259
+ * Render the provided scene using the given camera, re-rendering only
9260
+ * the parts that should appear on top of all other elements.
9327
9261
  *
9328
- * @method getBufferSize
9329
- * @return {Vector2}
9262
+ * @method renderAlwaysOnTop
9263
+ * @param renderTarget {null or WebGLRenderTarget}
9264
+ * @param scene {Scene}
9265
+ * @param sceneCamera {Camera}
9330
9266
  */
9331
- getBufferSize(): Vector2;
9267
+ renderAlwaysOnTop(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9332
9268
  /**
9333
- * Return the WebGL context associated with this renderer, to ensure
9334
- * other objects that use WebGL will put their textures in the same
9335
- * context.
9269
+ * Render all of the scene layers, then combine them.
9336
9270
  *
9337
- * @method context
9338
- * @return {WebGLRenderingContext} context used by this renderer
9271
+ * @method renderAll
9272
+ * @param renderTarget {null or WebGLRenderTarget}
9273
+ * @param scene {Scene}
9274
+ * @param sceneCamera {Camera}
9339
9275
  */
9340
- getContext(): WebGLRenderingContext;
9276
+ renderAll(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9341
9277
  /**
9342
- * Preload a texture, I think. Not actually sure what this does. TODO.
9278
+ * Re-render the scene, depending on which parts of the scene have been
9279
+ * invalidated.
9343
9280
  *
9344
- * @method preloadTexture
9345
- * @param texture {Texture}
9281
+ * @method render
9282
+ * @param renderTarget {null or WebGLRenderTarget}
9283
+ * @param scene {Scene}
9284
+ * @param sceneCamera {Camera}
9346
9285
  */
9347
- preloadTexture(texture: Texture): void;
9286
+ render(renderTask: any, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9348
9287
  /**
9349
- * Set the renderer and all its internal buffers to the provided width and
9350
- * height in pixels.
9288
+ * Set the size of the renderer, composer, and all its internal buffers.
9351
9289
  *
9352
9290
  * @method setBufferSize
9353
9291
  * @param width {number}
9354
9292
  * @param height {number}
9355
9293
  */
9356
9294
  setBufferSize(width: number, height: number): void;
9357
- get backgroundColor(): Color | undefined;
9358
- get backgroundAlpha(): number | undefined;
9295
+ width: number | undefined;
9296
+ height: number | undefined;
9297
+ /**
9298
+ * Set the color and opacity that will be drawn behind the scene.
9299
+ *
9300
+ * @method setBackgroundColor
9301
+ * @param color {Color}
9302
+ * @param alpha {number}
9303
+ */
9304
+ setBackgroundColor(color: Color, alpha: number): void;
9305
+ /**
9306
+ * Assign an outdoor context to this renderer.
9307
+ *
9308
+ * @method setMapboxOutdoorContext
9309
+ * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9310
+ */
9311
+ setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9312
+ setOutdoorViewController(outdoorViewController: any): void;
9313
+ outdoorViewController: any;
9314
+ toggleOutdoorViewVisiblity(visible: any): void;
9315
+ }
9316
+ import { RENDER } from '@mappedin/mappedin-js/renderer/internal';
9317
+ import { Scene } from 'three';
9318
+ import { Camera } from 'three';
9319
+ import { Vector2 } from 'three';
9320
+ import { Texture } from 'three';
9321
+ import { Color } from 'three';
9322
+ import { WebGLRenderer } from 'three';
9323
+ import { EffectComposer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.EffectComposer';
9324
+ import { WebGLRenderTarget } from 'three';
9325
+ export {};
9326
+ }
9327
+
9328
+ declare module '@mappedin/mappedin-js/renderer/private/controllers/JourneyController' {
9329
+ import type Directive from '@mappedin/mappedin-js/navigator/Directive';
9330
+ import type INode from '@mappedin/mappedin-js/navigator/interfaces/INode';
9331
+ import { Path } from '@mappedin/mappedin-js/renderer/internal';
9332
+ import type { TJourneyOptions } from '@mappedin/mappedin-js/renderer/internal';
9333
+ import { MappedinDirections } from '@mappedin/mappedin-js/get-venue';
9334
+ import Core from '@mappedin/mappedin-js/renderer/private/Core';
9335
+ export type TMappedinDirections = {
9336
+ distance: number;
9337
+ path: INode[];
9338
+ instructions: Directive[];
9339
+ };
9340
+ /**
9341
+ *
9342
+ * The Journey class represents a journey from point A to point B. This includes any intermediate connections, such as stairs or elevators.
9343
+ * The idea is to provide a higher level API with enough hooks to customize the experience. Also, to ensure only 1 journey is allowed at once.
9344
+ * This version does not support "stacked view" - but that can be added in the future
9345
+ *
9346
+ * @internal
9347
+ */
9348
+ export class JourneyController {
9349
+ #private;
9350
+ distance: number;
9351
+ accessible: boolean;
9352
+ activeDirections: MappedinDirections;
9353
+ get isMultiFloor(): boolean;
9354
+ get mapsInJourney(): (import("../../internal").MappedinMap | undefined)[];
9355
+ get mapsIdsInJourney(): (string | undefined)[];
9356
+ get buildingsInJourney(): {};
9357
+ get mapIdsInvolvedInJourney(): string[];
9358
+ constructor(directions: MappedinDirections | MappedinDirections[], options: TJourneyOptions | undefined, core: Core);
9359
+ setStep: (step: any) => void;
9360
+ setStepByPath: (path: Path) => void;
9361
+ overviewPathMode: 'never' | 'always' | 'current-elevation-and-mapgroup';
9362
+ setOverviewPathMode(mode: 'never' | 'always' | 'current-elevation-and-mapgroup'): void;
9363
+ static instance: JourneyController | null;
9364
+ static create(directions: MappedinDirections | MappedinDirections[], options: any, core: Core): JourneyController;
9365
+ destroy(): void;
9366
+ }
9367
+ }
9368
+
9369
+ declare module '@mappedin/mappedin-js/renderer/private/controllers/ExportController' {
9370
+ import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
9371
+ /**
9372
+ * @hidden
9373
+ */
9374
+ export type TGLTFExportOptions = {
9375
+ onlyVisible?: boolean;
9376
+ binary?: boolean;
9377
+ scale?: number;
9378
+ };
9379
+ /**
9380
+ * API for exporting the scene.
9381
+ *
9382
+ * @hidden
9383
+ */
9384
+ export default class ExportController {
9385
+ #private;
9386
+ core: ICore;
9387
+ glTFExporter?: any;
9388
+ constructor(core: ICore);
9389
+ /**
9390
+ * Exports the current scene as a GLTF file.
9391
+ */
9392
+ getCurrentSceneGLTF: (userOptions: TGLTFExportOptions) => Promise<Blob>;
9393
+ }
9394
+ }
9395
+
9396
+ declare module '@mappedin/mappedin-js/renderer/private/controllers/LayerController' {
9397
+ import type { ICore } from '@mappedin/mappedin-js/renderer/private/Core.interface';
9398
+ import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
9399
+ import { Feature, FeatureCollection, GeoJsonProperties, Polygon } from 'geojson';
9400
+ class LayerController {
9401
+ #private;
9402
+ constructor(core: ICore);
9403
+ /**
9404
+ * Show a set of layers on the current map, and hide all other layers. This also hides any colliders associated with the hidden layers.
9405
+ */
9406
+ showLayers(layers: string[]): void;
9407
+ getAllLayersForMap(map: MappedinMap): Promise<{
9408
+ [layerName: string]: boolean;
9409
+ }>;
9410
+ /**
9411
+ * Return a list of all visible layers for a map, this will NOT trigger a map load, and is mainly used internally
9412
+ * which is why its synchronous
9413
+ */
9414
+ getVisibleLayersForLoadedMap(map: MappedinMap): string[] | undefined;
9415
+ addGeoJSONLayer(layerName: string, featureOrFeatureCollection: Feature<Polygon, GeoJsonProperties | null> | FeatureCollection<Polygon, GeoJsonProperties | null>): Promise<void>;
9416
+ removeGeoJSONLayer(layerName: string): Promise<void>;
9417
+ }
9418
+ export default LayerController;
9419
+ }
9420
+
9421
+ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.ui' {
9422
+ import { IBlueDotCore, BlueDotManager } from '@mappedin/mappedin-js/renderer/internal';
9423
+ import { IPubSub } from '@mappedin/mappedin-js/renderer/internal/pub-sub';
9424
+ import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
9425
+ enum ZOOM_CONDITION {
9426
+ EXPIRED = 0,
9427
+ IN_PROGRESS = 1,
9428
+ COMPLETED = 2
9429
+ }
9430
+ export interface IBlueDotUI extends IPubSub {
9431
+ blueDotTooltips: any[];
9432
+ setBlueDotPosition: () => void;
9433
+ showBlueDotBearing: () => void;
9434
+ addGhostMarkers: () => void;
9435
+ addLocationUncertainMarkersAndTooltips: () => void;
9436
+ addBlueDotMarker: () => void;
9437
+ removeTooltips: () => void;
9438
+ removeBlueDot: () => void;
9439
+ centerBlueDot: () => void;
9440
+ endFollowing: () => void;
9441
+ zoomCondition: ZOOM_CONDITION;
9442
+ isFollowing: boolean;
9443
+ useRotationMode: boolean;
9444
+ }
9445
+ type TBlueDotUIProps = {
9446
+ core: ICore;
9447
+ blueDotManager: BlueDotManager;
9448
+ controller: IBlueDotCore;
9449
+ data: any;
9450
+ };
9451
+ const BlueDotUI: ({ core, blueDotManager, controller }: TBlueDotUIProps) => IBlueDotUI;
9452
+ export default BlueDotUI;
9453
+ }
9454
+
9455
+ declare module '@mappedin/mappedin-js/renderer/internal/utils' {
9456
+ export * from '@mappedin/mappedin-js/renderer/internal/utils/utils';
9457
+ export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/renderer/internal/utils/browser';
9458
+ export { throttle, debounce } from '@mappedin/mappedin-js/renderer/internal/utils/async';
9459
+ }
9460
+
9461
+ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.MapManager' {
9462
+ export default MapManager;
9463
+ class MapManager extends PubSub {
9464
+ constructor(polygonMeshesById: any, renderer: any, core: any, taskScheduler: any, loadOptions?: {});
9465
+ mapObjects: Map<any, any>;
9466
+ currentMap: undefined;
9467
+ object: Object3D<import("three").Object3DEventMap>;
9468
+ _showCount: number;
9469
+ _mapObjectsSortedByElevationDirty: boolean;
9470
+ expanded: boolean;
9471
+ polygonMeshesById: any;
9472
+ core: any;
9473
+ renderer: any;
9474
+ loadOptions: {};
9475
+ addMap(mapClass: any, callback?: () => void): Promise<void>;
9476
+ setMap(mapClassOrId: any, callback: any): Promise<any>;
9477
+ removeMap(mapClassOrId: any): void;
9478
+ removeAllMaps(): void;
9479
+ loadMaps(maps: any, startingMap: any, onFirstMapLoaded?: () => void, onDataLoaded?: () => void, onError?: () => void): void;
9480
+ /**
9481
+ * Expand maps to display within view, typically used for multi-floor navigation. When passed a connection, maps included will not be displayed, instead, their 2d projection
9482
+ will be available in the resulting promise, which can be used to display a 2D component in the client-side app.
9483
+ *
9484
+ * @method expandMaps
9485
+ * @param mapIds {Array} Array of mapIds or mapObjects to display while expanded. For connections, pass &#123; connection: true, maps: [], connectionNodes: [], &#125;
9486
+ * @param options {Object} Options object @optional
9487
+ @param [options.focus=false] {Boolean} Focus the camera onto expanded maps
9488
+ @param [options.debug=false] {Boolean} Display cubes around focus bounding box for debug info
9489
+ @param [options.rotation=0] {Number} Rotation of scene relative to zero (degrees)
9490
+ @param [options.duration=300] {Number} Duration of focus animation in ms
9491
+ @returns {Promise} Promise that resolves to 2d screen projections of each layer/map (see example)
9492
+ @example
9493
+ // expand maps with 3 connection maps in between
9494
+ expandMaps(
9495
+ '55e89771d982bc06ca000000',
9496
+ {
9497
+ connection: true,
9498
+ // connection nodes are an exit node from the '55e89771' man and entry node for the '55e9c73f' map
9499
+ connectionNodes: [{
9500
+ map: "55e89771",
9501
+ x: 6232,
9502
+ y: 4575
9503
+ }, {
9504
+ map: "55e9c73",
9505
+ x: 5945.000000000001,
9506
+ y: 4059.000000000001
9507
+ }],
9508
+ maps: [
9509
+ '55e9acbf',
9510
+ '55e8a9ed',
9511
+ '55e85e23'
9512
+ ]
9513
+ },
9514
+ '55e9c73f'
9515
+ );
9516
+
9517
+ // resulting promise (sorted by elevation (top to bottom))
9518
+
9519
+ [
9520
+ {
9521
+ min: { x: -100, y: -50 },
9522
+ max: { x: -100, y: -50 }
9523
+ },
9524
+ {
9525
+ min: { x: -100, y: -50 },
9526
+ max: { x: -100, y: -50 }
9527
+ },
9528
+ {
9529
+ min: { x: -100, y: -50 },
9530
+ max: { x: -100, y: -50 }
9531
+ }
9532
+ ]
9533
+ */
9534
+ expandMaps(mapsToExpand: any, options: any): Promise<any>;
9359
9535
  /**
9360
- * Set the color and opacity that will be drawn behind the scene.
9361
- *
9362
- * @method setBackgroundColor
9363
- * @param color {Color}
9364
- * @param alpha {number}
9365
- */
9366
- setBackgroundColor(color: Color, alpha?: number): void;
9536
+ * Contract maps and display the current map
9537
+ *
9538
+ * @method contractMaps
9539
+ * @param options {Object} Options object @optional
9540
+ @param [options.focus] {Boolean} Focus the camera onto current map
9541
+ @param [options.debug] {Boolean} Display cubes around focus bounding box for debug info
9542
+ @param [options.duration=300] {Number} Duration of focus animation in ms
9543
+ */
9544
+ contractMaps(options?: any): Promise<any>;
9545
+ expandPanBounds(bounds: any): void;
9367
9546
  /**
9368
- * Assign an outdoor context to this renderer, which will be included as
9369
- * part of the `STATIC` rendering pass.
9370
- *
9371
- * @method setMapboxOutdoorContext
9372
- * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9547
+ * This can be used to invoke a callback function for _every_ set map invocation.
9548
+ * @param {Function} cb callback function
9373
9549
  */
9374
- setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9375
- domElement(): HTMLCanvasElement;
9376
- isAvailable(): boolean;
9377
- disposeOfRenderLists(): void;
9378
- reportWebGlContextCreationError(e: any): void;
9379
- reportWebGlContextLost(e: any): void;
9380
- reportWebGLContextRestored(): void;
9550
+ addPersistentSetMapCallback(cb: Function): void;
9551
+ persistentSetMapCallbacks: any;
9552
+ setMapCallbacks: any[] | undefined;
9553
+ get mapObjectsSortedByElevation(): any[];
9554
+ _mapObjectsSortedByElevation: any[] | undefined;
9555
+ get visibleMaps(): any[];
9556
+ getCompoundBoundingBoxPoints(objects: any): Vector3[];
9557
+ multiFloorView: MultiFloorView | undefined;
9558
+ renderedMaps: any[] | undefined;
9559
+ projections: any[] | undefined;
9560
+ mapsFullyLoaded(callback?: () => void): Promise<void>;
9381
9561
  /**
9382
- * Sometimes we have to use WebGL 1 because of a regression in Chrome
9383
- * due to some unknown performance bug in Apple's OpenGL Angle backend on MacBook+Radeon GPU.
9384
- * The official recommendation is to turn on Metal backed ANGLE in your Chrome's about:flags.
9385
- * We can't force our users to do it, so we have to support both WebGL 1 & WebGL 2
9386
- * See: https://bugs.chromium.org/p/chromium/issues/detail?id=1245448
9387
- * The Method returns target WebGL version based on the hardware configuration.
9388
- *
9389
- * @param context WebGL context
9390
- * @returns {1|2} WebGL version
9562
+ * Scroll maps up
9563
+ * This will shift maps down to show next one (above)
9391
9564
  */
9392
- getTargetWebGLVersion(context: any): 1 | 2;
9565
+ scrollMapsUp(): Promise<any>;
9393
9566
  /**
9394
- *
9395
- * @param options
9396
- * @returns {SingleBufferRenderer|MultiBufferRenderer}
9567
+ * Scroll maps down
9568
+ * This will shift maps up to show next one (below)
9397
9569
  */
9398
- getRenderer(options: any): SingleBufferRenderer | MultiBufferRenderer;
9570
+ scrollMapsDown(): Promise<any>;
9571
+ tiltMaps(tilt: any): void;
9572
+ resize(): void;
9399
9573
  }
9574
+ import { PubSub } from '@mappedin/mappedin-js/renderer/internal/pub-sub';
9575
+ import { Object3D } from 'three';
9576
+ import { Vector3 } from 'three';
9577
+ import MultiFloorView from '@mappedin/mappedin-js/renderer/internal/Mappedin.MultiFloorView';
9578
+ }
9579
+
9580
+ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUI' {
9400
9581
  /**
9401
- * A legacy renderer that renders all the elements in the scene to a single
9402
- * buffer. Does not support things like transparent paths behind polygons
9403
- * natively, but can potentially fake it.
9404
- *
9405
- * 2019/07/10 Terence Dickson
9406
- * Generally has worse performance under average loads compared to the
9407
- * multi-buffer renderer, as the multi-buffer renderer can avoid re-rendering
9408
- * the entire map if only animated elements on the map have changed.
9582
+ * A DOM element that can be populated with performance information.
9409
9583
  *
9410
- * @class SingleBufferRenderer
9584
+ * @class DebugUI
9411
9585
  * @private
9412
9586
  */
9413
- class SingleBufferRenderer {
9414
- constructor(renderOptions: any, targetWebGLVersion?: number);
9415
- options: any;
9416
- core: any;
9417
- renderer: WebGLRenderer | undefined;
9418
- effectComposer: EffectComposer | undefined;
9419
- backgroundColor: Color;
9420
- backgroundAlpha: number;
9421
- mapboxOutdoorContext: any;
9587
+ export default class DebugUI {
9588
+ _element: HTMLDivElement;
9589
+ _titleElement: HTMLSelectElement;
9590
+ _minimizeElement: HTMLButtonElement;
9591
+ _performancePanelElement: HTMLDivElement;
9592
+ _performanceEntries: Map<any, any>;
9593
+ _sortedPerformanceEntryNames: any[];
9594
+ _overviewGraph: LineGraph;
9595
+ _controlPanels: Map<any, any>;
9596
+ _sortedControlPanelNames: any[];
9597
+ _minimized: boolean;
9598
+ destroy(): void;
9422
9599
  /**
9423
- * Dispose of the renderer.
9600
+ * Return the DOM element used by this `DebugUI`, which may be
9601
+ * added as a child of any other DOM element to display it.
9602
+ *
9603
+ * @method element
9604
+ * @return {Element} the ui's root element
9424
9605
  */
9425
- destroy(): void;
9606
+ get element(): Element;
9426
9607
  /**
9427
- * Re-render the scene. This ignores the `renderTask` argument, as all
9428
- * re-renders in the single-buffer renderer are full re-renders.
9608
+ * Log the given entries to this performance logger, and update the display
9609
+ * accordingly. If a given key isn't already being logged, an entry will be
9610
+ * added for it. If a key is being logged but isn't reported, it will be
9611
+ * treated as if it had a value of `0` reported.
9429
9612
  *
9430
- * @method render
9431
- * @param renderTask {RENDER}
9432
- * @param renderTarget {null or WebGLRenderTarget}
9433
- * @param scene {Scene}
9434
- * @param sceneCamera {Camera}
9613
+ * @method reportFramePerformance
9614
+ * @param {string -> number} entries the most recent recorded values for each
9615
+ * named frame update
9435
9616
  */
9436
- render(renderTask: RENDER, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9617
+ reportFramePerformance(entries: any): void;
9437
9618
  /**
9438
- * Set the size of the renderer.
9619
+ * Add the given controls to the given panels. More efficient than adding
9620
+ * controls one-by-one since it only recomputes positions after all controls
9621
+ * are added.
9439
9622
  *
9440
- * @method setBufferSize
9441
- * @param width {number}
9442
- * @param height {number}
9623
+ * @method addDebugControls
9624
+ * @param {category: string: [{name: string, description: string, control: DebugUIControl}]} categories
9625
+ * a mapping from category to a list of control names and controls
9443
9626
  */
9444
- setBufferSize(width: number, height: number): void;
9445
- width: number | undefined;
9446
- height: number | undefined;
9627
+ addDebugControls(categories: any): void;
9447
9628
  /**
9448
- * Set the color and opacity that will be drawn behind the scene.
9629
+ * Add the given control to a panel.
9449
9630
  *
9450
- * @method setBackgroundColor
9451
- * @param color {Color}
9452
- * @param alpha {number}
9631
+ * @method addDebugControl
9632
+ * @param {string} category the name of the panel the control will be put under
9633
+ * @param {string} name the name of the control
9634
+ * @param {string} description a description for the control (tooltip)
9635
+ * @param {DebugUIControl} control the control to add to the panel
9453
9636
  */
9454
- setBackgroundColor(color: Color, alpha: number): void;
9637
+ addDebugControl(category: string, name: string, description: string, control: DebugUIControl): void;
9455
9638
  /**
9456
- * Assign an outdoor context to this renderer.
9639
+ * Remove the given controls from the UI.
9457
9640
  *
9458
- * @method setMapboxOutdoorContext
9459
- * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9641
+ * @method removeDebugControls
9642
+ * @param {category: string: [name: string]} categories
9643
+ * a mapping from category to a list of control names to remove
9460
9644
  */
9461
- setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9645
+ removeDebugControls(categories: any): void;
9646
+ /**
9647
+ * Remove the given control from a panel.
9648
+ *
9649
+ * @method removeDebugControl
9650
+ * @param {string} category the name of the panel the control will be put under
9651
+ * @param {string} name the name of the control
9652
+ */
9653
+ removeDebugControl(category: string, name: string): void;
9654
+ _addDebugControl(category: any, name: any, description: any, control: any): void;
9655
+ _removeDebugControl(category: any, name: any): void;
9656
+ _onMinimizeClicked(): void;
9657
+ _onCategoryChanged(): void;
9462
9658
  }
9463
9659
  /**
9464
- * Our new renderer that renders static elements to one buffer and animated
9465
- * elements to another buffer, allowing only the latter buffer to be
9466
- * re-rendered if the camera isn't moving. There is also a third buffer that
9467
- * can be used to render elements that must appear always on top.
9468
- *
9469
- * Does not yet support antialiasing.
9470
- *
9471
- * 2019/07/10 Terence Dickson
9472
- * Generally has better performance under average loads compared to the
9473
- * single-buffer renderer, but does not work on IE 11.
9660
+ * A graph on a HTML canvas element that will display the values in the given
9661
+ * time series.
9474
9662
  *
9475
- * @class MultiBufferRenderer
9663
+ * @class LineGraph
9476
9664
  * @private
9477
- */
9478
- export class MultiBufferRenderer {
9479
- constructor(renderOptions: any, targetWebGLVersion?: number);
9480
- effectComposer: null;
9481
- outdoorsVisible: boolean;
9482
- options: any;
9483
- renderer: WebGLRenderer | undefined;
9484
- core: any;
9485
- journeyOpacity: number | undefined;
9486
- backgroundColor: Color | undefined;
9487
- backgroundAlpha: number | undefined;
9488
- mapboxOutdoorContext: any;
9489
- staticSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9490
- animatedSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9491
- animatedSceneBackgroundRenderTarget: WebGLRenderTarget<Texture> | undefined;
9492
- alwaysOnTopSceneRenderTarget: WebGLRenderTarget<Texture> | undefined;
9493
- outdoorViewRenderTarget: WebGLRenderTarget<Texture> | undefined;
9494
- populateRenderTarget(renderTarget: any): void;
9495
- createOutdoorViewTexture(): void;
9496
- outdoorViewTexture: Texture | undefined;
9497
- outdoorViewTextureProps: any;
9498
- setupEffectComposer(): void;
9499
- setOutdoorViewTexture(texture: any): void;
9665
+ */
9666
+ class LineGraph {
9500
9667
  /**
9501
- * Dispose of the renderer and its buffers.
9668
+ * Return a new `LineGraph` displaying information from the given list of
9669
+ * time series.
9670
+ *
9671
+ * @constructor
9672
+ * @param {[TimeSeries]} seriesList the list of time series that will be
9673
+ * displayed on this graph.
9674
+ * @param {number} width the width of this canvas element, in pixels
9675
+ * @param {number} height the width of this canvas element, in pixels
9502
9676
  */
9677
+ constructor({ seriesList, width, height }: [TimeSeries]);
9678
+ _gradients: Map<any, any>;
9679
+ _canvas: HTMLCanvasElement;
9680
+ _context: CanvasRenderingContext2D | null;
9503
9681
  destroy(): void;
9504
- renderToAnimatedBackgroundBuffer(scene: any, sceneCamera: any): void;
9505
9682
  /**
9506
- * Render the provided scene using the given camera, re-rendering only
9507
- * the animated parts.
9508
- *
9509
- * @method renderAnimated
9510
- * @param renderTarget {null or WebGLRenderTarget}
9511
- * @param scene {Scene}
9512
- * @param sceneCamera {Camera}
9683
+ * @method element
9684
+ * @return {Element} DOM element that can be added to display this graph
9513
9685
  */
9514
- renderAnimated(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9686
+ get element(): Element;
9515
9687
  /**
9516
- * Render the provided scene using the given camera, re-rendering only
9517
- * the parts that should appear on top of all other elements.
9688
+ * Clear this canvas and re-draw the time series lines.
9518
9689
  *
9519
- * @method renderAlwaysOnTop
9520
- * @param renderTarget {null or WebGLRenderTarget}
9521
- * @param scene {Scene}
9522
- * @param sceneCamera {Camera}
9690
+ * @method redraw
9523
9691
  */
9524
- renderAlwaysOnTop(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9692
+ redraw(): void;
9525
9693
  /**
9526
- * Render all of the scene layers, then combine them.
9694
+ * Set the list of time series that this graph displays.
9527
9695
  *
9528
- * @method renderAll
9529
- * @param renderTarget {null or WebGLRenderTarget}
9530
- * @param scene {Scene}
9531
- * @param sceneCamera {Camera}
9696
+ * @method setSeriesList
9697
+ * @param {[TimeSeries]} series series to display
9532
9698
  */
9533
- renderAll(renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9699
+ setSeriesList(series: [TimeSeries]): void;
9700
+ _seriesList: [TimeSeries] | undefined;
9701
+ }
9702
+ /**
9703
+ * A time series that averages values that are reported to it and inserts them
9704
+ * into a ring buffer.
9705
+ *
9706
+ * @class TimeSeries
9707
+ * @private
9708
+ */
9709
+ class TimeSeries {
9710
+ constructor({ windowSize, totalAccumulationCount, hue, }: {
9711
+ windowSize?: number | undefined;
9712
+ totalAccumulationCount?: number | undefined;
9713
+ hue?: number | undefined;
9714
+ });
9715
+ windowSize: number;
9716
+ hue: number;
9717
+ _totalAccumulationCount: number;
9718
+ _ringBuffer: any[];
9719
+ _ringBufferLength: number;
9720
+ _ringBufferPointer: number;
9721
+ _accumulatorValue: number;
9722
+ _accumulatorCount: number;
9723
+ _changed: boolean;
9724
+ destroy(): void;
9534
9725
  /**
9535
- * Re-render the scene, depending on which parts of the scene have been
9536
- * invalidated.
9726
+ * Incorporate the given value into the time series. This will accumulate up
9727
+ * to `LINE_GRAPH_ACCUMULATION_COUNT` values, at which point they will be
9728
+ * averaged and inserted into the time series. If the number of averaged entries
9729
+ * exceeds `LINE_GRAPH_WINDOW_SIZE`, the ring buffer will drop the oldest
9730
+ * entry.
9537
9731
  *
9538
- * @method render
9539
- * @param renderTarget {null or WebGLRenderTarget}
9540
- * @param scene {Scene}
9541
- * @param sceneCamera {Camera}
9732
+ * This will set the `changed()` flag if an accumulated value has been added
9733
+ * to the ring buffer.
9734
+ *
9735
+ * @method report
9736
+ * @param {number} value the value to add to the time series
9542
9737
  */
9543
- render(renderTask: any, renderTarget: null, scene: Scene, sceneCamera: Camera): void;
9738
+ report(value: number): void;
9544
9739
  /**
9545
- * Set the size of the renderer, composer, and all its internal buffers.
9740
+ * Return the entry at the given index in the ring buffer. The value
9741
+ * at `length - 1` is the most recently accumulated value.
9546
9742
  *
9547
- * @method setBufferSize
9548
- * @param width {number}
9549
- * @param height {number}
9743
+ * @method at
9744
+ * @param {number} i the index to retrieve
9745
+ * @return {number} the accumulated value at the given index
9550
9746
  */
9551
- setBufferSize(width: number, height: number): void;
9552
- width: number | undefined;
9553
- height: number | undefined;
9747
+ at(i: number): number;
9554
9748
  /**
9555
- * Set the color and opacity that will be drawn behind the scene.
9749
+ * @method maximumValue
9750
+ * @return {number} the maximum value in this time series
9751
+ */
9752
+ maximumValue(): number;
9753
+ /**
9754
+ * Return true if this time series has changed since the previous `report()`
9755
+ * invocation.
9556
9756
  *
9557
- * @method setBackgroundColor
9558
- * @param color {Color}
9559
- * @param alpha {number}
9757
+ * @method changed
9758
+ * @return {boolean}
9560
9759
  */
9561
- setBackgroundColor(color: Color, alpha: number): void;
9760
+ changed(): boolean;
9562
9761
  /**
9563
- * Assign an outdoor context to this renderer.
9762
+ * Return the number of accumulated values in this time series. Will never
9763
+ * exceed `LINE_GRAPH_WINDOW_SIZE`.
9564
9764
  *
9565
- * @method setMapboxOutdoorContext
9566
- * @param {MapboxOutdoorContext} mapboxOutdoorContext context to draw
9765
+ * @return {number} number of accumulated entries
9567
9766
  */
9568
- setMapboxOutdoorContext(mapboxOutdoorContext: MapboxOutdoorContext): void;
9569
- setOutdoorViewController(outdoorViewController: any): void;
9570
- outdoorViewController: any;
9571
- toggleOutdoorViewVisiblity(visible: any): void;
9767
+ get length(): number;
9572
9768
  }
9573
- import { RENDER } from '@mappedin/mappedin-js/renderer/internal';
9574
- import { Scene } from 'three';
9575
- import { Camera } from 'three';
9576
- import { Vector2 } from 'three';
9577
- import { Texture } from 'three';
9578
- import { Color } from 'three';
9579
- import { WebGLRenderer } from 'three';
9580
- import { EffectComposer } from '@mappedin/mappedin-js/renderer/internal/Mappedin.EffectComposer';
9581
- import { WebGLRenderTarget } from 'three';
9582
9769
  export {};
9583
9770
  }
9584
9771
 
9585
- declare module '@mappedin/mappedin-js/renderer/private/controllers/JourneyController' {
9586
- import type Directive from '@mappedin/mappedin-js/navigator/Directive';
9587
- import type INode from '@mappedin/mappedin-js/navigator/interfaces/INode';
9588
- import { Path } from '@mappedin/mappedin-js/renderer/internal';
9589
- import type { TJourneyOptions } from '@mappedin/mappedin-js/renderer/internal';
9590
- import { MappedinDirections } from '@mappedin/mappedin-js/get-venue';
9591
- import Core from '@mappedin/mappedin-js/renderer/private/Core';
9592
- export type TMappedinDirections = {
9593
- distance: number;
9594
- path: INode[];
9595
- instructions: Directive[];
9596
- };
9597
- /**
9598
- *
9599
- * The Journey class represents a journey from point A to point B. This includes any intermediate connections, such as stairs or elevators.
9600
- * The idea is to provide a higher level API with enough hooks to customize the experience. Also, to ensure only 1 journey is allowed at once.
9601
- * This version does not support "stacked view" - but that can be added in the future
9602
- *
9603
- * @internal
9604
- */
9605
- export class JourneyController {
9606
- #private;
9607
- distance: number;
9608
- accessible: boolean;
9609
- activeDirections: MappedinDirections;
9610
- get isMultiFloor(): boolean;
9611
- get mapsInJourney(): (import("../../internal").MappedinMap | undefined)[];
9612
- get mapsIdsInJourney(): (string | undefined)[];
9613
- get buildingsInJourney(): {};
9614
- get mapIdsInvolvedInJourney(): string[];
9615
- constructor(directions: MappedinDirections | MappedinDirections[], options: TJourneyOptions | undefined, core: Core);
9616
- setStep: (step: any) => void;
9617
- setStepByPath: (path: Path) => void;
9618
- overviewPathMode: 'never' | 'always' | 'current-elevation-and-mapgroup';
9619
- setOverviewPathMode(mode: 'never' | 'always' | 'current-elevation-and-mapgroup'): void;
9620
- static instance: JourneyController | null;
9621
- static create(directions: MappedinDirections | MappedinDirections[], options: any, core: Core): JourneyController;
9772
+ declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUIControl' {
9773
+ export class DebugUIScalarSlider {
9774
+ constructor({ minimum, maximum, step, current, onValueChanged }: {
9775
+ minimum: any;
9776
+ maximum: any;
9777
+ step: any;
9778
+ current: any;
9779
+ onValueChanged: any;
9780
+ });
9781
+ _minimum: any;
9782
+ _maximum: any;
9783
+ _step: any;
9784
+ _onValueChanged: any;
9785
+ _element: HTMLInputElement;
9786
+ destroy(): void;
9787
+ addValueChangedListener(listener: any): void;
9788
+ setValue(value: any): void;
9789
+ get element(): HTMLInputElement;
9790
+ get value(): string;
9791
+ get displayedValue(): string;
9792
+ get height(): number;
9793
+ }
9794
+ export class DebugUICheckbox {
9795
+ constructor({ current, onValueChanged }: {
9796
+ current: any;
9797
+ onValueChanged: any;
9798
+ });
9799
+ _onValueChanged: any;
9800
+ _element: HTMLDivElement;
9801
+ _titleElement: HTMLInputElement;
9802
+ destroy(): void;
9803
+ addValueChangedListener(listener: any): void;
9804
+ get element(): HTMLDivElement;
9805
+ get titleElement(): HTMLInputElement;
9806
+ get value(): boolean;
9807
+ get displayedValue(): "true" | "false";
9808
+ get height(): number;
9809
+ get titleElementWidth(): number;
9810
+ }
9811
+ export class DebugUIDropdown {
9812
+ constructor({ values, current, onValueChanged }: {
9813
+ values: any;
9814
+ current: any;
9815
+ onValueChanged: any;
9816
+ });
9817
+ _values: any;
9818
+ _onValueChanged: any;
9819
+ _element: HTMLSelectElement;
9820
+ destroy(): void;
9821
+ addValueChangedListener(listener: any): void;
9822
+ get element(): HTMLSelectElement;
9823
+ get value(): string;
9824
+ get displayedValue(): string;
9825
+ get height(): number;
9826
+ }
9827
+ export class DebugUIButton {
9828
+ constructor({ label, onClick }: {
9829
+ label: any;
9830
+ onClick: any;
9831
+ });
9832
+ _onClick: any;
9833
+ _element: HTMLButtonElement;
9834
+ destroy(): void;
9835
+ addValueChangedListener(): void;
9836
+ addClickListener(listener: any): void;
9837
+ get element(): HTMLButtonElement;
9838
+ get value(): string;
9839
+ get displayedValue(): string;
9840
+ get height(): number;
9841
+ }
9842
+ export class DebugUIColorPicker {
9843
+ constructor({ current, onValueChanged }: {
9844
+ current: any;
9845
+ onValueChanged: any;
9846
+ });
9847
+ _onValueChanged: any;
9848
+ _element: HTMLDivElement;
9849
+ _titleElement: HTMLDivElement;
9850
+ _color: any;
9851
+ _listeners: any[];
9852
+ _colorPickerMain: HTMLCanvasElement;
9853
+ _colorPickerBottomSlider: HTMLCanvasElement;
9854
+ _requestAnimationFrameHandle: number | null;
9855
+ _requestAnimationFrameUpdate(): void;
9856
+ _pickingMain: boolean;
9857
+ _pickingX: number;
9858
+ _pickingY: number;
9859
+ _moveListener: (e: any) => void;
9860
+ _upListener: any;
9861
+ _pickingBottomSlider: boolean;
9862
+ _bottomMoveListener: (e: any) => void;
9863
+ _bottomUpListener: any;
9864
+ _mode: string;
9865
+ _modeButtons: {};
9866
+ destroy(): void;
9867
+ _destroyed: boolean | undefined;
9868
+ addValueChangedListener(listener: any): void;
9869
+ setValue(color: any): void;
9870
+ _requestAnimationFrame(): void;
9871
+ _notify(): void;
9872
+ _updateMain(x: any, y: any): void;
9873
+ _updateBottomSlider(x: any): void;
9874
+ redraw(): void;
9875
+ get element(): HTMLDivElement;
9876
+ get titleElement(): HTMLDivElement;
9877
+ get value(): any;
9878
+ get displayedValue(): string;
9879
+ get height(): number;
9880
+ get titleElementWidth(): number;
9881
+ }
9882
+ export class DebugUIPanel {
9883
+ constructor({ name }: {
9884
+ name: any;
9885
+ });
9886
+ _name: any;
9887
+ _element: HTMLDivElement;
9888
+ _entries: any[];
9889
+ _height: number;
9622
9890
  destroy(): void;
9891
+ get element(): HTMLDivElement;
9892
+ get height(): number;
9893
+ addControl(name: any, description: any, control: any): void;
9894
+ removeControl(name: any): void;
9895
+ _updateLayout(): void;
9623
9896
  }
9624
9897
  }
9625
9898
 
9626
- declare module '@mappedin/mappedin-js/renderer/private/controllers/ExportController' {
9627
- import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
9628
- /**
9629
- * @hidden
9630
- */
9631
- export type TGLTFExportOptions = {
9632
- onlyVisible?: boolean;
9633
- binary?: boolean;
9634
- scale?: number;
9635
- };
9636
- /**
9637
- * API for exporting the scene.
9638
- *
9639
- * @hidden
9640
- */
9641
- export default class ExportController {
9642
- #private;
9643
- core: ICore;
9644
- glTFExporter?: any;
9645
- constructor(core: ICore);
9899
+ declare module '@mappedin/mappedin-js/renderer/private/Core.interface' {
9900
+ import { Color, Vector2, Vector3, Mesh } from 'three';
9901
+ import type { TPadding, TGetPolygonsAtCoordinateOptions, TMapViewOptions, TileManager, BillboardManager, StackedMapsController, SmartCollisionEngine, OutdoorViewController, LayerController } from '@mappedin/mappedin-js/renderer/internal';
9902
+ 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, ExportController, EventSystem } from '@mappedin/mappedin-js/renderer/internal';
9903
+ import Tween, { Easing } from '@tweenjs/tween.js';
9904
+ import WatermarkController from '@mappedin/mappedin-js/renderer/private/controllers/WatermarkController';
9905
+ import PolygonHoverColorsController from '@mappedin/mappedin-js/renderer/private/controllers/PolygonHoverColorsController';
9906
+ import { E_MAP_CHANGED_REASON } from '@mappedin/mappedin-js/renderer/MapView.enums';
9907
+ export type TFocusOptionsLegacy = {
9646
9908
  /**
9647
- * Exports the current scene as a GLTF file.
9909
+ * An array of Nodes to focus in on
9648
9910
  */
9649
- getCurrentSceneGLTF: (userOptions: TGLTFExportOptions) => Promise<Blob>;
9650
- }
9651
- }
9652
-
9653
- declare module '@mappedin/mappedin-js/renderer/private/controllers/LayerController' {
9654
- import type { ICore } from '@mappedin/mappedin-js/renderer/private/Core.interface';
9655
- import { MappedinMap } from '@mappedin/mappedin-js/get-venue';
9656
- import { Feature, FeatureCollection, GeoJsonProperties, Polygon } from 'geojson';
9657
- class LayerController {
9658
- #private;
9659
- constructor(core: ICore);
9911
+ nodes?: (MappedinNode | MappedinNode['id'])[];
9660
9912
  /**
9661
- * Show a set of layers on the current map, and hide all other layers. This also hides any colliders associated with the hidden layers.
9913
+ * An array of Polygons to focus on. It's the center of the bounds of all Polygons, designed to fit everything into view.
9662
9914
  */
9663
- showLayers(layers: string[]): void;
9664
- getAllLayersForMap(map: MappedinMap): Promise<{
9665
- [layerName: string]: boolean;
9666
- }>;
9915
+ polygons?: (MappedinPolygon | MappedinPolygon['id'])[];
9667
9916
  /**
9668
- * Return a list of all visible layers for a map, this will NOT trigger a map load, and is mainly used internally
9669
- * which is why its synchronous
9917
+ * The duration (in ms) the focus animation should last for.
9918
+ * @defaultValue `100`
9670
9919
  */
9671
- getVisibleLayersForLoadedMap(map: MappedinMap): string[] | undefined;
9672
- addGeoJSONLayer(layerName: string, featureOrFeatureCollection: Feature<Polygon, GeoJsonProperties | null> | FeatureCollection<Polygon, GeoJsonProperties | null>): Promise<void>;
9673
- removeGeoJSONLayer(layerName: string): Promise<void>;
9674
- }
9675
- export default LayerController;
9676
- }
9677
-
9678
- declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.BlueDot/Mappedin.BlueDot.ui' {
9679
- import { IBlueDotCore, BlueDotManager } from '@mappedin/mappedin-js/renderer/internal';
9680
- import { IPubSub } from '@mappedin/mappedin-js/renderer/internal/pub-sub';
9681
- import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
9682
- enum ZOOM_CONDITION {
9683
- EXPIRED = 0,
9684
- IN_PROGRESS = 1,
9685
- COMPLETED = 2
9686
- }
9687
- export interface IBlueDotUI extends IPubSub {
9688
- blueDotTooltips: any[];
9689
- setBlueDotPosition: () => void;
9690
- showBlueDotBearing: () => void;
9691
- addGhostMarkers: () => void;
9692
- addLocationUncertainMarkersAndTooltips: () => void;
9693
- addBlueDotMarker: () => void;
9694
- removeTooltips: () => void;
9695
- removeBlueDot: () => void;
9696
- centerBlueDot: () => void;
9697
- endFollowing: () => void;
9698
- zoomCondition: ZOOM_CONDITION;
9699
- isFollowing: boolean;
9700
- useRotationMode: boolean;
9701
- }
9702
- type TBlueDotUIProps = {
9703
- core: ICore;
9704
- blueDotManager: BlueDotManager;
9705
- controller: IBlueDotCore;
9706
- data: any;
9707
- };
9708
- const BlueDotUI: ({ core, blueDotManager, controller }: TBlueDotUIProps) => IBlueDotUI;
9709
- export default BlueDotUI;
9710
- }
9711
-
9712
- declare module '@mappedin/mappedin-js/renderer/internal/utils' {
9713
- export * from '@mappedin/mappedin-js/renderer/internal/utils/utils';
9714
- export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/renderer/internal/utils/browser';
9715
- export { throttle, debounce } from '@mappedin/mappedin-js/renderer/internal/utils/async';
9716
- }
9717
-
9718
- declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.MapManager' {
9719
- export default MapManager;
9720
- class MapManager extends PubSub {
9721
- constructor(polygonMeshesById: any, renderer: any, core: any, taskScheduler: any, loadOptions?: {});
9722
- mapObjects: Map<any, any>;
9723
- currentMap: undefined;
9724
- object: Object3D<import("three").Object3DEventMap>;
9725
- _showCount: number;
9726
- _mapObjectsSortedByElevationDirty: boolean;
9727
- expanded: boolean;
9728
- polygonMeshesById: any;
9729
- core: any;
9730
- renderer: any;
9731
- loadOptions: {};
9732
- addMap(mapClass: any, callback?: () => void): Promise<void>;
9733
- setMap(mapClassOrId: any, callback: any): Promise<any>;
9734
- removeMap(mapClassOrId: any): void;
9735
- removeAllMaps(): void;
9736
- loadMaps(maps: any, startingMap: any, onFirstMapLoaded?: () => void, onDataLoaded?: () => void, onError?: () => void): void;
9920
+ duration?: number;
9737
9921
  /**
9738
- * Expand maps to display within view, typically used for multi-floor navigation. When passed a connection, maps included will not be displayed, instead, their 2d projection
9739
- will be available in the resulting promise, which can be used to display a 2D component in the client-side app.
9740
- *
9741
- * @method expandMaps
9742
- * @param mapIds {Array} Array of mapIds or mapObjects to display while expanded. For connections, pass &#123; connection: true, maps: [], connectionNodes: [], &#125;
9743
- * @param options {Object} Options object @optional
9744
- @param [options.focus=false] {Boolean} Focus the camera onto expanded maps
9745
- @param [options.debug=false] {Boolean} Display cubes around focus bounding box for debug info
9746
- @param [options.rotation=0] {Number} Rotation of scene relative to zero (degrees)
9747
- @param [options.duration=300] {Number} Duration of focus animation in ms
9748
- @returns {Promise} Promise that resolves to 2d screen projections of each layer/map (see example)
9749
- @example
9750
- // expand maps with 3 connection maps in between
9751
- expandMaps(
9752
- '55e89771d982bc06ca000000',
9753
- {
9754
- connection: true,
9755
- // connection nodes are an exit node from the '55e89771' man and entry node for the '55e9c73f' map
9756
- connectionNodes: [{
9757
- map: "55e89771",
9758
- x: 6232,
9759
- y: 4575
9760
- }, {
9761
- map: "55e9c73",
9762
- x: 5945.000000000001,
9763
- y: 4059.000000000001
9764
- }],
9765
- maps: [
9766
- '55e9acbf',
9767
- '55e8a9ed',
9768
- '55e85e23'
9769
- ]
9770
- },
9771
- '55e9c73f'
9772
- );
9773
-
9774
- // resulting promise (sorted by elevation (top to bottom))
9775
-
9776
- [
9777
- {
9778
- min: { x: -100, y: -50 },
9779
- max: { x: -100, y: -50 }
9780
- },
9781
- {
9782
- min: { x: -100, y: -50 },
9783
- max: { x: -100, y: -50 }
9784
- },
9785
- {
9786
- min: { x: -100, y: -50 },
9787
- max: { x: -100, y: -50 }
9788
- }
9789
- ]
9790
- */
9791
- expandMaps(mapsToExpand: any, options: any): Promise<any>;
9922
+ * Whether to zoom the camera in or out, or just pan it.
9923
+ * @defaultValue `true`
9924
+ */
9925
+ changeZoom?: boolean;
9792
9926
  /**
9793
- * Contract maps and display the current map
9794
- *
9795
- * @method contractMaps
9796
- * @param options {Object} Options object @optional
9797
- @param [options.focus] {Boolean} Focus the camera onto current map
9798
- @param [options.debug] {Boolean} Display cubes around focus bounding box for debug info
9799
- @param [options.duration=300] {Number} Duration of focus animation in ms
9800
- */
9801
- contractMaps(options?: any): Promise<any>;
9802
- expandPanBounds(bounds: any): void;
9927
+ * The animation curve to use for zooming in. Uses the animateCamera one by default.
9928
+ */
9929
+ curve?: typeof Easing;
9803
9930
  /**
9804
- * This can be used to invoke a callback function for _every_ set map invocation.
9805
- * @param {Function} cb callback function
9931
+ * Camera tilt between 0 (top-down) to 1 (from the side)
9806
9932
  */
9807
- addPersistentSetMapCallback(cb: Function): void;
9808
- persistentSetMapCallbacks: any;
9809
- setMapCallbacks: any[] | undefined;
9810
- get mapObjectsSortedByElevation(): any[];
9811
- _mapObjectsSortedByElevation: any[] | undefined;
9812
- get visibleMaps(): any[];
9813
- getCompoundBoundingBoxPoints(objects: any): Vector3[];
9814
- multiFloorView: MultiFloorView | undefined;
9815
- renderedMaps: any[] | undefined;
9816
- projections: any[] | undefined;
9817
- mapsFullyLoaded(callback?: () => void): Promise<void>;
9933
+ tilt?: number;
9934
+ /**
9935
+ * Rotation in degrees
9936
+ */
9937
+ rotation?: number;
9938
+ /**
9939
+ * You can overide the {{#crossLink "MapView/focusZoomFactor:property"}}{{/crossLink}} for a specific {{#crossLink "MapView/focusOn:method"}}{{/crossLink}} call, rather than globally, if you like.
9940
+ */
9941
+ focusZoomFactor?: number;
9818
9942
  /**
9819
- * Scroll maps up
9820
- * This will shift maps down to show next one (above)
9943
+ * Sets a floor for how close you can zoom in on the scene. If it's lower than mapView.controls.minZoom, it's ignored.
9944
+ * @defaultValue: 0
9821
9945
  */
9822
- scrollMapsUp(): Promise<any>;
9946
+ minZoom?: number;
9947
+ maxZoom?: number;
9823
9948
  /**
9824
- * Scroll maps down
9825
- * This will shift maps up to show next one (below)
9949
+ * Whether {@link Camera.minZoom} and {@link Camera.maxZoom} should be recalculated during the focusing animation.
9826
9950
  */
9827
- scrollMapsDown(): Promise<any>;
9828
- tiltMaps(tilt: any): void;
9829
- resize(): void;
9830
- }
9831
- import { PubSub } from '@mappedin/mappedin-js/renderer/internal/pub-sub';
9832
- import { Object3D } from 'three';
9833
- import { Vector3 } from 'three';
9834
- import MultiFloorView from '@mappedin/mappedin-js/renderer/internal/Mappedin.MultiFloorView';
9835
- }
9836
-
9837
- declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUI' {
9951
+ updateZoomLimits?: boolean;
9952
+ padding?: TPadding;
9953
+ points?: any[];
9954
+ boundingBox?: any;
9955
+ callback: () => void;
9956
+ cancelledCallback?: () => void;
9957
+ };
9838
9958
  /**
9839
- * A DOM element that can be populated with performance information.
9959
+ * Ben Liu, 2023/03/29
9840
9960
  *
9841
- * @class DebugUI
9842
- * @private
9961
+ * This causes the generation of the index.d.ts file to break entirely for some reason.
9962
+ *
9963
+ * TODO: Figure out why
9843
9964
  */
9844
- export default class DebugUI {
9845
- _element: HTMLDivElement;
9846
- _titleElement: HTMLSelectElement;
9847
- _minimizeElement: HTMLButtonElement;
9848
- _performancePanelElement: HTMLDivElement;
9849
- _performanceEntries: Map<any, any>;
9850
- _sortedPerformanceEntryNames: any[];
9851
- _overviewGraph: LineGraph;
9852
- _controlPanels: Map<any, any>;
9853
- _sortedControlPanelNames: any[];
9854
- _minimized: boolean;
9855
- destroy(): void;
9965
+ export interface ICore extends PubSub<INTERNAL_EVENT_PAYLOAD, INTERNAL_EVENT> {
9856
9966
  /**
9857
- * Return the DOM element used by this `DebugUI`, which may be
9858
- * added as a child of any other DOM element to display it.
9859
- *
9860
- * @method element
9861
- * @return {Element} the ui's root element
9967
+ * Controllers
9862
9968
  */
9863
- get element(): Element;
9969
+ eventSystem: EventSystem;
9970
+ floatingLabels: FloatingLabelsController;
9971
+ flatLabels: FlatLabelsController;
9972
+ paths: PathsController;
9973
+ polygonColors: PolygonColorsController;
9974
+ polygonHoverColors: PolygonHoverColorsController;
9975
+ polygonInteraction: PolygonInteractionController;
9976
+ polygonStates: PolygonStatesController;
9977
+ polygonImages: PolygonImagesController;
9978
+ markers: MarkersController;
9979
+ tooltips: TooltipsController;
9980
+ threeDMarkers: ThreeDMarkersController;
9981
+ blueDot: BlueDotController;
9982
+ camera: CameraController;
9983
+ tileManager: TileManager;
9984
+ billboardManager: BillboardManager;
9985
+ stackedMaps: StackedMapsController;
9986
+ outdoorViewController?: OutdoorViewController;
9987
+ exportController: ExportController;
9988
+ watermark: WatermarkController;
9989
+ layerController: LayerController;
9990
+ state: STATE;
9991
+ options: TMapViewOptions & {
9992
+ onDataLoaded?: (data: Mappedin) => void;
9993
+ onFirstMapLoaded?: (data: Mappedin) => void;
9994
+ };
9995
+ currentPath?: MappedinNode[];
9996
+ referenceMap: MappedinMap;
9997
+ taskScheduler: TaskScheduler;
9998
+ sceneManager: SceneManager | undefined;
9999
+ loadOptions?: TMapViewOptions['loadOptions'];
10000
+ imageFlippingEnabled: boolean;
10001
+ imageFlippingCache: Record<any, any>;
10002
+ cachedPadding: TPadding;
10003
+ getCameraFrameForPoints: any;
10004
+ polygonMeshesById: Record<string, Mesh>;
10005
+ textLabelsByPolygonId: Record<string, FlatLabel>;
10006
+ renderer: any;
10007
+ scene: any;
10008
+ cameraParameters: Vector2;
10009
+ cameraParametersZoomVector: Vector2;
10010
+ resolution: Vector2;
10011
+ determineNewLabelSize: any;
10012
+ visibleMapsInCurrentScene: MappedinMap[];
10013
+ visibleLayersInCurrentScene: {
10014
+ [mapId: string]: MappedinPolygon['layer'][];
10015
+ };
10016
+ visibleMapObjectsInCurrentScene: MapObject[];
10017
+ mapSetInProgress: Promise<undefined>;
10018
+ mapSetResolved: (...args: any[]) => any;
10019
+ on<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, fn: (payload: INTERNAL_EVENT_PAYLOAD[EVENT_NAME] extends {
10020
+ data: null;
10021
+ } ? INTERNAL_EVENT_PAYLOAD[EVENT_NAME]['data'] : INTERNAL_EVENT_PAYLOAD[EVENT_NAME]) => void): void;
10022
+ off<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, fn: changeListenerFn<INTERNAL_EVENT_PAYLOAD[EVENT_NAME]>): void;
10023
+ publish<EVENT_NAME extends keyof INTERNAL_EVENT_PAYLOAD>(eventName: EVENT_NAME, payload?: INTERNAL_EVENT_PAYLOAD[EVENT_NAME]): void;
9864
10024
  /**
9865
- * Log the given entries to this performance logger, and update the display
9866
- * accordingly. If a given key isn't already being logged, an entry will be
9867
- * added for it. If a key is being logged but isn't reported, it will be
9868
- * treated as if it had a value of `0` reported.
10025
+ * Manual camera controls for MapView. Generally you should be using the functions on MapView like {{#crossLink "MapView/focusOn:method"}}{{/crossLink}},
10026
+ * but if you have some cool animations in mind, you can do it with the {{#crossLink "CameraControls"}}{{/crossLink}}.
10027
+ * Some of the functions don't do anything in 2D.
9869
10028
  *
9870
- * @method reportFramePerformance
9871
- * @param {string -> number} entries the most recent recorded values for each
9872
- * named frame update
9873
10029
  */
9874
- reportFramePerformance(entries: any): void;
10030
+ controls: any;
9875
10031
  /**
9876
- * Add the given controls to the given panels. More efficient than adding
9877
- * controls one-by-one since it only recomputes positions after all controls
9878
- * are added.
10032
+ * The Venue data this MapView is using.
9879
10033
  *
9880
- * @method addDebugControls
9881
- * @param {category: string: [{name: string, description: string, control: DebugUIControl}]} categories
9882
- * a mapping from category to a list of control names and controls
10034
+ * @property venue {MappedinVenue}
10035
+ * @final
9883
10036
  */
9884
- addDebugControls(categories: any): void;
10037
+ readonly venue: Mappedin;
9885
10038
  /**
9886
- * Add the given control to a panel.
10039
+ * The div MapView is using.
9887
10040
  *
9888
- * @method addDebugControl
9889
- * @param {string} category the name of the panel the control will be put under
9890
- * @param {string} name the name of the control
9891
- * @param {string} description a description for the control (tooltip)
9892
- * @param {DebugUIControl} control the control to add to the panel
10041
+ * @property container {Div}
10042
+ * @final
9893
10043
  */
9894
- addDebugControl(category: string, name: string, description: string, control: DebugUIControl): void;
10044
+ readonly container: HTMLElement;
9895
10045
  /**
9896
- * Remove the given controls from the UI.
10046
+ * The ID of the Map currently being displayed.
9897
10047
  *
9898
- * @method removeDebugControls
9899
- * @param {category: string: [name: string]} categories
9900
- * a mapping from category to a list of control names to remove
9901
10048
  */
9902
- removeDebugControls(categories: any): void;
10049
+ readonly currentMap: string | null;
9903
10050
  /**
9904
- * Remove the given control from a panel.
10051
+ * Change this factor to influence how much the camera zooms in on a {@link IMapView3D.focusOn} call.
9905
10052
  *
9906
- * @method removeDebugControl
9907
- * @param {string} category the name of the panel the control will be put under
9908
- * @param {string} name the name of the control
10053
+ * @property focusZoomFactor {Integer}
10054
+ * @default 3
9909
10055
  */
9910
- removeDebugControl(category: string, name: string): void;
9911
- _addDebugControl(category: any, name: any, description: any, control: any): void;
9912
- _removeDebugControl(category: any, name: any): void;
9913
- _onMinimizeClicked(): void;
9914
- _onCategoryChanged(): void;
9915
- }
9916
- /**
9917
- * A graph on a HTML canvas element that will display the values in the given
9918
- * time series.
9919
- *
9920
- * @class LineGraph
9921
- * @private
9922
- */
9923
- class LineGraph {
10056
+ focusZoomFactor: number;
9924
10057
  /**
9925
- * Return a new `LineGraph` displaying information from the given list of
9926
- * time series.
10058
+ * Returns the value you should call {@link CameraControls.setZoom} on to fit the Polygon exactly.
9927
10059
  *
9928
- * @constructor
9929
- * @param {[TimeSeries]} seriesList the list of time series that will be
9930
- * displayed on this graph.
9931
- * @param {number} width the width of this canvas element, in pixels
9932
- * @param {number} height the width of this canvas element, in pixels
10060
+ * @return The zoom level that will fit the Polygon
9933
10061
  */
9934
- constructor({ seriesList, width, height }: [TimeSeries]);
9935
- _gradients: Map<any, any>;
9936
- _canvas: HTMLCanvasElement;
9937
- _context: CanvasRenderingContext2D | null;
9938
- destroy(): void;
10062
+ getZoomLevelForPolygon(props: {
10063
+ /**
10064
+ * The Polygon or Polygon ID to get the zoom level for
10065
+ */
10066
+ polygonOrPolygonId: MappedinPolygon | string;
10067
+ }): number;
9939
10068
  /**
9940
- * @method element
9941
- * @return {Element} DOM element that can be added to display this graph
10069
+ * Returns the value you should call {@link CameraControls.setZoom} on to fit the {@link IMapView3D.currentMap} exactly.
10070
+ *
10071
+ * @return The zoom level that will fit the {@link IMapView3D.currentMap}.
9942
10072
  */
9943
- get element(): Element;
10073
+ getZoomLevelForCurrentMap(): number;
9944
10074
  /**
9945
- * Clear this canvas and re-draw the time series lines.
10075
+ * Returns the angle that points to north, in radians, from the default orientation.
9946
10076
  *
9947
- * @method redraw
10077
+ * @return The angle to north from the default orientation, in radians.
9948
10078
  */
9949
- redraw(): void;
10079
+ getNorth(): number;
9950
10080
  /**
9951
- * Set the list of time series that this graph displays.
10081
+ * Takes an element on the DOM and rotates it such that the top is pointing north. It will rotate with the camera, staying locked
10082
+ * on north. If you would like to align it do a different direction, or a different side of the element, pass in an offset. This
10083
+ * is how you would do a compass rose.
10084
+ *
10085
+ * This will modify your element's transform.
10086
+ *
10087
+ * @param element The element on the page to rotate.
10088
+ * @param offset The amount to offset the rotation by, in radians.
9952
10089
  *
9953
- * @method setSeriesList
9954
- * @param {[TimeSeries]} series series to display
9955
10090
  */
9956
- setSeriesList(series: [TimeSeries]): void;
9957
- _seriesList: [TimeSeries] | undefined;
9958
- }
9959
- /**
9960
- * A time series that averages values that are reported to it and inserts them
9961
- * into a ring buffer.
9962
- *
9963
- * @class TimeSeries
9964
- * @private
9965
- */
9966
- class TimeSeries {
9967
- constructor({ windowSize, totalAccumulationCount, hue, }: {
9968
- windowSize?: number | undefined;
9969
- totalAccumulationCount?: number | undefined;
9970
- hue?: number | undefined;
9971
- });
9972
- windowSize: number;
9973
- hue: number;
9974
- _totalAccumulationCount: number;
9975
- _ringBuffer: any[];
9976
- _ringBufferLength: number;
9977
- _ringBufferPointer: number;
9978
- _accumulatorValue: number;
9979
- _accumulatorCount: number;
9980
- _changed: boolean;
9981
- destroy(): void;
10091
+ lockNorth(element: HTMLElement, offset?: number): void;
9982
10092
  /**
9983
- * Incorporate the given value into the time series. This will accumulate up
9984
- * to `LINE_GRAPH_ACCUMULATION_COUNT` values, at which point they will be
9985
- * averaged and inserted into the time series. If the number of averaged entries
9986
- * exceeds `LINE_GRAPH_WINDOW_SIZE`, the ring buffer will drop the oldest
9987
- * entry.
9988
- *
9989
- * This will set the `changed()` flag if an accumulated value has been added
9990
- * to the ring buffer.
10093
+ * Stops the MapView from trying to rotate your element with the camera. Do this if you remove the element, or want to stop it from rotating.
10094
+ * @param element The node to stop rotating. It won't reset the transform, just leave it as is.
10095
+ */
10096
+ unlockNorth(element: HTMLElement): void;
10097
+ /**
10098
+ * Returns all polygons that contain the specified MappedinCoordinate.
9991
10099
  *
9992
- * @method report
9993
- * @param {number} value the value to add to the time series
10100
+ * @param coordinate The MappedinCoordinate to check
10101
+ * @param hoverableMeshChildren
10102
+ * @param options {@link TGetPolygonsAtCoordinateOptions}
9994
10103
  */
9995
- report(value: number): void;
10104
+ getPolygonsAtScreenCoordinate(x: number, y: number, options?: TGetPolygonsAtCoordinateOptions): MappedinPolygon[];
9996
10105
  /**
9997
- * Return the entry at the given index in the ring buffer. The value
9998
- * at `length - 1` is the most recently accumulated value.
10106
+ * Returns all polygons at the specified screen coordinate.
9999
10107
  *
10000
- * @method at
10001
- * @param {number} i the index to retrieve
10002
- * @return {number} the accumulated value at the given index
10108
+ * @param coordinate The Vector2 coordinate to check
10109
+ * @param hoverableMeshChildren
10110
+ * @param options {@link TGetPolygonsAtCoordinateOptions}
10003
10111
  */
10004
- at(i: number): number;
10112
+ getPolygonsAtCoordinate(coordinate: MappedinCoordinate, options?: TGetPolygonsAtCoordinateOptions): MappedinPolygon[];
10113
+ currentInteractionEvent: INTERNAL_EVENT | undefined;
10114
+ interactivePolygons: Record<string, boolean>;
10005
10115
  /**
10006
- * @method maximumValue
10007
- * @return {number} the maximum value in this time series
10116
+ * An object containing polygon ids and their hover colors.
10008
10117
  */
10009
- maximumValue(): number;
10118
+ polygonHoverColorsById: Record<string, Color>;
10010
10119
  /**
10011
- * Return true if this time series has changed since the previous `report()`
10012
- * invocation.
10013
- *
10014
- * @method changed
10015
- * @return {boolean}
10120
+ * An Object to keep track of highlighted polygon id and the highlight color as the value initiated by setPolygonColor
10016
10121
  */
10017
- changed(): boolean;
10122
+ highlightedPolygons: Record<string, string>;
10018
10123
  /**
10019
- * Return the number of accumulated values in this time series. Will never
10020
- * exceed `LINE_GRAPH_WINDOW_SIZE`.
10021
- *
10022
- * @return {number} number of accumulated entries
10124
+ * An object containing all outlined polygons.
10023
10125
  */
10024
- get length(): number;
10025
- }
10026
- export {};
10027
- }
10028
-
10029
- declare module '@mappedin/mappedin-js/renderer/internal/Mappedin.DebugUIControl' {
10030
- export class DebugUIScalarSlider {
10031
- constructor({ minimum, maximum, step, current, onValueChanged }: {
10032
- minimum: any;
10033
- maximum: any;
10034
- step: any;
10035
- current: any;
10036
- onValueChanged: any;
10037
- });
10038
- _minimum: any;
10039
- _maximum: any;
10040
- _step: any;
10041
- _onValueChanged: any;
10042
- _element: HTMLInputElement;
10043
- destroy(): void;
10044
- addValueChangedListener(listener: any): void;
10045
- setValue(value: any): void;
10046
- get element(): HTMLInputElement;
10047
- get value(): string;
10048
- get displayedValue(): string;
10049
- get height(): number;
10050
- }
10051
- export class DebugUICheckbox {
10052
- constructor({ current, onValueChanged }: {
10053
- current: any;
10054
- onValueChanged: any;
10055
- });
10056
- _onValueChanged: any;
10057
- _element: HTMLDivElement;
10058
- _titleElement: HTMLInputElement;
10059
- destroy(): void;
10060
- addValueChangedListener(listener: any): void;
10061
- get element(): HTMLDivElement;
10062
- get titleElement(): HTMLInputElement;
10063
- get value(): boolean;
10064
- get displayedValue(): "true" | "false";
10065
- get height(): number;
10066
- get titleElementWidth(): number;
10067
- }
10068
- export class DebugUIDropdown {
10069
- constructor({ values, current, onValueChanged }: {
10070
- values: any;
10071
- current: any;
10072
- onValueChanged: any;
10073
- });
10074
- _values: any;
10075
- _onValueChanged: any;
10076
- _element: HTMLSelectElement;
10077
- destroy(): void;
10078
- addValueChangedListener(listener: any): void;
10079
- get element(): HTMLSelectElement;
10080
- get value(): string;
10081
- get displayedValue(): string;
10082
- get height(): number;
10083
- }
10084
- export class DebugUIButton {
10085
- constructor({ label, onClick }: {
10086
- label: any;
10087
- onClick: any;
10088
- });
10089
- _onClick: any;
10090
- _element: HTMLButtonElement;
10091
- destroy(): void;
10092
- addValueChangedListener(): void;
10093
- addClickListener(listener: any): void;
10094
- get element(): HTMLButtonElement;
10095
- get value(): string;
10096
- get displayedValue(): string;
10097
- get height(): number;
10098
- }
10099
- export class DebugUIColorPicker {
10100
- constructor({ current, onValueChanged }: {
10101
- current: any;
10102
- onValueChanged: any;
10103
- });
10104
- _onValueChanged: any;
10105
- _element: HTMLDivElement;
10106
- _titleElement: HTMLDivElement;
10107
- _color: any;
10108
- _listeners: any[];
10109
- _colorPickerMain: HTMLCanvasElement;
10110
- _colorPickerBottomSlider: HTMLCanvasElement;
10111
- _requestAnimationFrameHandle: number | null;
10112
- _requestAnimationFrameUpdate(): void;
10113
- _pickingMain: boolean;
10114
- _pickingX: number;
10115
- _pickingY: number;
10116
- _moveListener: (e: any) => void;
10117
- _upListener: any;
10118
- _pickingBottomSlider: boolean;
10119
- _bottomMoveListener: (e: any) => void;
10120
- _bottomUpListener: any;
10121
- _mode: string;
10122
- _modeButtons: {};
10123
- destroy(): void;
10124
- _destroyed: boolean | undefined;
10125
- addValueChangedListener(listener: any): void;
10126
- setValue(color: any): void;
10127
- _requestAnimationFrame(): void;
10128
- _notify(): void;
10129
- _updateMain(x: any, y: any): void;
10130
- _updateBottomSlider(x: any): void;
10131
- redraw(): void;
10132
- get element(): HTMLDivElement;
10133
- get titleElement(): HTMLDivElement;
10134
- get value(): any;
10135
- get displayedValue(): string;
10136
- get height(): number;
10137
- get titleElementWidth(): number;
10138
- }
10139
- export class DebugUIPanel {
10140
- constructor({ name }: {
10141
- name: any;
10142
- });
10143
- _name: any;
10144
- _element: HTMLDivElement;
10145
- _entries: any[];
10146
- _height: number;
10147
- destroy(): void;
10148
- get element(): HTMLDivElement;
10149
- get height(): number;
10150
- addControl(name: any, description: any, control: any): void;
10151
- removeControl(name: any): void;
10152
- _updateLayout(): void;
10126
+ outlinedPolygons: Map<string, MappedinPolygon>;
10127
+ /**
10128
+ * A plane that is parallel to the ground and is used for raycasting.
10129
+ */
10130
+ worldPlane: Mesh;
10131
+ getPositionLatLon(lat: number, lon: number, map?: MappedinMap | string | null): Vector3;
10132
+ currentScale: number;
10133
+ getPositionPolygon(polygon: MappedinPolygon | string): Vector3;
10134
+ /**
10135
+ * Takes an x/y pair in Mappedin coordinate space and gives you a Vector3 in scene space
10136
+ * @param nodeOrCoordinate a node or coordinate
10137
+ */
10138
+ convertTo3DMapPosition(nodeOrCoordinate: MappedinCoordinate | MappedinNode): Vector3;
10139
+ /**
10140
+ * Converts a Vector-like object into a MappedinCoordinate for a map.
10141
+ * @param position an object with x and y, like a Vector3
10142
+ * @param mapClass An optional map; otherwise, the current map will be used.
10143
+ */
10144
+ convert3DMapPositionToCoordinate(position: {
10145
+ x: number;
10146
+ y: number;
10147
+ }, mapClass?: MappedinMap): MappedinCoordinate;
10148
+ /**
10149
+ * Converts a 2D x,y screen position into a 3D MappedinCoordinate using projection
10150
+ */
10151
+ convertScreenCoordinateToMapCoordinate(x: number, y: number, map: MappedinMap): MappedinCoordinate;
10152
+ setPadding(padding: {
10153
+ top: number;
10154
+ left: number;
10155
+ bottom: number;
10156
+ right: number;
10157
+ }): void;
10158
+ smartCollisionEngine: SmartCollisionEngine;
10159
+ mapObjects: Map<MappedinMap['id'], MapObject>;
10160
+ /**
10161
+ * The scene only renders when something has changed. This should be something a 3rd party developer doesn't need to worry about,
10162
+ * but if you are doing something weird, or have your own special tween for something, you will want to call this function.
10163
+ * You can call it as often as you want, it just sets a flag that we need to render again, and renders a few frames if we weren't already doing that.
10164
+ * Ignored in 2D.
10165
+ */
10166
+ tryRendering(renderMode?: RENDER): void;
10167
+ setMapReason?: E_MAP_CHANGED_REASON;
10168
+ setMap(mapOrMapId: MappedinMap | string): Promise<null>;
10169
+ setMapWithReason(mapOrMapId: MappedinMap | string, context: E_MAP_CHANGED_REASON): Promise<null>;
10170
+ getPositionNode(node: MappedinNode): Vector3;
10171
+ cameraObject: any;
10172
+ setBackgroundColor(color: string, alpha?: number): void;
10173
+ mapManager: any;
10174
+ focusOn(focusOptions: TFocusOptionsLegacy): Tween;
10175
+ canvasWidth: number;
10176
+ canvasHeight: number;
10177
+ setState(state: STATE): Promise<void>;
10178
+ getNearestNodeByScreenCoordinate(x: number, y: number, mapOrMapId?: MappedinMap | MappedinMap['id']): MappedinNode;
10179
+ destroy(): void;
10153
10180
  }
10154
10181
  }
10155
10182
 
@@ -10351,6 +10378,38 @@ declare module '@mappedin/mappedin-js/renderer/private/Core' {
10351
10378
  export default Core;
10352
10379
  }
10353
10380
 
10381
+ declare module '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.Tile' {
10382
+ import { Texture, Mesh, MeshBasicMaterial } from 'three';
10383
+ import type { ICore } from '@mappedin/mappedin-js/renderer/internal';
10384
+ import { MappedinCoordinate, MappedinMap } from '@mappedin/mappedin-js/get-venue';
10385
+ import { TileManager } from '@mappedin/mappedin-js/renderer/internal/outdoor-context/Mappedin.TileManager';
10386
+ export class Tile {
10387
+ #private;
10388
+ center: MappedinCoordinate;
10389
+ zoomLevel: number;
10390
+ mesh: Mesh;
10391
+ material?: MeshBasicMaterial;
10392
+ texture?: Texture;
10393
+ cache: {
10394
+ tileXY?: {
10395
+ tileX: number;
10396
+ tileY: number;
10397
+ };
10398
+ tileBoundingBoxInLatLon?: number[];
10399
+ };
10400
+ get tileXY(): {
10401
+ tileX: number;
10402
+ tileY: number;
10403
+ };
10404
+ get tileBoundingBoxInLatLon(): number[];
10405
+ constructor(center: MappedinCoordinate, zoomLevel: number, tileManager: TileManager, core: ICore, currentAbortController: AbortController);
10406
+ rendered: boolean;
10407
+ discardTexture(): void;
10408
+ applyTexture(): void;
10409
+ render(metersPerTile: number, referenceMap: MappedinMap): Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>;
10410
+ }
10411
+ }
10412
+
10354
10413
  declare module '@mappedin/mappedin-js/get-venue/Mappedin.MVF.types' {
10355
10414
  import { MapId, ObstructionCollection, EntranceCollection, SpaceCollection, Style } from '@mappedin/mvf';
10356
10415
  import { FeatureCollection, MultiPolygon, Point, Polygon } from 'geojson';