@mappedin/react-sdk 6.0.1-beta.31 → 6.0.1-beta.33

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.
@@ -70,7 +70,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
70
70
  export type { PubSub } from '@packages/internal/common/pubsub';
71
71
  import type { TMappedinMapLibreOverlayEvents } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
72
72
  import { MappedinMapLibreOverlay } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
73
- import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
73
+ import type { LanguagePackHydrationItem, TImagePlacementOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
74
74
  import { MAPPEDIN_COLORS } from '@mappedin/react-sdk/mappedin-js/src/constants';
75
75
  import { type Environment } from '@packages/internal/mvf-utils/mvf-utils';
76
76
  import type { TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TFollowMode, TFollowCameraOptions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
@@ -253,6 +253,23 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
253
253
  * @default false
254
254
  */
255
255
  keepOutdoorGeometryVisible?: boolean;
256
+ /**
257
+ * @experimental
258
+ *
259
+ * Enable occlusion of labels, markers and floors.
260
+ */
261
+ occlusion?: {
262
+ /**
263
+ * Enable occlusion.
264
+ * @default false
265
+ */
266
+ enabled?: boolean;
267
+ };
268
+ /**
269
+ * @experimental
270
+ * @internal
271
+ */
272
+ imagePlacementOptions?: TImagePlacementOptions;
256
273
  };
257
274
  /**
258
275
  * @internal
@@ -886,6 +903,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
886
903
  * @internal
887
904
  */
888
905
  get currentLanguage(): import("@mappedin/mvf").Language | undefined;
906
+ /**
907
+ * Retrieves the natural bearing of the map, which is the angle, in degrees, the map is considered to be "naturally oriented" towards.
908
+ * Typically the angle perpendicular to the street the map is facing, or the main entrance. Other print maps inside the map may have this direction be up.
909
+ * 90 degrees means East is "up"
910
+ *
911
+ * @returns The natural bearing of the map.
912
+ */
913
+ get naturalBearing(): number;
889
914
  /**
890
915
  * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to another on the map.
891
916
  *
@@ -1069,6 +1094,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
1069
1094
  directions: Directions;
1070
1095
  path: Path;
1071
1096
  };
1097
+ /**
1098
+ * Emitted before the scene is drawn to the screen.
1099
+ */
1100
+ 'pre-render': undefined;
1101
+ /**
1102
+ * Emitted after the scene is drawn to the screen.
1103
+ */
1104
+ 'post-render': undefined;
1072
1105
  } & TStackedMapsEvents;
1073
1106
  export type TEventPayload<EventName extends keyof TEvents> = TEvents[EventName] extends {
1074
1107
  data: null;
@@ -1101,7 +1134,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1101
1134
  import FloorStack from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack';
1102
1135
  import Facade from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade';
1103
1136
  import type { MapDataRecords, EnterpriseMapDataRecords } from '@mappedin/react-sdk/mappedin-js/src/utils/data-creation';
1104
- import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language, AreaCollection } from '@mappedin/mvf';
1137
+ import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language, AreaCollection, TilesetStyle } from '@mappedin/mvf';
1105
1138
  import { AnalyticsInternal } from '@mappedin/react-sdk/mappedin-js/src/analytics';
1106
1139
  import EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
1107
1140
  import EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
@@ -1109,11 +1142,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1109
1142
  import { PubSub } from '@packages/internal/common';
1110
1143
  import type { LanguagePack, Places, TMapDataInternalOptions } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
1111
1144
  import { type LocalePackUrls } from '@packages/internal/mvf-utils';
1112
- import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
1145
+ import type { EnvControl, TGetMapDataOptions } from '@packages/internal/mvf-utils/mvf-utils';
1113
1146
  import type { TMapDataObjectTypes, TGetDirectionsOptions, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
1114
1147
  import { type Directions, DirectionsInternal } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
1115
1148
  import { type THydrateMapDataBundle } from '@mappedin/react-sdk/mappedin-js/src';
1116
1149
  import { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
1150
+ import LocationProfile from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-profile';
1151
+ import LocationCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-category';
1117
1152
  /**
1118
1153
  * Internal class representing detailed map data.
1119
1154
  *
@@ -1164,7 +1199,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1164
1199
  pointsOfInterestById: MapDataRecords['poisById'];
1165
1200
  annotationsById: MapDataRecords['annotationsById'];
1166
1201
  areasById: MapDataRecords['areasById'];
1202
+ locationProfilesById: MapDataRecords['locationProfilesById'];
1203
+ locationCategoriesById: MapDataRecords['locationCategoriesById'];
1204
+ locationProfilesByExternalId: MapDataRecords['locationProfilesByExternalId'];
1167
1205
  locationsById: EnterpriseMapDataRecords['locationsById'];
1206
+ locationProfilesByCategoryId: MapDataRecords['locationProfilesByCategoryId'];
1207
+ locationCategoriesByParentId: MapDataRecords['locationCategoriesByParentId'];
1168
1208
  categoriesById: EnterpriseMapDataRecords['categoriesById'];
1169
1209
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
1170
1210
  mvfLocationsBySpaceId: EnterpriseMapDataRecords['mvfLocationsBySpaceId'];
@@ -1203,8 +1243,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1203
1243
  languagePacks: {
1204
1244
  [languageCode: string]: LanguagePack;
1205
1245
  };
1246
+ tilesets: {
1247
+ [tilesetId: string]: TilesetStyle;
1248
+ };
1206
1249
  binaryBundle?: Uint8Array;
1207
1250
  envControl: EnvControl;
1251
+ getMapDataOptions?: TGetMapDataOptions;
1208
1252
  /**
1209
1253
  * @internal
1210
1254
  */
@@ -1223,6 +1267,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1223
1267
  get mapName(): string;
1224
1268
  get organizationId(): string;
1225
1269
  get mapCenter(): Coordinate;
1270
+ get naturalBearing(): number;
1226
1271
  /**
1227
1272
  * Retrieves all spaces in the map.
1228
1273
  *
@@ -1278,9 +1323,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1278
1323
  get nodes(): Node[];
1279
1324
  get locations(): EnterpriseLocation[];
1280
1325
  get categories(): EnterpriseCategory[];
1326
+ get locationProfiles(): LocationProfile[];
1327
+ get locationCategories(): LocationCategory[];
1281
1328
  get mvfFloors(): MVFFloor[];
1282
1329
  get mvfFloorStacks(): MVFFloorStack[];
1283
1330
  getByType(type: string): object[];
1331
+ getByType(type: 'location-profile'): LocationProfile[];
1332
+ getByType(type: 'location-category'): LocationCategory[];
1284
1333
  getByType(type: 'space'): Space[];
1285
1334
  getByType(type: 'area'): Area[];
1286
1335
  getByType(type: 'door'): Door[];
@@ -1338,6 +1387,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1338
1387
  multiDestination?: true;
1339
1388
  }) => Directions | Directions[] | undefined;
1340
1389
  getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area): number;
1390
+ transformImageRequest: (url: string) => Promise<{
1391
+ url: string;
1392
+ }>;
1341
1393
  toJSONBundle({ downloadLanguagePacks, }?: {
1342
1394
  downloadLanguagePacks?: boolean;
1343
1395
  }): Promise<THydrateMapDataBundle>;
@@ -1351,7 +1403,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1351
1403
  */
1352
1404
  destroy(): void;
1353
1405
  }
1354
- export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1406
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile, };
1355
1407
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
1356
1408
  export type { Places };
1357
1409
  }
@@ -1664,6 +1716,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1664
1716
  * @internal
1665
1717
  */
1666
1718
  Debug: Debug;
1719
+ /**
1720
+ * Takes a screenshot of the current scene and returns it as a data URL.
1721
+ *
1722
+ * NOTE: This only captures the 3D scene, not the UI elements like labels, markers, etc.
1723
+ * Also, this does not cause the screenshot to be saved to the user's device, it only returns
1724
+ * the data.
1725
+ * @returns A Promise that resolves with the screenshot as a base64-encoded data URL string
1726
+ * @experimental
1727
+ */
1728
+ takeScreenshot(): Promise<string>;
1667
1729
  }
1668
1730
  }
1669
1731
 
@@ -1772,7 +1834,7 @@ declare module '@mappedin/react-sdk/geojson/src' {
1772
1834
  */
1773
1835
  export { enableTestMode } from '@mappedin/react-sdk/geojson/src/services/test-mode';
1774
1836
  export { mountSceneGraphVisualizer };
1775
- export type { EntityId, EntityState, LineStyle, PaintStyle, ModelProperties, Shading } from '@mappedin/react-sdk/geojson/src/types';
1837
+ export type { EntityId, EntityState, LineStyle, PaintStyle, ModelProperties, Shading, ImagePlacementOptions, } from '@mappedin/react-sdk/geojson/src/types';
1776
1838
  export type * from 'geojson';
1777
1839
  export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/react-sdk/geojson/src/systems/watermark/system';
1778
1840
  export { preloadFont } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
@@ -1860,10 +1922,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1860
1922
 
1861
1923
  declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1862
1924
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1863
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, EnterpriseLocation, Node, Area, Facade, FloorStack, Annotation, EnterpriseCategory, EnterpriseVenue } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1925
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, EnterpriseLocation, Node, Area, Facade, FloorStack, Annotation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1864
1926
  import type { Label, Marker, Model, Image, Shape, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1865
1927
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1866
- import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions, EnvMapOptions, InitializeModelState, ModelState, UpdateModelState } from '@mappedin/react-sdk/geojson/src';
1928
+ import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions, EnvMapOptions, InitializeModelState, ModelState, UpdateModelState, ImagePlacementOptions } from '@mappedin/react-sdk/geojson/src';
1867
1929
  export type DeepRequired<T> = Required<{
1868
1930
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1869
1931
  }>;
@@ -2240,7 +2302,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2240
2302
  /**
2241
2303
  * Defines the target for navigation operations.
2242
2304
  */
2243
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
2305
+ export type TNavigationTarget = LocationProfile | Annotation | Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
2244
2306
  /**
2245
2307
  * Defines the special zone for navigation operations.
2246
2308
  */
@@ -2574,7 +2636,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2574
2636
  /**
2575
2637
  * The target for the model to be placed on.
2576
2638
  */
2577
- target: Space | Door | Coordinate;
2639
+ target: IAnchorable;
2578
2640
  /**
2579
2641
  * Optional. Determines the opacity of the model.
2580
2642
  * @default 1
@@ -2814,6 +2876,15 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2814
2876
  localePack: ParsedMVFLocalePack;
2815
2877
  };
2816
2878
  export type GlobalState = {
2879
+ /**
2880
+ * The color of the background, in hex format(#000000).
2881
+ */
2882
+ backgroundColor: string;
2883
+ /**
2884
+ * The alpha value of the background, between 0 and 1.
2885
+ * @default 1
2886
+ */
2887
+ backgroundAlpha: number;
2817
2888
  /**
2818
2889
  * environment map for reflections.
2819
2890
  * @default 'basic'
@@ -2843,6 +2914,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2843
2914
  export interface IFocusable {
2844
2915
  get focusTarget(): TFocusTarget | TFocusTarget[];
2845
2916
  }
2917
+ export interface INavigatable {
2918
+ get navigationTarget(): TNavigationTarget | TNavigationTarget[];
2919
+ }
2846
2920
  /**
2847
2921
  * A class that implements IAnchorable can have 2D elements like {@link Label}s and {@link Marker}s anchored to it.
2848
2922
  */
@@ -2853,6 +2927,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2853
2927
  * Associates MapData type strings with their corresponding classes.
2854
2928
  */
2855
2929
  export type TMapDataObjectTypes = {
2930
+ 'location-profile': LocationProfile;
2931
+ 'location-category': LocationCategory;
2856
2932
  node: Node;
2857
2933
  space: Space;
2858
2934
  door: Door;
@@ -2868,6 +2944,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2868
2944
  area: Area;
2869
2945
  facade: Facade;
2870
2946
  };
2947
+ /**
2948
+ * @interface
2949
+ * @internal
2950
+ */
2951
+ export type TImagePlacementOptions = ImagePlacementOptions;
2871
2952
  }
2872
2953
 
2873
2954
  declare module '@mappedin/react-sdk/mappedin-js/src/constants' {
@@ -2888,6 +2969,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/constants' {
2888
2969
  outdoorView: {
2889
2970
  layersHiddenByGeometry: string[];
2890
2971
  };
2972
+ imagePlacementOptions: {
2973
+ mode: "default";
2974
+ };
2891
2975
  };
2892
2976
  export const EXTERIOR_WALLS_ID = "ExteriorWalls";
2893
2977
  export const WALLS_ID = "Walls";
@@ -2898,6 +2982,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/constants' {
2898
2982
  export const LABELS_LAYER = "LabelsLayer";
2899
2983
  export const MARKERS_LAYER = "MarkersLayer";
2900
2984
  export const FOOTPRINT_LAYER = "FootprintLayer";
2985
+ export const OCCLUSION_LAYER = "OcclusionLayer";
2901
2986
  export const IMAGES_LAYER = "ImagesLayer";
2902
2987
  export const SELF_SERVE_API_AUDIENCE: string[];
2903
2988
  export const ENTERPRISE_API_AUDIENCE: string[];
@@ -3087,6 +3172,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/sta
3087
3172
  import { type Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3088
3173
  import { type TCameraAnimationOptions } from '@mappedin/react-sdk/mappedin-js/src';
3089
3174
  export const GAP_BELOW_FLOORS = 50;
3175
+ export const DEBUG = false;
3090
3176
  export const DURATION = 1000;
3091
3177
  export type TStackedMapsState =
3092
3178
  /**
@@ -3109,8 +3195,21 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/sta
3109
3195
  includedFloors?: Floor[];
3110
3196
  /**
3111
3197
  * The distance between floors in the stack in meters.
3198
+ * - When set to 'auto', the system automatically calculates the optimal distance
3199
+ * needed to visually separate first two floors in the current view.
3200
+ * - When set to a numeric value, that exact distance in meters is used between each floor.
3201
+ * @default 50
3202
+ *
3203
+ * @example
3204
+ * // Use automatic distance calculation
3205
+ * await mapView.StackedMaps.expand({ distanceBetweenFloors: 'auto' });
3206
+ * console.log(mapView.distanceBetweenFloors) // output: computed value
3207
+ *
3208
+ * // Use fixed distance of 75 meters between floors
3209
+ * mapView.StackedMaps.expand({ distanceBetweenFloors: 75 });
3210
+ * console.log(mapView.distanceBetweenFloors) // output: 75 as specified
3112
3211
  */
3113
- distanceBetweenFloors?: number;
3212
+ distanceBetweenFloors?: number | 'auto';
3114
3213
  /**
3115
3214
  * The pan mode to use when animating the camera.
3116
3215
  * @default 'elevation'
@@ -3147,9 +3246,42 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/sta
3147
3246
  */
3148
3247
  get expanded(): boolean;
3149
3248
  /**
3150
- * The distance between floors in the stack in meters.
3249
+ * Gets the distance between floors in meters.
3250
+ *
3251
+ * This property returns different values based on how the `expand()` method was called:
3252
+ *
3253
+ * - When `expand()` was called with `distanceBetweenFloors: 'auto'`, this returns the computed
3254
+ * value needed to visually separate the first two floors in clip space.
3255
+ * - When `expand()` was called with a numeric value (e.g., `distanceBetweenFloors: 50`),
3256
+ * this returns that specified value.
3257
+
3258
+ * This value is cached for performance until `clearCachedFloorSeparationDistance()` is called
3259
+ * to force a recalculation.
3260
+ *
3261
+ * @example
3262
+ * // Using automatic floor separation distance
3263
+ * await mapView.StackedMaps.expand({ distanceBetweenFloors: 'auto' });
3264
+ * console.log(mapView.StackedMaps.distanceBetweenFloors); // Returns computed separation value
3265
+ *
3266
+ * // Using fixed floor separation distance
3267
+ * await mapView.StackedMaps.expand({ distanceBetweenFloors: 50 });
3268
+ * console.log(mapView.StackedMaps.distanceBetweenFloors); // Returns 50
3151
3269
  */
3152
- get gapBelowFloors(): number;
3270
+ get distanceBetweenFloors(): number;
3271
+ /**
3272
+ * Clears the cached value for the computed distance between floors.
3273
+ *
3274
+ * Call this method to invalidate the calculation of the optimal distance between floors
3275
+ * when using `distanceBetweenFloors: 'auto'` option with the expand() method. This is useful
3276
+ * when the camera position or viewport has changed significantly, which may affect the optimal
3277
+ * floor separation distance.
3278
+ *
3279
+ * @example
3280
+ * // Force recalculation before expanding with auto distance
3281
+ * mapView.StackedMaps.clearCachedFloorSeparationDistance();
3282
+ * await mapView.StackedMaps.expand({ distanceBetweenFloors: 'auto' });
3283
+ */
3284
+ clearCachedFloorSeparationDistance(): void;
3153
3285
  /**
3154
3286
  * The factor of the expanded floor stack. 0 is collapsed, 1 is fully expanded.
3155
3287
  */
@@ -3520,11 +3652,19 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3520
3652
  /**
3521
3653
  * @internal
3522
3654
  */
3523
- constructor(directions: DirectionsCollection, mapData: MapDataInternal);
3655
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal, from: TNavigationTarget[], to: TNavigationTarget[]);
3524
3656
  /**
3525
3657
  * @internal
3526
3658
  */
3527
3659
  get path(): Node[];
3660
+ /**
3661
+ * The selected departure.
3662
+ */
3663
+ get departure(): TNavigationTarget;
3664
+ /**
3665
+ * The selected destination.
3666
+ */
3667
+ get destination(): TNavigationTarget;
3528
3668
  /**
3529
3669
  * All the coordinates ({@link Coordinate}) of the directions.
3530
3670
  */
@@ -3574,6 +3714,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3574
3714
  */
3575
3715
  getExcludedNodeIds: (accessible: boolean, excludedConnections: Connection[]) => string[];
3576
3716
  }
3717
+ /**
3718
+ * Get the nodes from the navigation target.
3719
+ *
3720
+ * @hidden
3721
+ * @param target
3722
+ * @param mapData
3723
+ */
3724
+ export function getNodesFromTarget(target: TNavigationTarget, mapData: MapDataInternal): string[];
3577
3725
  }
3578
3726
 
3579
3727
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
@@ -3589,7 +3737,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3589
3737
  import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3590
3738
  import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3591
3739
  import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
3592
- import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
3740
+ import type { EnvControl, TGetMapDataOptions } from '@packages/internal/mvf-utils/mvf-utils';
3593
3741
  /**
3594
3742
  * Places are the main objects that can be searched for.
3595
3743
  */
@@ -3618,6 +3766,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3618
3766
  languagePacks?: LanguagePackHydrationItem[];
3619
3767
  binaryBundle?: Uint8Array;
3620
3768
  sasToken?: string;
3769
+ getMapDataOptions?: TGetMapDataOptions;
3621
3770
  };
3622
3771
  /**
3623
3772
  * A class that implements IGeoJSONData has a underlying GeoJSON datathat can be accessed.
@@ -3762,6 +3911,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
3762
3911
  latitude: number;
3763
3912
  longitude: number;
3764
3913
  floor: string | undefined;
3914
+ verticalOffset: number;
3765
3915
  };
3766
3916
  neighbors: string[];
3767
3917
  };
@@ -3996,6 +4146,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
3996
4146
  latitude: number;
3997
4147
  longitude: number;
3998
4148
  floor: string | undefined;
4149
+ verticalOffset: number;
3999
4150
  };
4000
4151
  };
4001
4152
  /**
@@ -4136,6 +4287,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4136
4287
  latitude: number;
4137
4288
  longitude: number;
4138
4289
  floor: string | undefined;
4290
+ verticalOffset: number;
4139
4291
  };
4140
4292
  };
4141
4293
  /**
@@ -4194,6 +4346,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
4194
4346
  * @returns {string} The name of the floor.
4195
4347
  */
4196
4348
  get name(): string;
4349
+ /**
4350
+ * Gets the short name of the floor (i.e. "F1", "L, "2", etc.).
4351
+ * Used in space constrained lists and Often aligns with what is displayed on an elevator.
4352
+ *
4353
+ * @returns {string} The short name of the floor.
4354
+ */
4355
+ get shortName(): string;
4197
4356
  /**
4198
4357
  * Gets the external ID of the floor.
4199
4358
  *
@@ -4368,6 +4527,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
4368
4527
  latitude: number;
4369
4528
  longitude: number;
4370
4529
  floor: string | undefined;
4530
+ verticalOffset: number;
4371
4531
  }[];
4372
4532
  floors: string[];
4373
4533
  };
@@ -4484,6 +4644,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4484
4644
  latitude: number;
4485
4645
  longitude: number;
4486
4646
  floor: string | undefined;
4647
+ verticalOffset: number;
4487
4648
  };
4488
4649
  };
4489
4650
  /**
@@ -4498,6 +4659,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4498
4659
 
4499
4660
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate' {
4500
4661
  import type { IFocusable, IAnchorable } from '@mappedin/react-sdk/mappedin-js/src/types';
4662
+ type TCoordinateParams = {
4663
+ latitude: number;
4664
+ longitude: number;
4665
+ floorId?: string;
4666
+ verticalOffset?: number;
4667
+ };
4501
4668
  /**
4502
4669
  * Class representing a pseudo-mercator coordinate.
4503
4670
  *
@@ -4530,6 +4697,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate'
4530
4697
  * The floor ID of the coordinate.
4531
4698
  */
4532
4699
  readonly floorId?: string;
4700
+ /**
4701
+ * The vertical position of the coordinate, offset from the floor.
4702
+ * @internal
4703
+ */
4704
+ readonly verticalOffset: number;
4533
4705
  /**
4534
4706
  * Checks if the provided instance is of type Coordinate.
4535
4707
  *
@@ -4540,7 +4712,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate'
4540
4712
  /**
4541
4713
  * @internal
4542
4714
  */
4543
- constructor(latitude: number, longitude: number, floorId?: string);
4715
+ constructor(latitudeOrParams: TCoordinateParams);
4716
+ /**
4717
+ * @deprecated
4718
+ * @internal
4719
+ */
4720
+ constructor(latitudeOrParams: number, longitude: number, floorId?: string);
4544
4721
  /**
4545
4722
  * @internal
4546
4723
  */
@@ -4565,6 +4742,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate'
4565
4742
  latitude: number;
4566
4743
  longitude: number;
4567
4744
  floor: string | undefined;
4745
+ verticalOffset: number;
4568
4746
  };
4569
4747
  /**
4570
4748
  * Cleans up resources used by the instance.
@@ -4669,6 +4847,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
4669
4847
  latitude: number;
4670
4848
  longitude: number;
4671
4849
  floor: string | undefined;
4850
+ verticalOffset: number;
4672
4851
  };
4673
4852
  };
4674
4853
  /**
@@ -4775,6 +4954,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
4775
4954
  latitude: number;
4776
4955
  longitude: number;
4777
4956
  floor: string | undefined;
4957
+ verticalOffset: number;
4778
4958
  };
4779
4959
  };
4780
4960
  /**
@@ -5038,8 +5218,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade' {
5038
5218
 
5039
5219
  declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5040
5220
  import type { AnnotationCollection, EntranceCollection, FeatureCollection, Connection as MVFConnection, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseVenue as MVFEnterpriseVenue, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, ParsedMVF, Point, SpaceCollection, SpaceProperties, AreaCollection, AreaId, EnterpriseLocationInstance } from '@mappedin/mvf';
5041
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5042
- import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5221
+ import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space, LocationCategory, LocationProfile, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5043
5222
  export type MapDataRecords = {
5044
5223
  spacesById: Record<string, Space>;
5045
5224
  nodesById: Record<string, Node>;
@@ -5054,6 +5233,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5054
5233
  poisById: Record<string, PointOfInterest>;
5055
5234
  annotationsById: Record<string, Annotation>;
5056
5235
  areasById: Record<AreaId, Area>;
5236
+ locationProfilesById: Record<string, LocationProfile>;
5237
+ locationCategoriesById: Record<string, LocationCategory>;
5238
+ locationProfilesByCategoryId: Record<string, LocationProfile[]>;
5239
+ locationCategoriesByParentId: Record<string, LocationCategory[]>;
5057
5240
  spacesByExternalId: Record<string, Space[]>;
5058
5241
  nodesByExternalId: Record<string, Node[]>;
5059
5242
  poisByExternalId: Record<string, PointOfInterest[]>;
@@ -5062,6 +5245,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5062
5245
  floorsByExternalId: Record<string, Floor[]>;
5063
5246
  objectsByExternalId: Record<string, MapObject[]>;
5064
5247
  areasByExternalId: Record<string, Area[]>;
5248
+ locationProfilesByExternalId: Record<string, LocationProfile[]>;
5065
5249
  spaceIdsByDestinationNodeId: Record<string, string[]>;
5066
5250
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5067
5251
  obstructionIdByEntranceId: Record<string, string>;
@@ -5105,6 +5289,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5105
5289
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5106
5290
  mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5107
5291
  };
5292
+ export const processMVFLocationProfilesAndCategories: (mvf: ParsedMVF, data: MapDataInternal) => {
5293
+ locationCategoriesByParentId: Record<string, LocationCategory[]>;
5294
+ locationProfilesById: Record<string, LocationProfile>;
5295
+ locationCategoriesById: Record<string, LocationCategory>;
5296
+ locationProfilesByExternalId: Record<string, LocationProfile[]>;
5297
+ locationProfilesByCategoryId: Record<string, LocationProfile[]>;
5298
+ };
5108
5299
  export const processMVFSpaces: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "spacesById" | "spacesByExternalId" | "spaceIdsByDestinationNodeId" | "poisById" | "poisByExternalId" | "mvfSpacesById" | "objectEntranceNodeIdsByObstructionId" | "connectionsById" | "connectionIdsByLatLon" | "mvfSpacesByFloorId" | "mvfPoisByFloorId">;
5109
5300
  export const processMVFNodes: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "nodesById" | "nodesByExternalId" | "mvfNodesById" | "mvfNodesByFloorId">;
5110
5301
  export const processMVFObstructions: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "objectsById" | "objectsByExternalId" | "mvfObstructionById" | "obstructionIdByEntranceId">;
@@ -5531,6 +5722,165 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
5531
5722
  export default EnterpriseVenue;
5532
5723
  }
5533
5724
 
5725
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-profile' {
5726
+ import type { LocationId, LocationLink, LocationPicture, LocationSocial, Location as MVFLocation } from '@mappedin/mvf';
5727
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5728
+ import type { Annotation, Connection, Door, LocationCategory, MapDataInternal, Space, MapObject } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5729
+ import type { TFocusTarget, TNavigationTarget, IFocusable, INavigatable } from '@mappedin/react-sdk/mappedin-js/src/types';
5730
+ import { OpeningHours } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/opening-hours';
5731
+ class LocationProfile extends BaseMetaData implements Omit<MVFLocation, 'categories' | 'spaces' | 'obstructions' | 'entrances' | 'shapes' | 'connections' | 'annotations' | 'openingHoursSpecification'>, IFocusable, INavigatable {
5732
+ #private;
5733
+ /**
5734
+ * Checks if the provided instance is of type EnterpriseLocation.
5735
+ *
5736
+ * @param instance The instance to check.
5737
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
5738
+ */
5739
+ static is(instance: object): instance is LocationProfile;
5740
+ /**
5741
+ * @internal
5742
+ */
5743
+ static readonly __type = "location-profile";
5744
+ /**
5745
+ * @internal
5746
+ */
5747
+ readonly __type = "location-profile";
5748
+ id: LocationId;
5749
+ name: string;
5750
+ externalId?: string;
5751
+ description?: string;
5752
+ /**
5753
+ * The location's logo
5754
+ *
5755
+ * @format uri
5756
+ */
5757
+ logo?: string;
5758
+ phone?: string;
5759
+ /**
5760
+ * The location's social media links.
5761
+ */
5762
+ social: LocationSocial[];
5763
+ /**
5764
+ * The location's pictures
5765
+ */
5766
+ pictures: LocationPicture[];
5767
+ /**
5768
+ * Web links for the location
5769
+ */
5770
+ links: LocationLink[];
5771
+ constructor(data: MapDataInternal, options: {
5772
+ mvfData: MVFLocation;
5773
+ });
5774
+ /**
5775
+ * Gets the {@link Space}s associated with the location.
5776
+ *
5777
+ * @returns {Space[]} The spaces array.
5778
+ */
5779
+ get spaces(): Space[];
5780
+ /**
5781
+ * Gets the {@link Door}s associated with the location.
5782
+ *
5783
+ * @returns {Door[]} The doors array.
5784
+ */
5785
+ get doors(): Door[];
5786
+ /**
5787
+ * Gets the {@link Connection}s associated with the location.
5788
+ *
5789
+ * @returns {Connection[]} The connections array.
5790
+ */
5791
+ get connections(): Connection[];
5792
+ /**
5793
+ * Gets the {@link Annotation}s associated with the location.
5794
+ *
5795
+ * @returns {Annotation[]} The annotations array.
5796
+ */
5797
+ get annotations(): Annotation[];
5798
+ /**
5799
+ * Gets the {@link LocationCategory}s associated with the location.
5800
+ *
5801
+ * @returns {LocationCategory[]} The location categories array.
5802
+ */
5803
+ get categories(): LocationCategory[];
5804
+ /**
5805
+ * Gets the {@link MapObject}s associated with the location.
5806
+ *
5807
+ * @returns {MapObject[]} The map objects array.
5808
+ */
5809
+ get mapObjects(): MapObject[];
5810
+ /** @internal */
5811
+ get focusTarget(): TFocusTarget[];
5812
+ /**
5813
+ * Gets the {@link OpeningHours} associated with the location.
5814
+ *
5815
+ * @returns {OpeningHours} The opening hours.
5816
+ */
5817
+ get openingHours(): OpeningHours;
5818
+ /**
5819
+ * @internal
5820
+ */
5821
+ get navigationTarget(): TNavigationTarget[];
5822
+ toJSON(): {
5823
+ id: string;
5824
+ name: string;
5825
+ };
5826
+ }
5827
+ export default LocationProfile;
5828
+ }
5829
+
5830
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-category' {
5831
+ import type { CategoryId, Category as MVFCategory } from '@mappedin/mvf';
5832
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5833
+ import type { LocationProfile, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5834
+ class LocationCategory extends BaseMetaData implements Omit<MVFCategory, 'parent'> {
5835
+ #private;
5836
+ /**
5837
+ * Checks if the provided instance is of type EnterpriseLocation.
5838
+ *
5839
+ * @param instance The instance to check.
5840
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
5841
+ */
5842
+ static is(instance: object): instance is LocationCategory;
5843
+ /**
5844
+ * @internal
5845
+ */
5846
+ static readonly __type = "location-category";
5847
+ /**
5848
+ * @internal
5849
+ */
5850
+ readonly __type = "location-category";
5851
+ id: CategoryId;
5852
+ name: string;
5853
+ /**
5854
+ * The category's icon
5855
+ *
5856
+ * @format uri
5857
+ */
5858
+ icon: string;
5859
+ constructor(data: MapDataInternal, options: {
5860
+ mvfData: MVFCategory;
5861
+ });
5862
+ /**
5863
+ * Gets the parent {@link LocationCategory}.
5864
+ *
5865
+ * @returns {LocationCategory | undefined} The parent location category.
5866
+ */
5867
+ get parent(): LocationCategory | undefined;
5868
+ /**
5869
+ * Gets the children {@link LocationCategory}s.
5870
+ */
5871
+ get children(): LocationCategory[];
5872
+ /**
5873
+ * Gets the {@link LocationProfile}s that are associated with this category.
5874
+ */
5875
+ get locationProfiles(): LocationProfile[];
5876
+ toJSON(): {
5877
+ id: string;
5878
+ name: string;
5879
+ };
5880
+ }
5881
+ export default LocationCategory;
5882
+ }
5883
+
5534
5884
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
5535
5885
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
5536
5886
  import { Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
@@ -5678,6 +6028,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5678
6028
  * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
5679
6029
  */
5680
6030
  zIndex?: number;
6031
+ /**
6032
+ * The vertical position of the marker relative to the floor.
6033
+ */
6034
+ verticalOffset?: number;
5681
6035
  };
5682
6036
  /**
5683
6037
  * Anchor point for the marker. This will determine the position of the marker relative to the position. A list will place the marker in the first empty placement.
@@ -5742,10 +6096,18 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5742
6096
  * Dynamic resize of the marker. If set to true, the marker will resize based on the content.
5743
6097
  */
5744
6098
  dynamicResize?: boolean;
6099
+ /**
6100
+ * @internal
6101
+ */
6102
+ occluderId?: number;
5745
6103
  /**
5746
6104
  * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
5747
6105
  */
5748
6106
  zIndex?: number;
6107
+ /**
6108
+ * The vertical position of the marker relative to the floor.
6109
+ */
6110
+ verticalOffset?: number;
5749
6111
  };
5750
6112
  export class MarkerComponent {
5751
6113
  id: string | number;
@@ -5765,6 +6127,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5765
6127
  */
5766
6128
  canShow: boolean;
5767
6129
  visible: boolean;
6130
+ isOccluded: boolean;
5768
6131
  offscreen: boolean;
5769
6132
  strategyIndex: number;
5770
6133
  activeBoundingBox: {
@@ -5781,6 +6144,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5781
6144
  left: string;
5782
6145
  };
5783
6146
  dirty: boolean;
6147
+ /** Flag used in 2d-projection system to determine if the parent has changed */
6148
+ parentDirty: boolean;
5784
6149
  collisionDirty: boolean;
5785
6150
  visibilityNeedsUpdate: 'show' | 'hide' | false;
5786
6151
  constructor(contentHtml: string, options?: AddMarkerOptions);
@@ -6371,6 +6736,14 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6371
6736
  * @internal
6372
6737
  */
6373
6738
  id?: string;
6739
+ /**
6740
+ * @internal
6741
+ */
6742
+ occluderId?: number;
6743
+ /**
6744
+ * The vertical position of the label relative to the floor.
6745
+ */
6746
+ verticalOffset?: number;
6374
6747
  };
6375
6748
  type TStyle = {
6376
6749
  top?: number;
@@ -6440,7 +6813,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6440
6813
  /**
6441
6814
  * The parent container of the label
6442
6815
  */
6443
- readonly parent: EntityId<GroupContainerState> | string | number;
6816
+ readonly parent: EntityId<GroupContainerState>;
6444
6817
  /**
6445
6818
  * Whether the label is enabled
6446
6819
  */
@@ -6463,6 +6836,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6463
6836
  * Options for the label
6464
6837
  */
6465
6838
  options: Omit<AddLabelOptions, 'id'>;
6839
+ /**
6840
+ * vertical offset of the model in meters off the floor
6841
+ */
6842
+ verticalOffset: number;
6466
6843
  };
6467
6844
  export class LabelComponent {
6468
6845
  lines: number;
@@ -6484,6 +6861,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6484
6861
  options: LabelOptions;
6485
6862
  visible: boolean;
6486
6863
  enabled: boolean;
6864
+ isOccluded: boolean;
6487
6865
  offscreen: boolean;
6488
6866
  /**
6489
6867
  * Whether the label can be shown, which is decided by the collision engine
@@ -6502,6 +6880,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6502
6880
  currentStrategyIndex: number;
6503
6881
  totalMarkerSize: number;
6504
6882
  dirty: boolean;
6883
+ /** Flag used in 2d-projection system to determine if the parent has changed */
6884
+ parentDirty: boolean;
6505
6885
  collisionDirty: boolean;
6506
6886
  lastTextAlign: any;
6507
6887
  imageHash?: number;
@@ -6546,6 +6926,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6546
6926
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
6547
6927
  import type { BatchedText } from '@mappedin/react-sdk/geojson/src/services/text3d/text3d';
6548
6928
  import type { EntityTypes } from '@mappedin/react-sdk/geojson/src/renderer';
6929
+ import type { Feature, MultiPolygon, Polygon } from 'geojson';
6549
6930
  export enum GroupContainerComponents {
6550
6931
  Stack = 0,
6551
6932
  Interaction = 1
@@ -6578,9 +6959,13 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6578
6959
  entityId: string | number;
6579
6960
  entities2D: Set<string | number>;
6580
6961
  dirty: boolean;
6962
+ occluderDirty: boolean;
6963
+ occluderId?: number;
6964
+ occluderFeature?: Feature<Polygon | MultiPolygon, any>;
6581
6965
  };
6582
6966
  components: [StackComponent?, InteractionComponent?];
6583
6967
  constructor(id: string);
6968
+ addOccluderFeature(feature: Feature<Polygon | MultiPolygon, any>, occluderId: number): void;
6584
6969
  addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
6585
6970
  removeEntity(entityGroupOrContainer: EntityTypes): void;
6586
6971
  setVisible(visible: boolean): void;
@@ -6873,7 +7258,6 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6873
7258
  */
6874
7259
  type?: InsetPadding['type'];
6875
7260
  };
6876
- export * from '@mappedin/react-sdk/geojson/src/types/constants';
6877
7261
  /**
6878
7262
  * Result of a user click event.
6879
7263
  */
@@ -6989,6 +7373,10 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6989
7373
  * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
6990
7374
  */
6991
7375
  'pre-render': undefined;
7376
+ /**
7377
+ * Fired when the synchronous tasks of the scene render are complete.
7378
+ */
7379
+ 'post-render': undefined;
6992
7380
  };
6993
7381
  /**
6994
7382
  * The payload of an event. See also {@link MapEvent}.
@@ -7025,18 +7413,70 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
7025
7413
  * All of the entities in the scene
7026
7414
  */
7027
7415
  export type EntityTypes = Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D;
7416
+ /** @internal */
7417
+ export type TransformImageRequest = (url: string) => Promise<{
7418
+ url: string;
7419
+ }>;
7420
+ /**
7421
+ * The mode to use for auto image placement.
7422
+ * - `default` will currently not rotate the image, but in the future it may be settable per-image, in which case this mode will use that setting.
7423
+ * - `none` will not rotate the image.
7424
+ * - `nearest 90` may rotate the image 90 degrees to fit the polygon better.
7425
+ * - `initial bearing` will rotate the images to face the initial bearing of the map view, then try to fit them to their polygon.
7426
+ *
7427
+ * @internal
7428
+ */
7429
+ export type ImagePlacementMode = 'default' | 'none' | 'fit-nearest-90' | 'fit-initial-bearing';
7430
+ /**
7431
+ * Options for configuring how images are automatically placed on polygons.
7432
+ *
7433
+ * @internal
7434
+ */
7435
+ export type ImagePlacementOptions = {
7436
+ /**
7437
+ * The mode to use for auto image placement. See {@link ImagePlacementMode} for more information.
7438
+ * @defaultValue 'default'
7439
+ */
7440
+ mode?: ImagePlacementMode;
7441
+ /**
7442
+ * Scale factor applied to the resulting rectangle dimensions.
7443
+ * Values less than 1 create a safety margin inside the polygon.
7444
+ * @defaultValue 0.9
7445
+ */
7446
+ scaleFactor?: number;
7447
+ /**
7448
+ * Controls the balance between optimizing for rectangle area vs. proximity to center.
7449
+ * Higher values prioritize center alignment over size.
7450
+ * @defaultValue 0.5
7451
+ */
7452
+ centerPriority?: number;
7453
+ /**
7454
+ * Resolution of the grid used for finding the rectangle.
7455
+ * Higher values provide more precise results but require more computation.
7456
+ * @defaultValue 100
7457
+ */
7458
+ resolution?: number;
7459
+ /**
7460
+ * Threshold ratio for determining when to fall back to the original rectangle.
7461
+ * If the calculated rectangle is smaller than this ratio of the original,
7462
+ * the original rectangle will be returned instead.
7463
+ * @defaultValue 0.5
7464
+ */
7465
+ minimumSizeRatio?: number;
7466
+ };
7028
7467
  }
7029
7468
 
7030
7469
  declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
7031
7470
  import type { Texture, BufferGeometry, LineSegments, Mesh } from 'three';
7032
7471
  import { BatchedMesh, Color, Vector3 } from 'three';
7033
7472
  import type { BatchedStandardMaterial } from '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/batched-material';
7034
- import type { Position } from '@mappedin/react-sdk/geojson/src/types';
7473
+ import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
7035
7474
  import type { Feature, LineString, MultiLineString, MultiPolygon, Polygon, Position as GeoJsonPosition } from 'geojson';
7036
7475
  import type { BBox } from '@turf/turf';
7037
7476
  import { type ImageProperties } from '@mappedin/react-sdk/geojson/src/components/image';
7038
7477
  import { type BaseTextAreaProperties } from '@mappedin/mvf';
7039
7478
  import type { Text } from 'troika-three-text';
7479
+ import type { GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
7040
7480
  export class EntityBatchedMesh extends BatchedMesh {
7041
7481
  type: "entityBatchedMesh";
7042
7482
  userData: {
@@ -7066,6 +7506,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
7066
7506
  * The position of the geometry in [lon, lat]
7067
7507
  */
7068
7508
  readonly position: Position;
7509
+ /**
7510
+ * The parent group of the geometry
7511
+ */
7512
+ readonly parent: EntityId<GeometryGroupState>;
7069
7513
  /**
7070
7514
  * Whether the geometry is visible. This is independent of the visibility of the children, but will affect the visibility of the children if set to false.
7071
7515
  */
@@ -7551,7 +7995,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7551
7995
 
7552
7996
  declare module '@mappedin/react-sdk/geojson/src/renderer' {
7553
7997
  import './utils/object-this-polyfill';
7554
- import { Scene, Vector3, Raycaster, Camera as ThreeCamera } from 'three';
7998
+ import { PerspectiveCamera, Scene, Vector3, Raycaster, Camera as ThreeCamera } from 'three';
7555
7999
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7556
8000
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7557
8001
  import { PubSub } from '@mappedin/react-sdk/packages/common/pubsub';
@@ -7595,10 +8039,10 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7595
8039
  import type { AddText3DOptions, Text3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
7596
8040
  import { MeshDetachmentSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-detachment/system';
7597
8041
  import { MeshModificationSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system';
7598
- import { PreRenderSystem } from '@mappedin/react-sdk/geojson/src/systems/pre-render/system';
7599
8042
  import { Text3DSystem } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
7600
8043
  import { Group as TweenGroup } from '@tweenjs/tween.js';
7601
8044
  import { Debug } from '@mappedin/react-sdk/geojson/src/utils/debug';
8045
+ import { Occlusion2DSystem } from '@mappedin/react-sdk/geojson/src/systems/2d-occlusion/system';
7602
8046
  export type * from '@mappedin/react-sdk/geojson/src/types';
7603
8047
  export const raycaster: Raycaster;
7604
8048
  /**
@@ -7639,8 +8083,8 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7639
8083
  geometryInFocusSystem: GeometryInFocusSystem;
7640
8084
  meshDetachmentSystem: MeshDetachmentSystem;
7641
8085
  meshModificationSystem: MeshModificationSystem;
7642
- preRenderSystem: PreRenderSystem;
7643
8086
  text3DSystem: Text3DSystem;
8087
+ occlusion2DSystem: Occlusion2DSystem;
7644
8088
  };
7645
8089
  export type MapViewState = {
7646
8090
  readonly type: 'map-view';
@@ -7701,6 +8145,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7701
8145
  * Add a geometry group from GeoJSON data
7702
8146
  */
7703
8147
  addGeometryGroup<T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T, style?: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<GeometryGroupState>;
8148
+ addOccluder<T extends Feature<Polygon | MultiPolygon, any>>(feature: T, parent?: EntityId<GroupContainerState> | string | number | null): number;
7704
8149
  addImage(id: string, geometry: Feature<Point, ImageProperties>, style: ImageStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<ImageState> | undefined;
7705
8150
  /**
7706
8151
  * Add a group of models from GeoJSON data. These will be instanced automatically for better performance.
@@ -7770,6 +8215,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7770
8215
  */
7771
8216
  getScene(): GroupContainerState;
7772
8217
  getThreeScene(): Scene | undefined;
8218
+ getThreeCamera(): PerspectiveCamera;
7773
8219
  setEnvironment(update: EnvMapOptions): Promise<void>;
7774
8220
  getEnvironment(): EnvMapOptions;
7775
8221
  /**
@@ -7838,11 +8284,15 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7838
8284
  /**
7839
8285
  * Sets the background color of the renderer. Only applies to "standalone mode"
7840
8286
  */
7841
- setBackgroundColor: (color: any, alpha: any) => void;
8287
+ setBackgroundColor: (color: string, alpha: number) => void;
7842
8288
  /**
7843
8289
  * Returns the background color of the renderer. Only applies to "standalone mode"
7844
8290
  */
7845
- get backgroundColor(): import("three").Color;
8291
+ get backgroundColor(): string;
8292
+ /**
8293
+ * Returns the background alpha of the renderer. Only applies to "standalone mode"
8294
+ */
8295
+ get backgroundAlpha(): number;
7846
8296
  /**
7847
8297
  * internal
7848
8298
  */
@@ -8614,8 +9064,7 @@ declare module '@mappedin/react-sdk/packages/geojson-navigator' {
8614
9064
  }
8615
9065
 
8616
9066
  declare module '@mappedin/react-sdk/geojson/src/utils' {
8617
- import type { Box3, Object3D, Camera as THREECamera } from 'three';
8618
- import { Box2 } from 'three';
9067
+ import type { Object3D, Camera as THREECamera } from 'three';
8619
9068
  import { MercatorCoordinate } from '@mappedin/react-sdk/packages/outdoor-context-v4';
8620
9069
  import type { CustomLayerInterface } from '@mappedin/react-sdk/packages/outdoor-context-v4';
8621
9070
  import type { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
@@ -8624,6 +9073,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
8624
9073
  import type { Geometry3DTypes } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8625
9074
  import type { Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8626
9075
  import type { Camera } from '@mappedin/react-sdk/geojson/src/camera';
9076
+ export { isFiniteBox } from '@packages/internal/common';
8627
9077
  export function cartesianToGeographic(centerLat: number, centerLon: number, x: number, y: number): {
8628
9078
  lat: number;
8629
9079
  lon: number;
@@ -8691,7 +9141,6 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
8691
9141
  export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D | Geometry2D | undefined;
8692
9142
  export function getBoundingBoxCenter(bbox: Position[]): [number, number];
8693
9143
  export { getCornersOfBoundingBox } from '@mappedin/react-sdk/geojson/src/utils/bounding-box';
8694
- export function isFiniteBox(box: Box2 | Box3): boolean;
8695
9144
  export { getPixelRatio } from '@mappedin/react-sdk/geojson/src/utils/get-pixel-ratio';
8696
9145
  export { debounce } from '@mappedin/react-sdk/geojson/src/utils/async';
8697
9146
  export { shouldDisableOffscreenCanvas } from '@mappedin/react-sdk/geojson/src/utils/browser';
@@ -8701,6 +9150,8 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
8701
9150
  }
8702
9151
 
8703
9152
  declare module '@mappedin/react-sdk/geojson/src/utils/constants' {
9153
+ import type { InsetPadding } from '@mappedin/react-sdk/geojson/src/types';
9154
+ export const DEFAULT_INSET_PADDING: InsetPadding;
8704
9155
  export const MAPPEDIN_LAYER_ID = "mappedin";
8705
9156
  export enum ENTITY_3D_LAYERS {
8706
9157
  DEFAULT = 0,
@@ -9077,7 +9528,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
9077
9528
  }) => void;
9078
9529
  add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
9079
9530
  floorId?: string;
9080
- spaceId?: string;
9531
+ parentId?: string;
9532
+ verticalOffset?: number;
9081
9533
  }) => {
9082
9534
  id: string | number;
9083
9535
  };
@@ -9200,7 +9652,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/marker' {
9200
9652
  }
9201
9653
 
9202
9654
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/image' {
9203
- import type { Coordinate, Door, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9655
+ import type { IAnchorable } from '@mappedin/react-sdk/mappedin-js/src/types';
9204
9656
  /**
9205
9657
  * Class representing an Image on the {@link MapView}.
9206
9658
  */
@@ -9209,7 +9661,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/image' {
9209
9661
  /**
9210
9662
  * The image's target
9211
9663
  */
9212
- readonly target: Space | Door | Coordinate;
9664
+ readonly target: IAnchorable;
9213
9665
  /**
9214
9666
  * @internal
9215
9667
  */
@@ -9228,7 +9680,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/image' {
9228
9680
  /**
9229
9681
  * @internal
9230
9682
  */
9231
- constructor(id: string, url: string, target: Space | Door | Coordinate);
9683
+ constructor(id: string, url: string, target: IAnchorable);
9232
9684
  /**
9233
9685
  * The image's id
9234
9686
  */
@@ -9392,8 +9844,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/text3d' {
9392
9844
 
9393
9845
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9394
9846
  import type { IFocusable, TCameraAnimationOptions, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9395
- import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
9847
+ import type { InsetPadding } from '@mappedin/core-sdk';
9396
9848
  import { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9849
+ import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
9397
9850
  /**
9398
9851
  * The Camera class is used to control the camera's position, pitch, bearing, and zoom level. It can also be used to focus
9399
9852
  * on one or more locations on the map. The camera can be repositioned instantly or animated to a new position.
@@ -9407,7 +9860,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9407
9860
  /**
9408
9861
  * @internal
9409
9862
  */
9410
- constructor(rendererCore: RendererCore);
9863
+ constructor(api: GeoJsonApi);
9411
9864
  /**
9412
9865
  * Define an area of the screen that is safe for the camera. Anything outside the safe area is assumed to be covered in some way. The camera will not place any map elements there when calling {@link Camera.focusOn}.
9413
9866
  *
@@ -10198,10 +10651,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
10198
10651
  }
10199
10652
 
10200
10653
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
10201
- import type { TAddImageOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
10654
+ import type { IAnchorable, TAddImageOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
10202
10655
  import { Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
10203
10656
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
10204
- import type { Space, Door, Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
10205
10657
  /**
10206
10658
  * Images can enhance the fidelity of an indoor map. They can be used to add custom branding, highlight important features, or provide additional information to users.
10207
10659
  * Images can be placed on any {@link Door}, {@link Space}, or {@link Coordinate} on the map and given a verticalOffset to control the height at which the image is displayed.
@@ -10251,7 +10703,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
10251
10703
  * // Add an interactive {@link Image} to the map with custom HTML content.
10252
10704
  * mapView.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
10253
10705
  */
10254
- add(target: Space | Door | Coordinate, url: string, options: TAddImageOptions): Image;
10706
+ add(target: IAnchorable, url: string, options: TAddImageOptions): Image;
10255
10707
  /**
10256
10708
  * Removes a image from the map.
10257
10709
  *
@@ -10871,6 +11323,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object
10871
11323
  import Image from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image';
10872
11324
  import type { Details } from '@mappedin/mvf';
10873
11325
  export default abstract class BaseMapData {
11326
+ #private;
10874
11327
  /**
10875
11328
  * The identity of the map data.
10876
11329
  */
@@ -10888,6 +11341,32 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object
10888
11341
  * @returns {Image[]} An array of Image objects, or an empty array if no images exist.
10889
11342
  */
10890
11343
  images: Image[];
11344
+ /**
11345
+ * Gets the bounding box of the geoJSON geometry.
11346
+ *
11347
+ * @returns {BBox} The bounding box of the geoJSON geometry
11348
+ */
11349
+ get geoJSONBoundingBox(): {};
11350
+ get geoJSON(): {
11351
+ properties: null;
11352
+ type: string;
11353
+ geometry: {};
11354
+ };
11355
+ }
11356
+ }
11357
+
11358
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/opening-hours' {
11359
+ import type { OpeningHoursSpecification } from '@mappedin/mvf';
11360
+ /**
11361
+ * Represents the opening hours of a location.
11362
+ */
11363
+ export class OpeningHours {
11364
+ #private;
11365
+ constructor(mvfData: OpeningHoursSpecification[]);
11366
+ /**
11367
+ * Gets the raw opening hours data.
11368
+ */
11369
+ get raw(): OpeningHoursSpecification[];
10891
11370
  }
10892
11371
  }
10893
11372
 
@@ -11137,14 +11616,16 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
11137
11616
  id: string | number;
11138
11617
  get type(): 'label' | 'marker';
11139
11618
  get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
11619
+ verticalOffset: number;
11140
11620
  /**
11141
11621
  * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
11142
11622
  */
11143
11623
  positionDirty: boolean;
11624
+ occluderId?: number;
11144
11625
  object3d: Geometry2DObject3D;
11145
11626
  components: [MarkerComponent | LabelComponent, InteractionComponent?];
11146
11627
  disposed: boolean;
11147
- constructor(ui: MarkerComponent | LabelComponent, position: Vector3);
11628
+ constructor(ui: MarkerComponent | LabelComponent, position: Vector3, verticalOffset?: number);
11148
11629
  get position(): Vector3;
11149
11630
  setAltitude(z: number): void;
11150
11631
  }
@@ -11362,13 +11843,15 @@ declare module '@mappedin/react-sdk/geojson/src/types/options' {
11362
11843
  import type { Position } from '@mappedin/react-sdk/geojson/src/types/geometry';
11363
11844
  import type { Map as MapLibreMap } from '@mappedin/react-sdk/packages/outdoor-context-v4';
11364
11845
  import type { AttributionControlOptions } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
11365
- import type { WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
11846
+ import type { ImagePlacementOptions, WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
11847
+ import type { TransformImageRequest } from '@mappedin/react-sdk/geojson/src/types';
11366
11848
  export type EnvMapOptions = 'basic' | false;
11367
11849
  export type RendererCoreOptions = Partial<{
11368
11850
  center?: Position;
11369
11851
  zoomLevel?: number;
11370
11852
  pitch?: number;
11371
11853
  bearing?: number;
11854
+ naturalBearing?: number;
11372
11855
  outdoorView: {
11373
11856
  headers: {
11374
11857
  'x-mappedin-tiles-key': string;
@@ -11388,19 +11871,18 @@ declare module '@mappedin/react-sdk/geojson/src/types/options' {
11388
11871
  onWebGLRendererError?: (error: Error) => void;
11389
11872
  watermark?: WatermarkOptions;
11390
11873
  attribution?: AttributionControlOptions;
11874
+ imagePlacementOptions?: ImagePlacementOptions;
11391
11875
  /**
11392
11876
  * environment map for reflections.
11393
11877
  * @default 'basic'
11394
11878
  */
11395
11879
  environment?: EnvMapOptions;
11880
+ occlusionEnabled?: boolean;
11881
+ /** Callback to intercept and modify requests for images. */
11882
+ transformImageRequest?: TransformImageRequest;
11396
11883
  }>;
11397
11884
  }
11398
11885
 
11399
- declare module '@mappedin/react-sdk/geojson/src/types/constants' {
11400
- import type { InsetPadding } from '@mappedin/react-sdk/geojson/src/types';
11401
- export const DEFAULT_INSET_PADDING: InsetPadding;
11402
- }
11403
-
11404
11886
  declare module '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/batched-material' {
11405
11887
  import { MeshLambertMaterial, type Color, type Texture, type MeshLambertMaterialParameters } from 'three';
11406
11888
  export class BatchedStandardMaterial extends MeshLambertMaterial {
@@ -11603,26 +12085,38 @@ declare module '@mappedin/react-sdk/geojson/src/systems/2d-projection/system' {
11603
12085
  }
11604
12086
 
11605
12087
  declare module '@mappedin/react-sdk/geojson/src/systems/2d-draw/system' {
11606
- import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
12088
+ import type { RendererState, TransformImageRequest } from '@mappedin/react-sdk/geojson/src/renderer';
11607
12089
  import LabelComponent from '@mappedin/react-sdk/geojson/src/components/label';
12090
+ import { PubSub } from '@packages/internal/common';
11608
12091
  export const INACTIVE_MARKER_SIZE_NO_ICON = 3.5;
11609
12092
  enum TEXTALIGN {
11610
12093
  LEFT = "left",
11611
12094
  CENTER = "center",
11612
12095
  RIGHT = "right"
11613
12096
  }
11614
- export class TwoDDrawSystem {
12097
+ export class TwoDDrawSystem extends PubSub<{
12098
+ 'img:loaded': undefined;
12099
+ }> {
11615
12100
  dirty: boolean;
11616
12101
  state: RendererState;
11617
12102
  colliderContext: CanvasRenderingContext2D;
11618
12103
  colliderCanvas: HTMLCanvasElement;
11619
- constructor(state: RendererState, colliderCanvas: HTMLCanvasElement);
12104
+ transformRequestFunc?: TransformImageRequest;
12105
+ constructor(state: RendererState, colliderCanvas: HTMLCanvasElement, transformImageRequest?: TransformImageRequest);
12106
+ transformRequest: (url: string) => Promise<{
12107
+ url: string;
12108
+ }>;
11620
12109
  pinCache: {
11621
12110
  [key in number]: [HTMLCanvasElement | OffscreenCanvas, HTMLCanvasElement | OffscreenCanvas];
11622
12111
  };
11623
- imagePromiseCache: {
12112
+ /** Stores the loaded images ready to be drawn. */
12113
+ imageCache: {
11624
12114
  [key in number]: HTMLImageElement | ImageBitmap;
11625
12115
  };
12116
+ /** Stores the promises for each image fetch. */
12117
+ imagePromiseCache: {
12118
+ [key in number]: Promise<HTMLImageElement | ImageBitmap>;
12119
+ };
11626
12120
  imageDimensionsCache: {
11627
12121
  [key in number]: {
11628
12122
  width: number;
@@ -11699,6 +12193,8 @@ declare module '@mappedin/react-sdk/geojson/src/systems/render/system' {
11699
12193
  import { PubSub } from '@packages/internal/common';
11700
12194
  export class RenderSystem extends PubSub<{
11701
12195
  'measure-canvas': undefined;
12196
+ 'pre-render': undefined;
12197
+ 'post-render': undefined;
11702
12198
  }> {
11703
12199
  constructor(renderer: Renderer, state: RendererState, mode: RendererCore['mode'], scene: Scene, cameraObject: PerspectiveCamera, viewCamera: Camera, systems: Systems);
11704
12200
  twoDdirty: boolean;
@@ -11968,7 +12464,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/outline-interpolation/sy
11968
12464
  }
11969
12465
 
11970
12466
  declare module '@mappedin/react-sdk/geojson/src/systems/image/system' {
11971
- import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
12467
+ import type { ImagePlacementOptions, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
11972
12468
  import { type Texture } from 'three';
11973
12469
  import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
11974
12470
  import { PubSub } from '@packages/internal/common';
@@ -11976,7 +12472,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/image/system' {
11976
12472
  export class ImageSystem extends PubSub<{
11977
12473
  'image-loaded': void;
11978
12474
  }> {
11979
- constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
12475
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition'], initialBearing?: number, naturalBearing?: number, imagePlacementOptions?: ImagePlacementOptions);
11980
12476
  imageLoadingCache: Map<string, Promise<Texture>>;
11981
12477
  update(cameraRotationRadians: number): void;
11982
12478
  }
@@ -12058,16 +12554,21 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system
12058
12554
  }
12059
12555
  }
12060
12556
 
12061
- declare module '@mappedin/react-sdk/geojson/src/systems/pre-render/system' {
12062
- import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
12063
- /**
12064
- * This system runs any tasks at the very start of the render loop.
12065
- * This is useful for ensuring that animations are synced with the render loop.
12066
- */
12067
- export class PreRenderSystem {
12068
- #private;
12069
- constructor(core: RendererCore);
12070
- update(): void;
12557
+ declare module '@mappedin/react-sdk/geojson/src/systems/2d-occlusion/system' {
12558
+ import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
12559
+ import { type Vector3 } from 'three';
12560
+ import type { Renderer } from '@mappedin/react-sdk/geojson/src/services/renderer';
12561
+ import type { Position as GeoJsonPosition } from 'geojson';
12562
+ export function fillArrayWithColor(array: Float32Array | Uint8Array, count: number, color: number): void;
12563
+ export class Occlusion2DSystem {
12564
+ constructor(state: RendererState, convertTo3DMapPosition: (position: GeoJsonPosition) => Vector3, renderer?: Renderer);
12565
+ reserveOccluderId(): number;
12566
+ enable(): void;
12567
+ disable(): void;
12568
+ resize: () => void;
12569
+ activeOccluders: Set<unknown>;
12570
+ update: () => void;
12571
+ destroy(): void;
12071
12572
  }
12072
12573
  }
12073
12574
 
@@ -12449,12 +12950,21 @@ declare module '@mappedin/react-sdk/geojson/src/components/styles/model-style' {
12449
12950
  * vertical offset of the model in meters off the floor
12450
12951
  */
12451
12952
  verticalOffset: number;
12953
+ /**
12954
+ * Color property designed for use with @mappedin/3d-assets.
12955
+ * Updates the accent color of 3d assets by applying the color to materials named
12956
+ * ['Default', 'Fabric', 'Mpdn_Logo', 'Fabric_Logo'].
12957
+ * For custom colors on non-Mappedin models, use the {@link ModelStyle.material | material} property.
12958
+ * If both the `material` and `color` properties are provided, `material` property updates will take higher precedence than `color` property updates.
12959
+ */
12960
+ color: string;
12452
12961
  };
12453
12962
  export class ModelStyleComponnet implements Partial<ModelStyle> {
12454
12963
  dirty: boolean;
12455
12964
  visible: boolean;
12456
12965
  opacity: number;
12457
12966
  verticalOffset: number;
12967
+ color?: string;
12458
12968
  material?: ModelStyle['material'];
12459
12969
  constructor(init?: Partial<ModelStyle>);
12460
12970
  }
@@ -12463,7 +12973,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/styles/model-style' {
12463
12973
 
12464
12974
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
12465
12975
  import type { Polygon, MultiPolygon, FloorProperties as MVFFloor, ParsedMVF, Feature } from '@mappedin/mvf';
12466
- import type { RendererCore } from '@mappedin/core-sdk';
12976
+ import type { RendererCore, BBox } from '@mappedin/core-sdk';
12467
12977
  import type { AggregatedStyleMap } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils';
12468
12978
  import type { TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
12469
12979
  class Layer {
@@ -12476,6 +12986,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
12476
12986
  hide(): void;
12477
12987
  }
12478
12988
  export class FloorObject implements MVFFloor {
12989
+ #private;
12479
12990
  id: string;
12480
12991
  name?: string;
12481
12992
  elevation: number;
@@ -12484,9 +12995,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
12484
12995
  metadata?: Partial<Record<string, unknown>> | undefined;
12485
12996
  shortName?: string | undefined;
12486
12997
  subtitle?: string | undefined;
12998
+ occluderId?: number;
12487
12999
  layers: Map<string, Layer>;
12488
13000
  footprint?: Feature<Polygon | MultiPolygon | null, MVFFloor>;
12489
13001
  floorStackId: string;
13002
+ get geoJSONBoundingBox(): BBox | undefined;
12490
13003
  constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, multiFloorView: Required<TShow3DMapOptions['multiFloorView']>, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
12491
13004
  load: () => this;
12492
13005
  get visible(): boolean;