@mappedin/react-sdk 6.0.1-beta.19 → 6.0.1-beta.20

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,6 +10,7 @@
10
10
  // ../react/@mappedin/mappedin-js
11
11
  // ../react/@packages/internal/common
12
12
  // ../react/@mappedin/core-sdk
13
+ // ../react/@packages/internal/outdoor-context-v4
13
14
  // ../react/@packages/internal/geojson-navigator
14
15
  // ../react/@mappedin/mvf/dist/locale
15
16
  // ../react/three
@@ -18,7 +19,6 @@
18
19
  // ../react/@tweenjs/tween.js
19
20
  // ../react/@turf/turf
20
21
  // ../react/@packages/internal/quad-tree
21
- // ../react/@packages/internal/outdoor-context-v4
22
22
  // ../react/minisearch
23
23
  // ../react/three/addons/loaders/GLTFLoader.js
24
24
  // ../react/@mapbox/point-geometry
@@ -65,6 +65,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
65
65
  import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
66
66
  import { enableTestMode } from '@mappedin/react-sdk/geojson/src';
67
67
  export type { PubSub } from '@packages/internal/common/pubsub';
68
+ import type { TMappedinMapLibreOverlayEvents } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
68
69
  import { MappedinMapLibreOverlay } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
69
70
  import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
70
71
  import { type Environment } from '@packages/internal/mvf-utils/mvf-utils';
@@ -376,14 +377,20 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
376
377
  */
377
378
  export const getMapDataEnterprise: (userOptions: TGetMapDataOptions) => Promise<MapData>;
378
379
  /**
379
- * Create a MapLibre overlay with a Map to render it within existing MapLibre projects.
380
+ * Mappedin JS makes use of MapLibre to render the outdoor portion of the map. Mappedin JS exposes this layer through {@link MapView.OutoorMap} and can be used to add additional layers as described in the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map).
381
+ *
382
+ * It is also possible to utilize the opposite architecture, by adding a MapView to a MapLibre Map.
383
+ * This is accomplished by using {@link MappedinMapLibreOverlay} class. It allows a developer to easily add a Mappedin indoor map to an existing MapLibre based app.
384
+ *
385
+ * Refer to the [Mappedin MapLibre Overlay](https://developer.mappedin.com/web-sdk/mappedin-maplibre-overlay) for more information and interactive examples.
386
+
380
387
  * @experimental
381
388
  */
382
389
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
383
390
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
384
391
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
385
392
  export { parseMVF, unzipMVF, enableTestMode };
386
- export type { MapView, MapData, MappedinMapLibreOverlay, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
393
+ export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
387
394
  export type * from 'geojson';
388
395
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/react-sdk/mappedin-js/src/types';
389
396
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
@@ -1118,7 +1125,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1118
1125
  import Image from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image';
1119
1126
  import FloorStack from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack';
1120
1127
  import type { MapDataRecords } from '@mappedin/react-sdk/mappedin-js/src/utils/data-creation';
1121
- import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language } from '@mappedin/mvf';
1128
+ import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language } from '@mappedin/mvf';
1122
1129
  import { AnalyticsInternal } from '@mappedin/react-sdk/mappedin-js/src/analytics';
1123
1130
  import EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
1124
1131
  import EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
@@ -1270,6 +1277,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1270
1277
  get nodes(): Node[];
1271
1278
  get locations(): EnterpriseLocation[];
1272
1279
  get categories(): EnterpriseCategory[];
1280
+ get mvfFloors(): MVFFloor[];
1281
+ get mvfFloorStacks(): MVFFloorStack[];
1273
1282
  /**
1274
1283
  * Retrieves an object by its type and ID.
1275
1284
  *
@@ -1299,12 +1308,18 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1299
1308
  getMVFFeatureById(type: 'space', id: string): SpaceCollection['features'][number] | undefined;
1300
1309
  getMVFFeatureById(type: 'node', id: string): NodeCollection['features'][number] | undefined;
1301
1310
  getMVFFeatureById(type: 'obstruction', id: string): ObstructionCollection['features'][number] | undefined;
1302
- getMVFFeatureById(type: 'map', id: string): MVFFloor | undefined;
1311
+ getMVFFeatureById(type: 'floor', id: string): MVFFloor | undefined;
1312
+ getMVFFeatureById(type: 'floor-stack', id: string): MVFFloorStack | undefined;
1303
1313
  getMVFFeatureById(type: 'connection', id: string): MVFConnection | undefined;
1304
1314
  getMVFFeatureById(type: 'entrance', id: string): EntranceCollection['features'][number] | undefined;
1305
1315
  getMVFFeatureById(type: 'annotation', id: string): AnnotationCollection['features'][number] | undefined;
1306
1316
  getMVFFeatureById(type: string, id: string): object | undefined;
1307
1317
  getMVFFeatureByNodeId(type: 'connection', id: string): MVFConnection | undefined;
1318
+ /**
1319
+ * Retrieves all MVF features of a given type. Safer than referencing the mvf's deprecated collections directly.
1320
+ */
1321
+ getMVFFeatureByType(type: 'floor-stack'): MVFFloorStack[];
1322
+ getMVFFeatureByType(type: 'floor'): MVFFloor[];
1308
1323
  getPropTranslation(type: 'enterprise-location' | 'enterprise-category', prop: string, id: string, fallback: MVFEnterpriseLocation[keyof MVFEnterpriseLocation] | MVFEnterpriseCategory[keyof MVFEnterpriseCategory]): unknown;
1309
1324
  /**
1310
1325
  * change the langauge of the data objects in mapdata
@@ -1341,13 +1356,20 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1341
1356
  import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
1342
1357
  import type { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1343
1358
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1344
- import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1359
+ import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1345
1360
  import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/react-sdk/mappedin-js/src/types';
1346
1361
  import type { Label, Marker, Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1347
1362
  import type { TEventPayload } from '@mappedin/react-sdk/mappedin-js/src/events';
1348
1363
  import type { Shapes } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes';
1349
1364
  import type { StackedMaps, TCollapseOptions, TExpandOptions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
1350
1365
  import type { InspectorOption } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/inspector/inspector';
1366
+ /**
1367
+ * The MapView class is the main class for rendering and interacting with the map.
1368
+ *
1369
+ * It provides a set of controls for manipulating the map's elements and state.
1370
+ *
1371
+ * For help getting started, refer to the [Getting Started Guide](https://developer.mappedin.com/web-sdk/getting-started).
1372
+ */
1351
1373
  export class MapView extends PubSub<TEvents> {
1352
1374
  #private;
1353
1375
  /**
@@ -1415,9 +1437,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1415
1437
  *
1416
1438
  * | target | state |
1417
1439
  * |-----------|----------------|
1440
+ * | {@link Door} | {@link TDoorsState} |
1418
1441
  * | {@link Label} | {@link TLabelState} |
1419
1442
  * | {@link MapObject} | {@link TGeometryState} |
1443
+ * | {@link Marker} | {@link TMarkerState} |
1420
1444
  * | {@link Space} | {@link TGeometryState} |
1445
+ * | {@link Shape} | {@link TShapeState} |
1446
+ * | {@link DOORS} | {@link TDoorsState} |
1447
+ * | {@link WALLS} | {@link TWallsState} |
1421
1448
  *
1422
1449
  * @param target The target to update.
1423
1450
  * @param state The new state to apply to the target.
@@ -1428,6 +1455,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1428
1455
  updateState<T extends Space | MapObject | Label | Marker | Shape | Door | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1429
1456
  updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
1430
1457
  update: () => void;
1458
+ /**
1459
+ * Retrieves the map data for the current map.
1460
+ * @returns The {@link MapData} for the current map.
1461
+ */
1431
1462
  getMapData(): {
1432
1463
  [x: string]: MapData;
1433
1464
  };
@@ -1443,12 +1474,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1443
1474
  /**
1444
1475
  * @experimental
1445
1476
  */
1446
- expand(opts?: TExpandOptions): Promise<void> | undefined;
1477
+ expand(opts?: TExpandOptions): Promise<void>;
1447
1478
  /**
1448
1479
  * @experimental
1449
1480
  * @hidden
1450
1481
  */
1451
- collapse(opts?: TCollapseOptions): Promise<void> | undefined;
1482
+ collapse(opts?: TCollapseOptions): Promise<void>;
1452
1483
  /**
1453
1484
  * Adds a map to the MapView.
1454
1485
  * @param mapData The map data to add.
@@ -1461,6 +1492,15 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1461
1492
  * @param floor The floor or floor ID to set.
1462
1493
  */
1463
1494
  setFloor(floor: Floor | string): void;
1495
+ /**
1496
+ * Sets the current floor stack ({@link FloorStack}) of the map. The default floor of the stack will be set as the current floor.
1497
+ * @param floorStack The floor stack or floor stack ID to set.
1498
+ */
1499
+ setFloorStack(floorStack: FloorStack | string): void;
1500
+ /**
1501
+ * The current floor stack ({@link FloorStack}) of the map.
1502
+ */
1503
+ get currentFloorStack(): FloorStack;
1464
1504
  /**
1465
1505
  * The current floor ({@link Floor}) of the map.
1466
1506
  */
@@ -1588,7 +1628,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1588
1628
  destroy(): void;
1589
1629
  /**
1590
1630
  * @experimental
1591
- * Enable debug interface
1631
+ * Enable debug interface. Learn more about the debug interface in the [Debug Mode Guide](https://developer.mappedin.com/web-sdk/getting-started#debug-mode).
1592
1632
  */
1593
1633
  enableDebug(opitons?: InspectorOption): Promise<void>;
1594
1634
  }
@@ -1635,10 +1675,11 @@ declare module '@mappedin/react-sdk/geojson/src' {
1635
1675
  declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1636
1676
  import { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
1637
1677
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1638
- import type { TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
1639
- import { MapLibreOverlay } from '@mappedin/react-sdk/geojson/src/maplibre-overlay';
1678
+ import { type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
1640
1679
  import type { Position } from '@mappedin/core-sdk';
1641
- export class MappedinMapLibreOverlay extends MapLibreOverlay<{
1680
+ import type { IControl } from '@packages/internal/outdoor-context-v4';
1681
+ import { PubSub } from '@packages/internal/common';
1682
+ export type TMappedinMapLibreOverlayEvents = {
1642
1683
  /**
1643
1684
  * Event emitted when the MappedinMap is loaded
1644
1685
  */
@@ -1652,12 +1693,52 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1652
1693
  */
1653
1694
  mapData: MapData;
1654
1695
  };
1655
- }> {
1696
+ };
1697
+ /**
1698
+ * Mappedin JS makes use of MapLibre to render the outdoor portion of the map. Mappedin JSexposes this layer through {@link MapView.OutoorMap} and can be used to add additional layers as described in the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map).
1699
+ *
1700
+ * It is also possible to utilize the opposite architecture, by adding a MapView to a MapLibre Map.
1701
+ * This is accomplished by using this MappedinMapLibreOverlay class. It allows a developer to easily add a Mappedin indoor map to an existing MapLibre based app.
1702
+ *
1703
+ * Use {@link createMapLibreOverlay} to instantiate this class.
1704
+ *
1705
+ * Refer to the [Mappedin MapLibre Overlay](https://developer.mappedin.com/web-sdk/mappedin-maplibre-overlay) for more information and interactive examples.
1706
+ */
1707
+ export class MappedinMapLibreOverlay extends PubSub<TMappedinMapLibreOverlayEvents> implements IControl {
1656
1708
  #private;
1657
1709
  static instance: MappedinMapLibreOverlay;
1710
+ /** @internal */
1658
1711
  constructor(origin: Position | undefined, mapData: MapData, options?: TShow3DMapOptions);
1712
+ /** @internal */
1659
1713
  onAdd(map: any): HTMLDivElement;
1714
+ /** @internal */
1660
1715
  onRemove(): void;
1716
+ /**
1717
+ * Subscribe to an event.
1718
+ * @example
1719
+ * ```ts
1720
+ * const handler = ({ mapView, mapData }) => {
1721
+ * console.log('MapView loaded');
1722
+ * };
1723
+ * overlay.on('loaded', handler);
1724
+ * ```
1725
+ */
1726
+ on: <EventName extends keyof TMappedinMapLibreOverlayEvents>(eventName: EventName, fn: (payload: TMappedinMapLibreOverlayEvents[EventName] extends {
1727
+ data: null;
1728
+ } ? TMappedinMapLibreOverlayEvents[EventName]["data"] : TMappedinMapLibreOverlayEvents[EventName]) => void) => void;
1729
+ /**
1730
+ * Unsubscribe from an event.
1731
+ * @example
1732
+ * ```ts
1733
+ * const handler = ({ mapView, mapData }) => {
1734
+ * console.log('MapView loaded');
1735
+ * };
1736
+ * overlay.off('loaded', handler);
1737
+ * ```
1738
+ */
1739
+ off: <EventName extends keyof TMappedinMapLibreOverlayEvents>(eventName: EventName, fn: (payload: TMappedinMapLibreOverlayEvents[EventName] extends {
1740
+ data: null;
1741
+ } ? TMappedinMapLibreOverlayEvents[EventName]["data"] : TMappedinMapLibreOverlayEvents[EventName]) => void) => void;
1661
1742
  }
1662
1743
  }
1663
1744
 
@@ -1666,7 +1747,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1666
1747
  import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1667
1748
  import type { Label, Marker, Model, Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1668
1749
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1669
- import { type InsetPaddingOption, Position } from '@mappedin/core-sdk';
1750
+ import type { InsetPaddingOption, Position } from '@mappedin/core-sdk';
1670
1751
  export type DeepRequired<T> = Required<{
1671
1752
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1672
1753
  }>;
@@ -1808,11 +1889,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1808
1889
  export type TDoorsState = {
1809
1890
  type: 'doors';
1810
1891
  /**
1811
- * Color of the walls.
1892
+ * Color of the doors.
1812
1893
  */
1813
1894
  color: string | 'initial';
1814
1895
  /**
1815
- * Color of the top of walls, if not set, defaults to the color.
1896
+ * Color of the top of doors, if not set, defaults to the color.
1816
1897
  */
1817
1898
  topColor?: string | 'initial';
1818
1899
  /**
@@ -1828,7 +1909,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1828
1909
  url?: string;
1829
1910
  };
1830
1911
  /**
1831
- * Visibility of the walls.
1912
+ * Visibility of the doors.
1832
1913
  */
1833
1914
  visible: boolean;
1834
1915
  /**
@@ -1948,7 +2029,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1948
2029
  /**
1949
2030
  * The type for updating the state of map elements (colors, texts, etc.).
1950
2031
  */
1951
- export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Door ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
2032
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS ? Partial<TDoorsState> : T extends Door ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Door ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
1952
2033
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
1953
2034
  export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
1954
2035
  /**
@@ -2031,7 +2112,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2031
2112
  /**
2032
2113
  * A map element that can be focused on by the camera.
2033
2114
  */
2034
- export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node
2115
+ export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node | EnterpriseLocation
2035
2116
  /**
2036
2117
  * @experimental
2037
2118
  */
@@ -2588,10 +2669,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2588
2669
  */
2589
2670
  timeout?: number;
2590
2671
  /**
2591
- * Whether to watch the browser's position.
2672
+ * Whether to watch the device's position.
2592
2673
  * @default true
2593
2674
  */
2594
- watchBrowserPosition?: boolean;
2675
+ watchDevicePosition?: boolean;
2595
2676
  /**
2596
2677
  * Whether to log debug messages.
2597
2678
  * @default false
@@ -2691,6 +2772,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-do
2691
2772
  };
2692
2773
  /**
2693
2774
  * @experimental
2775
+ *
2776
+ * Mappedin JS can use the location provided from an indoor positioning system to display a BlueDot on the map, indicating the user's position.
2777
+ *
2778
+ * This class is accessed using {@link MapView.BlueDot}.
2779
+ *
2780
+ * Further details and interactive examples can be found in the [BlueDot Guide](https://developer.mappedin.com/web-sdk/blue-dot).
2694
2781
  */
2695
2782
  export class BlueDot extends PubSub<TBlueDotEvents> {
2696
2783
  #private;
@@ -2751,11 +2838,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-do
2751
2838
  follow: (mode: TFollowMode, cameraOptions?: TFollowCameraOptions) => void;
2752
2839
  }
2753
2840
  export type TFollowMode =
2754
- /** Camera follows only the position of the Blue Dot. Bearing is not updated. */
2841
+ /** Camera position follows the Blue Dot's position. */
2755
2842
  'position-only'
2756
- /** Camera follows both position and heading of the Blue Dot. */
2843
+ /** Camera position follows the Blue Dot's position. Camera bearing matches the Blue Dot's heading. */
2757
2844
  | 'position-and-heading'
2758
- /** Camera follows position and automatically rotates to match the direction of the navigation path */
2845
+ /** Camera position follows the Blue Dot's position. Camera bearing is calculated based on the Navigation path. */
2759
2846
  | 'position-and-path-direction'
2760
2847
  /** Disables follow mode */
2761
2848
  | false;
@@ -2848,6 +2935,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/sta
2848
2935
  export type TCollapseOptions = TCameraAnimationOptions;
2849
2936
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
2850
2937
  /**
2938
+ * Stacked Maps enables multi floor visualization. It allows for multiple floors of a building to be shown together as a stack of floors in an accordion style view.
2939
+ *
2940
+ * This class is accessed using {@link MapView.StackedMaps}.
2941
+ *
2942
+ * Refer to the [Stacked Maps Guide](https://developer.mappedin.com/web-sdk/stacked-maps) for more information and interactive examples.
2943
+ *
2851
2944
  * @experimental
2852
2945
  */
2853
2946
  export class StackedMaps extends PubSub<TStackedMapsEvents> {
@@ -2886,7 +2979,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/sta
2886
2979
  */
2887
2980
  setFloorVisiblityMode(mode: 'all-floors' | 'only-current-floor'): void;
2888
2981
  /**
2889
- * Set whether to listen to camera elevation changes to automatically change the floor.
2982
+ * Set whether to listen to camera elevation changes to automatically change the floor. When enabled, the `mapView.on('floor-change')` event is fired
2890
2983
  */
2891
2984
  changeFloorOnElevationChanges(value: boolean): void;
2892
2985
  /**
@@ -3058,6 +3151,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
3058
3151
  destinationColor?: string;
3059
3152
  };
3060
3153
  };
3154
+ /**
3155
+ * When a user needs to get from point A to point B, drawing a path on the map helps them to navigate to their destination. It can help them to visualize the route they'll need to take, like a good treasure map.
3156
+
3157
+ * Navigation is a helper class to display wayfinding easily on the map. Functionality of Navigation could be replicated by drawing the paths using {@link Paths} and adding well designed tooltips at connection points.
3158
+ *
3159
+ * This class is accessed using {@link MapView.Navigation}.
3160
+ *
3161
+ * {@link Navigation.draw} allows for easily drawing multiple components that make up a wayfinding illustration. It shows a human figure to mark the start point, a path with animated directional arrows, pulses in the direction of travel and a pin to mark the destination. Each of these components can be customized to match an app's style.
3162
+ *
3163
+ * Refer to the [Drawing Navigation](https://developer.mappedin.com/web-sdk/wayfinding#drawing-navigation) in the Wayfinding Guide for more information and interactive examples.
3164
+ */
3061
3165
  export class Navigation {
3062
3166
  #private;
3063
3167
  /**
@@ -3195,8 +3299,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
3195
3299
  import type { MapDataInternal, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3196
3300
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3197
3301
  /**
3198
- * An EnterpriseCategory is a collection of similar EnterpriseLocations.
3302
+ * An EnterpriseCategory groups one or more EnterpriseLocation. These allow similar locations to be sorted in a logical fashion.
3303
+ * For example a mall may group locations into Food Court, Footwear and Women's Fashion. They can be accessed using the {@link MapData.getByType()} method as shown below.
3304
+ *
3305
+ * ```typescript
3306
+ * const categories = mapData.getByType('enterprise-category');
3307
+ * ```
3199
3308
  *
3309
+ * Refer to the [EnterpriseCategory Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-categories) for more information and interactive examples.
3200
3310
  */
3201
3311
  class EnterpriseCategory extends BaseMapData implements Omit<MVFEnterpriseCategory, 'children' | 'locations'> {
3202
3312
  #private;
@@ -3208,12 +3318,33 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
3208
3318
  * @internal
3209
3319
  */
3210
3320
  readonly __type = "enterprise-category";
3321
+ /**
3322
+ * The name of the category.
3323
+ */
3211
3324
  name: string;
3325
+ /**
3326
+ * The color of the category.
3327
+ */
3212
3328
  color?: string | undefined;
3329
+ /**
3330
+ * The external ID of the category.
3331
+ */
3213
3332
  externalId: string;
3333
+ /**
3334
+ * Extra properties of the category.
3335
+ */
3214
3336
  extra?: Record<string, unknown> | undefined;
3337
+ /**
3338
+ * A URL to the icon of the category.
3339
+ */
3215
3340
  icon?: string | undefined;
3341
+ /**
3342
+ * The icon from the default list of icons.
3343
+ */
3216
3344
  iconFromDefaultList?: string | null | undefined;
3345
+ /**
3346
+ * The sort order of the category.
3347
+ */
3217
3348
  sortOrder: number;
3218
3349
  /**
3219
3350
  * Checks if the provided instance is of type EnterpriseCategory.
@@ -3228,7 +3359,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
3228
3359
  constructor(data: MapDataInternal, options: {
3229
3360
  mvfData: MVFEnterpriseCategory;
3230
3361
  });
3362
+ /**
3363
+ * The child categories of the category.
3364
+ */
3231
3365
  get children(): EnterpriseCategory[];
3366
+ /**
3367
+ * The {@link EnterpriseLocation}s within this category.
3368
+ */
3232
3369
  get locations(): EnterpriseLocation[];
3233
3370
  /**
3234
3371
  * Serializes the EnterpriseCategory data to JSON.
@@ -3255,9 +3392,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
3255
3392
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3256
3393
  import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
3257
3394
  /**
3258
- * A class representing enterprise location data within the map.
3395
+ * An EnterpriseLocation contains metadata about a location, such as its name, description, logo, phone number, social medial links, hours of operation and more.
3396
+ * They can be accessed using the {@link MapData.getByType()} method as shown below.
3259
3397
  *
3260
- * An EnterpriseLocation is something like a store, or a washroom on a map.
3398
+ * ```typescript
3399
+ * const allLocations = mapData.getByType('enterprise-location');
3400
+ * ```
3401
+ *
3402
+ * Refer to the [EnterpriseLocation Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-locations) for more information and interactive examples.
3261
3403
  */
3262
3404
  class EnterpriseLocation extends BaseMapData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links'> {
3263
3405
  #private;
@@ -3269,36 +3411,139 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
3269
3411
  * @internal
3270
3412
  */
3271
3413
  readonly __type = "enterprise-location";
3414
+ /**
3415
+ * The description of the location.
3416
+ */
3272
3417
  description?: string | undefined;
3418
+ /**
3419
+ * The name of the location.
3420
+ */
3273
3421
  name: string;
3422
+ /**
3423
+ * The amenity of the location.
3424
+ */
3274
3425
  amenity?: string | undefined;
3426
+ /**
3427
+ * The external ID of the location.
3428
+ */
3275
3429
  externalId: string;
3430
+ /**
3431
+ * Extra properties of the location.
3432
+ */
3276
3433
  extra?: Record<string, unknown> | undefined;
3434
+ /**
3435
+ * The gallery of the location.
3436
+ */
3277
3437
  gallery?: {
3278
3438
  caption?: string | null;
3279
3439
  image: string;
3280
3440
  embeddedUrl?: string | null;
3281
3441
  }[] | undefined;
3442
+ /**
3443
+ * Specific instances of this location with different properties.
3444
+ * Typically, there will be at least one node or polygon defined,
3445
+ * plus one or more other properties that are different from the parent.
3446
+ * The remaining properties will be the same as the parent.
3447
+
3448
+ * For example, suppose there is a location like this:
3449
+ *
3450
+ * ```json
3451
+ * {
3452
+ * "id": "location-id-1",
3453
+ * "name": "Location 1",
3454
+ * "nodes": ["node-1", "node-2"],
3455
+ * "polygons": ["polygon-1", "polygon-2"],
3456
+ * "externalId": "externalId-1",
3457
+ * "description": "Description 1",
3458
+ * }
3459
+ * ```
3460
+ *
3461
+ * (Note that for clarity, we have put strings in for nodes and polygons, but in practice they would be objects.)
3462
+ *
3463
+ * Then suppose it had an `instances` array that contained an object that looked like this:
3464
+ *
3465
+ * ```json
3466
+ * {
3467
+ * "id": "instance-id-1",
3468
+ * "name": "Location 1 - A",
3469
+ * "nodes": ["node-1"],
3470
+ * "polygons": ["polygon-1"],
3471
+ * "externalId": "externalId-1-A",
3472
+ * "description": "Description 1",
3473
+ * }
3474
+ * ```
3475
+ * 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`.
3476
+ * The ID will always be different, but other properties (like the description) are the same as the parent.
3477
+ *
3478
+ * Example use cases:
3479
+ * - 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
3480
+ * 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.
3481
+ * - An aiport may have a location with several polygons and nodes, and an instance for each node (and corrisponding polygon, if any) with a different siblingGroup. The location in the sibling group may be the airport terminal, or airside vs landside.
3482
+ * 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.
3483
+ *
3484
+ * 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 proprty, or any other explicit reference to the parent location. These instances are
3485
+ * 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.
3486
+ */
3487
+ instances?: EnterpriseLocation[] | undefined;
3488
+ /**
3489
+ * A URL to the logo of the location.
3490
+ */
3282
3491
  logo?: string | undefined;
3492
+ /**
3493
+ * The operation hours of the location.
3494
+ */
3283
3495
  operationHours?: OperationHours[] | undefined;
3496
+ /**
3497
+ * The phone number of the location.
3498
+ */
3284
3499
  phone?: {
3285
3500
  number: string;
3286
3501
  extension?: string;
3287
3502
  } | undefined;
3503
+ /**
3504
+ * A URL to the picture of the location.
3505
+ */
3288
3506
  picture?: string | undefined;
3507
+ /**
3508
+ * The short name of the location.
3509
+ */
3289
3510
  shortName?: string | undefined;
3511
+ /**
3512
+ * Whether to show the floating label when an image is present.
3513
+ */
3290
3514
  showFloatingLabelWhenImagePresent?: boolean | undefined;
3515
+ /**
3516
+ * Whether to show the logo.
3517
+ */
3291
3518
  showLogo?: boolean | undefined;
3519
+ /**
3520
+ * The sibling groups of the location.
3521
+ */
3292
3522
  siblingGroups?: SiblingGroup[] | undefined;
3523
+ /**
3524
+ * The social media links of the location.
3525
+ */
3293
3526
  social?: {
3294
3527
  facebook?: string;
3295
3528
  instagram?: string;
3296
3529
  twitter?: string;
3297
3530
  website?: string;
3298
3531
  } | undefined;
3532
+ /**
3533
+ * The sort order of the location.
3534
+ */
3299
3535
  sortOrder: number;
3536
+ /**
3537
+ * The {@link LocationState}s of the location.
3538
+ */
3300
3539
  states?: LocationState[] | undefined;
3540
+ /**
3541
+ * The tags of the location.
3542
+ */
3301
3543
  tags?: string[] | undefined;
3544
+ /**
3545
+ * The type of the location.
3546
+ */
3302
3547
  type: string;
3303
3548
  /**
3304
3549
  * Checks if the provided instance is of type EnterpriseLocation.
@@ -3313,6 +3558,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
3313
3558
  constructor(data: MapDataInternal, options: {
3314
3559
  mvfData: MVFEnterpriseLocation;
3315
3560
  categoryIds: string[];
3561
+ locationInstances?: EnterpriseLocation[];
3316
3562
  });
3317
3563
  get categories(): EnterpriseCategory[];
3318
3564
  get coordinates(): Coordinate[];
@@ -3342,7 +3588,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
3342
3588
  import type { Hyperlink, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3343
3589
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3344
3590
  /**
3345
- * An EnterpriseVenue is a specific place (like a mall, office building, or stadium) with one or more Floors
3591
+ * The EnterpriseVenue class holds metadata bout the map, which includes the map name, supported languages, default language, top locations and more.
3592
+ * It can be accessed using the {@link MapData.getByType()} method as shown below.
3593
+ *
3594
+ * ```typescript
3595
+ * const venue = mapData.getByType('venue');
3596
+ * ```
3597
+ *
3598
+ * Refer to the [EnterpriseVenue Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-venue) for more information.
3346
3599
  */
3347
3600
  class EnterpriseVenue extends BaseMapData implements MVFEnterpriseVenue {
3348
3601
  #private;
@@ -3354,18 +3607,57 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
3354
3607
  * @internal
3355
3608
  */
3356
3609
  readonly __type = "enterprise-venue";
3610
+ /**
3611
+ * The country code of the venue.
3612
+ */
3357
3613
  countrycode?: string | undefined;
3614
+ /**
3615
+ * The external ID of the venue.
3616
+ */
3358
3617
  externalId: string;
3618
+ /**
3619
+ * The default language of the venue.
3620
+ */
3359
3621
  defaultLanguage: Language;
3622
+ /**
3623
+ * The default map of the venue.
3624
+ */
3360
3625
  defaultMap?: string | undefined;
3626
+ /**
3627
+ * Extra properties of the venue.
3628
+ */
3361
3629
  extra?: Record<string, unknown> | undefined;
3630
+ /**
3631
+ * A URL to the icon of the venue.
3632
+ */
3362
3633
  icon?: string | undefined;
3634
+ /**
3635
+ * The languages supported by the venue.
3636
+ */
3363
3637
  languages: Language[];
3638
+ /**
3639
+ * The links of the venue.
3640
+ */
3364
3641
  links: Hyperlink[];
3642
+ /**
3643
+ * A URL to the logo of the venue.
3644
+ */
3365
3645
  logo?: string | undefined;
3646
+ /**
3647
+ * A URL to a web page with [Mappedin Web](https://developer.mappedin.com/docs/enterprise-apps/mappedin-web-v2) for this venue.
3648
+ */
3366
3649
  mappedinWebUrl?: string | undefined;
3650
+ /**
3651
+ * The slug of the venue.
3652
+ */
3367
3653
  slug: string;
3654
+ /**
3655
+ * The top locations of the venue.
3656
+ */
3368
3657
  topLocations?: string[] | undefined;
3658
+ /**
3659
+ * The timezone ID of the venue.
3660
+ */
3369
3661
  tzid?: string | undefined;
3370
3662
  /**
3371
3663
  * Checks if the provided instance is of type EnterpriseVenue.
@@ -3617,7 +3909,30 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
3617
3909
  /**
3618
3910
  * A class representing door data within the map.
3619
3911
  *
3620
- * This class provides details and operations related to a door.
3912
+ * Doors are hidden by default. Doors can be made visible by setting their `visible` property to `true`.
3913
+ *
3914
+ * ```typescript
3915
+ * //Make interior doors visible and brown.
3916
+ * mapView.updateState(DOORS.Interior, {
3917
+ * visible: true,
3918
+ * color: '#5C4033',
3919
+ * opacity: 0.6,
3920
+ * });
3921
+
3922
+ * //Make exterior doors visible and black.
3923
+ * mapView.updateState(DOORS.Exterior, {
3924
+ * visible: true,
3925
+ * color: 'black',
3926
+ * opacity: 0.6,
3927
+ * });
3928
+ * ```
3929
+ * Doors can also be made visible on an individual basis by passing in a {@link Door} object to {@link MapView.updateState}.
3930
+ *
3931
+ * Refer to the [Door Guide](https://developer.mappedin.com/web-sdk/spaces#doors) for more information and interactive examples.
3932
+ *
3933
+ * Door appearance can be customized by changing the color or adding a texture to the top or sides of a door.
3934
+ * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
3935
+ *
3621
3936
  */
3622
3937
  class Door extends BaseMapData {
3623
3938
  #private;
@@ -3655,7 +3970,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
3655
3970
  * @returns {string} The external ID of the door.
3656
3971
  */
3657
3972
  get externalId(): string;
3973
+ /**
3974
+ * Gets the description of the door.
3975
+ *
3976
+ * @returns {string} The description of the door.
3977
+ */
3658
3978
  get description(): string;
3979
+ /**
3980
+ * Gets the images of the door.
3981
+ *
3982
+ * @returns {Image[]} The images of the door.
3983
+ */
3659
3984
  get images(): Image[];
3660
3985
  /**
3661
3986
  * Gets the {@link Floor} object associated with the door.
@@ -3718,9 +4043,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
3718
4043
  */
3719
4044
  export type TSpaceType = 'room' | 'hallway' | 'exterior' | 'void' | 'connection.stairs' | 'connection.elevator' | 'poi';
3720
4045
  /**
3721
- * A class representing space data within the map.
4046
+ * A Space represents an area enclosed by walls, such as a hall or room. Spaces can be Interactive and have Labels and Markers added to them.
4047
+ * Spaces can also be customized with a color, texture and hover color.
3722
4048
  *
3723
- * Spaces are used to represent different areas within a map, such as rooms, hallways, etc.
4049
+ * Refer to the [Spaces Guide](https://developer.mappedin.com/web-sdk/spaces) for more information and interactive examples.
3724
4050
  */
3725
4051
  class Space extends BaseMapData {
3726
4052
  #private;
@@ -3991,6 +4317,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
3991
4317
  get name(): string;
3992
4318
  get description(): string;
3993
4319
  get images(): Image[];
4320
+ /**
4321
+ * Whether the connection is accessible. For example elevators are accessible while stairs are not.
4322
+ *
4323
+ * @returns {boolean} Whether the connection is accessible.
4324
+ */
3994
4325
  get accessible(): boolean;
3995
4326
  /**
3996
4327
  * Gets the external ID of the connection.
@@ -4057,7 +4388,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4057
4388
  /**
4058
4389
  * A class representing generic map object data within the map.
4059
4390
  *
4060
- * It could represent various objects on the map, such as desks, walls, etc.
4391
+ * It could represent various objects on the map, such as desks, chairs, etc.
4392
+ *
4393
+ * MapObject appearance can be customized by changing the color or adding a texture to its top or sides.
4394
+ * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4061
4395
  */
4062
4396
  export class MapObject extends BaseMapData {
4063
4397
  #private;
@@ -4326,6 +4660,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
4326
4660
  *
4327
4661
  * Annotations are used to mark specific points or areas on the map with additional information.
4328
4662
  * It includes some details on a map that may be relevant to safety or accessibility (e.g. Fire Extinguishers).
4663
+ * Refer to the [Annotation Guide](https://developer.mappedin.com/web-sdk/annotations) for more information.
4329
4664
  */
4330
4665
  class Annotation extends BaseMapData {
4331
4666
  #private;
@@ -4732,6 +5067,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
4732
5067
  import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
4733
5068
  import type { LineStyle, PaintStyle } from '@mappedin/core-sdk';
4734
5069
  import type { Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5070
+ /**
5071
+ * The Shapes class draws 3 dimensional shapes on top of a map. The shapes are created using GeoJSON geometry, which could be a {@link Polygon}, {@link MultiPolygon} (array of polygons) or a {@link LineString}.
5072
+ *
5073
+ * This class is accessed using {@link MapView.Shapes}.
5074
+ *
5075
+ * Refer to the [Shapes Guide](https://developer.mappedin.com/web-sdk/shapes) for more information and interactive examples.
5076
+ */
4735
5077
  export class Shapes {
4736
5078
  #private;
4737
5079
  /**
@@ -7421,29 +7763,13 @@ declare module '@mappedin/react-sdk/geojson/src/systems/html-controls/system' {
7421
7763
  }
7422
7764
  }
7423
7765
 
7424
- declare module '@mappedin/react-sdk/geojson/src/maplibre-overlay' {
7425
- import type { IControl, Map as MapLibreMap, CustomLayerInterface } from '@packages/internal/outdoor-context-v4';
7426
- import type { Position } from '@mappedin/react-sdk/geojson/src/types';
7427
- import RendererCore from '@mappedin/react-sdk/geojson/src/renderer';
7428
- import { PubSub } from '@packages/internal/common';
7429
- export class MapLibreOverlay<T> extends PubSub<T> implements IControl {
7430
- el: HTMLDivElement;
7431
- core: RendererCore;
7432
- origin?: Position;
7433
- map?: MapLibreMap;
7434
- layer?: CustomLayerInterface;
7435
- constructor(origin: Position | undefined);
7436
- onAdd(map: MapLibreMap): HTMLDivElement;
7437
- onRemove(): void;
7438
- }
7439
- }
7440
-
7441
7766
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7442
7767
  import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
7443
7768
  import { type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
7444
7769
  import { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
7445
7770
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
7446
- import { Coordinate, MapObject, Space, Floor, type MapDataInternal, Door } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7771
+ import type { FloorStack, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7772
+ import { Coordinate, MapObject, Space, Floor, Door } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7447
7773
  import type { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
7448
7774
  import { Label, Marker, type Model, type Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
7449
7775
  import { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
@@ -7463,14 +7789,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7463
7789
  import Outdoor from '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor';
7464
7790
  export class GeoJsonApi {
7465
7791
  core: RendererCore;
7466
- outdoors: GeojsonApiMapObject;
7467
7792
  mapObjects: GeojsonApiMapObject[];
7468
7793
  id: string;
7469
7794
  mapDataExternal: {
7470
7795
  [key in string]: MapData;
7471
7796
  };
7472
7797
  mapData?: MapData;
7473
- currentMap?: GeojsonApiMapObject;
7798
+ currentMap: GeojsonApiMapObject;
7474
7799
  hiddenOutdoorGeometries: [Position, layer: string[]][];
7475
7800
  mapView: MapView;
7476
7801
  Camera: Camera;
@@ -7493,7 +7818,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7493
7818
  getMapData(): MapData | undefined;
7494
7819
  addMap(mapData: MapData, options?: TShow3DMapOptions): Promise<MapData>;
7495
7820
  setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
7821
+ setFloorStack(floorStack: FloorStack | string): void;
7496
7822
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
7823
+ get currentFloorStack(): FloorStack;
7497
7824
  get currentFloor(): Floor;
7498
7825
  getState<T extends Space | MapObject | Label | Marker | Shape | Model | Image | string>(target: T): TGetState<T> | undefined;
7499
7826
  setHoverColor(c: string): void;
@@ -7523,8 +7850,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
7523
7850
  import { StackedMaps } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
7524
7851
  import type { TFloorChangeReason } from '@mappedin/react-sdk/mappedin-js/src/events';
7525
7852
  import type { Path, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
7526
- import type { Space, Door, PointOfInterest, MapObject, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7853
+ import type { Space, Door, PointOfInterest, MapObject, Node, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7527
7854
  import { type GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
7855
+ import { FloorStackObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-object';
7528
7856
  export class GeojsonApiMapObject extends PubSub<{
7529
7857
  'floor-change': {
7530
7858
  reason?: TFloorChangeReason;
@@ -7543,18 +7871,21 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
7543
7871
  path: Path;
7544
7872
  };
7545
7873
  }> {
7546
- /** Floors sorted in order of elevation */
7547
- floors: FloorObject[];
7548
- /** Map of floors by elevation. Floor elevation does not always match index or is not always contiguous. */
7549
- floorsByElevation: Map<number, FloorObject>;
7874
+ floorStacksById: Map<string, FloorStackObject>;
7875
+ floorsById: Map<string, FloorObject>;
7550
7876
  currentFloorId: string;
7877
+ currentFloorStackId: string;
7551
7878
  id: string;
7552
7879
  renderer: RendererCore;
7553
7880
  api: GeoJsonApi;
7554
7881
  mvf: ParsedMVF;
7555
7882
  styleMap: AggregatedStyleMap;
7556
7883
  StackedMaps: StackedMaps;
7884
+ get currentFloorStack(): FloorStackObject;
7885
+ setFloorStack(floorStackId: string): void;
7557
7886
  get currentFloor(): FloorObject;
7887
+ /** @deprecated use `currentFloorStack.floorObjects` or `floorsById` instead */
7888
+ get floors(): FloorObject[];
7558
7889
  setFloor(floorId: string, reason?: TFloorChangeReason): void;
7559
7890
  Models: {
7560
7891
  add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
@@ -7605,7 +7936,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
7605
7936
  };
7606
7937
  remove: (entityIds: string[]) => void;
7607
7938
  };
7608
- constructor(id: string, mvf: any, styleMap: AggregatedStyleMap, options: TShow3DMapOptions | undefined, api: GeoJsonApi);
7939
+ constructor(id: string, mapDataInternal: MapDataInternal | undefined, options: TShow3DMapOptions | undefined, api: GeoJsonApi);
7609
7940
  }
7610
7941
  }
7611
7942
 
@@ -7614,14 +7945,26 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
7614
7945
  /**
7615
7946
  * Class representing a label on the {@link MapView}.
7616
7947
  *
7617
- * Labels are used to provide additional information on the map.
7948
+ * Labels contain text and an image that are anchored to a specific point on the map. They automatically rotate and show and hide based on priority and zoom level.
7949
+ * Use them to inform users about location names, points of interest and more!
7950
+ *
7951
+ * Effective use of labels allows an app to convey additional information to the user.
7952
+ * For example labels can be used to show room names, important points of interest, main entrances or any other piece of contextual information that is useful to the user.
7953
+ *
7954
+ * Refer to the [Labels Guide](https://developer.mappedin.com/web-sdk/labels) for more information and interactive examples.
7618
7955
  */
7619
7956
  export class Label {
7620
7957
  /**
7621
7958
  * The label's id
7622
7959
  */
7623
7960
  readonly id: string;
7961
+ /**
7962
+ * The label's text
7963
+ */
7624
7964
  readonly text: string;
7965
+ /**
7966
+ * The target object where the label is anchored.
7967
+ */
7625
7968
  readonly target: Space | Door | Coordinate | PointOfInterest | MapObject | Node;
7626
7969
  /**
7627
7970
  * @internal
@@ -7648,9 +7991,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
7648
7991
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/marker' {
7649
7992
  import type { Coordinate, Door, Node, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7650
7993
  /**
7651
- * Class representing a marker on the {@link MapView}.
7994
+ * Mappedin JS allows adding and removing Markers on a map using the {@link Markers} class. Markers are elements containing HTML that Mappedin JS anchors to a {@link Door}, {@link Space}, {@link Coordinate} or {@link Node}.
7995
+ * They are automatically rotated and repositioned when the camera moves.
7652
7996
  *
7653
- * Markers are used to indicate a specific location on the map.
7997
+ * Refer to the [Markers Guide](https://developer.mappedin.com/web-sdk/markers) for more information and interactive examples.
7654
7998
  */
7655
7999
  export class Marker {
7656
8000
  /**
@@ -7728,6 +8072,18 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/image' {
7728
8072
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/model' {
7729
8073
  /**
7730
8074
  * Class representing a 3D model on the {@link MapView}.
8075
+ *
8076
+ * Adding 3D models to a map can be a great way to represent landmarks to help users find key locations. They could also be used to show the location of assets or represent furniture to provide a rich indoor layout.
8077
+
8078
+ * Mappedin JS supports models in Graphics Library Transmission Format (GLTF) and GL Transmission Format Binary (GLB) format. Models with nested meshes are not supported and should not be used.
8079
+ *
8080
+ * 3D Models can be added to a {@link Coordinate}, {@link Door} or {@link Space}.
8081
+ * When adding the same model to multiple locations at the same time always use an array instead of calling the add method multiple times.
8082
+ * This allows the SDK to re-use the same instance of the model to reduce RAM usage and rendering time, resulting in better performance.
8083
+ *
8084
+ * Models are added using {@link Models.add}.
8085
+ *
8086
+ * Refer to the [3D Models Guide](https://developer.mappedin.com/web-sdk/3d-models) for more information and interactive examples.
7731
8087
  */
7732
8088
  export class Model {
7733
8089
  /**
@@ -7765,7 +8121,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/path' {
7765
8121
  /**
7766
8122
  * Class representing a path on the {@link MapView}.
7767
8123
  *
7768
- * Paths are used to indicate a route on the map.
8124
+ * Paths are used to indicate a route on the map and can be added and removed using {@link Paths.add} and {@link Paths.remove}.
7769
8125
  */
7770
8126
  export class Path {
7771
8127
  /**
@@ -7795,6 +8151,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/shape' {
7795
8151
  /**
7796
8152
  * Class representing GeoJSON shape on the {@link MapView}.
7797
8153
  *
8154
+ * Refer to the [Shapes Guide](https://developer.mappedin.com/web-sdk/shapes) for more information and interactive examples.
7798
8155
  */
7799
8156
  export class Shape {
7800
8157
  /**
@@ -7827,12 +8184,25 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7827
8184
  import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
7828
8185
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
7829
8186
  import { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8187
+ /**
8188
+ * The Camera class is used to control the camera's position, pitch, bearing, and zoom level. It can also be used to focus
8189
+ * on one or more locations on the map. The camera can be repositioned instantly or animated to a new position.
8190
+ *
8191
+ * This class is accessed using {@link MapView.Camera}
8192
+ *
8193
+ * Refer to the [Camera Guide](https://developer.mappedin.com/web-sdk/camera) for more information and interactive examples.
8194
+ */
7830
8195
  export class Camera {
7831
8196
  #private;
7832
8197
  /**
7833
8198
  * @internal
7834
8199
  */
7835
8200
  constructor(rendererCore: RendererCore);
8201
+ /**
8202
+ * 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}.
8203
+ *
8204
+ * @param padding The padding in pixels.
8205
+ */
7836
8206
  setScreenOffsets(padding: InsetPadding): void;
7837
8207
  get screenOffsets(): InsetPadding;
7838
8208
  /**
@@ -7840,7 +8210,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7840
8210
  */
7841
8211
  get panMode(): "default" | "elevation";
7842
8212
  /**
7843
- * Set the camera's pan mode. 'elevation' moves the camera up and down, while 'default' allows the camera to pan along the ground.
8213
+ * Set the camera's pan mode. 'elevation' moves the camera up and down, while 'default' allows the camera to pan in all directions.
7844
8214
  * @experimental
7845
8215
  * @param panMode The new pan mode.
7846
8216
  */
@@ -7852,7 +8222,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7852
8222
  * @param options Optional settings for focusing the camera.
7853
8223
  * @example
7854
8224
  * // Focus on a single space
7855
- * map.Camera.focusOn(space, { minZoomLevel: 5, duration: 1000 });
8225
+ * mapView.Camera.focusOn(space, { minZoomLevel: 5, duration: 1000 });
7856
8226
  */
7857
8227
  focusOn(target: TCameraFocusOnTarget, options?: TFocusOnOptions): Promise<void>;
7858
8228
  /**
@@ -7860,14 +8230,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7860
8230
  * @param target The target configuration for the camera.
7861
8231
  * @param options Optional settings for the camera animation.
7862
8232
  * @example
7863
- * map.Camera.animateTo({ center: coordinate, zoomLevel: 10 }, { duration: 500 });
8233
+ * mapView.Camera.animateTo({ center: coordinate, zoomLevel: 10 }, { duration: 500 });
7864
8234
  */
7865
8235
  animateTo(target: TCameraTarget, options?: TCameraAnimationOptions): Promise<void>;
7866
8236
  /**
7867
8237
  * Sets the camera to a specified target without animation.
7868
8238
  * @param target The target configuration for the camera.
7869
8239
  * @example
7870
- * map.Camera.set({ center: coordinate, zoomLevel: 10 });
8240
+ * mapView.Camera.set({ center: coordinate, zoomLevel: 10 });
7871
8241
  */
7872
8242
  set(target: TCameraTarget): void;
7873
8243
  /**
@@ -7926,7 +8296,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7926
8296
  * Update the minimum zoom level of the camera in mercator zoom levels.
7927
8297
  * @param zoomLevel The new minimum zoom level.
7928
8298
  * @see https://wiki.openstreetmap.org/wiki/Zoom_levels
7929
- * @default 22
7930
8299
  */
7931
8300
  setMinZoomLevel: (zoomLevel: number) => void;
7932
8301
  /**
@@ -7939,7 +8308,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
7939
8308
  * Update the maximum zoom level of the camera in mercator zoom levels.
7940
8309
  * @param zoomLevel The new maximum zoom level.
7941
8310
  * @see https://wiki.openstreetmap.org/wiki/Zoom_levels
7942
- * @default 12
8311
+ * @default 22
8312
+ * @max 24
8313
+ * @min 0
7943
8314
  */
7944
8315
  setMaxZoomLevel: (zoomLevel: number) => void;
7945
8316
  /**
@@ -7968,6 +8339,19 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
7968
8339
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
7969
8340
  import type { PointOfInterest, MapObject } from '@mappedin/react-sdk/mappedin-js/src';
7970
8341
  import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8342
+ /**
8343
+ * Class used to add and remove a {@link Label} on the {@link MapView}.
8344
+ *
8345
+ * Labels contain text and an image that are anchored to a specific point on the map. They automatically rotate and show and hide based on priority and zoom level.
8346
+ * Use them to inform users about location names, points of interest and more!
8347
+ *
8348
+ * Effective use of labels allows an app to convey additional information to the user.
8349
+ * For example labels can be used to show room names, important points of interest, main entrances or any other piece of contextual information that is useful to the user.
8350
+ *
8351
+ * This class is accessed using {@link MapView.Labels}.
8352
+ *
8353
+ * Refer to the [Labels Guide](https://developer.mappedin.com/web-sdk/labels) for more information and interactive examples.
8354
+ */
7971
8355
  export class Labels {
7972
8356
  #private;
7973
8357
  /**
@@ -7996,7 +8380,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
7996
8380
  * @returns {Label | undefined} The created label, or undefined if creation failed.
7997
8381
  * @example
7998
8382
  *
7999
- * map.Labels.add(space, 'Welcome', { appearance: { color: 'blue' } });
8383
+ * mapView.Labels.add(space, 'Welcome', { appearance: { color: 'blue' } });
8000
8384
  */
8001
8385
  add(target: Space | Door | Coordinate | PointOfInterest | MapObject | Node, text: string, options?: TAddLabelOptions | undefined): Label;
8002
8386
  /**
@@ -8006,7 +8390,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
8006
8390
  *
8007
8391
  * @example
8008
8392
  * // Add all the labels to the map
8009
- * map.Labels.all();
8393
+ * mapView.Labels.all();
8010
8394
  */
8011
8395
  all(): Label[];
8012
8396
  /**
@@ -8021,7 +8405,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
8021
8405
  * Removes all the labels ({@link Label}) from the map.
8022
8406
  *
8023
8407
  * @example
8024
- * map.Labels.removeAll();
8408
+ * mapView.Labels.removeAll();
8025
8409
  */
8026
8410
  removeAll(): Label[];
8027
8411
  }
@@ -8034,6 +8418,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8034
8418
  import { Marker } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8035
8419
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
8036
8420
  import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8421
+ /**
8422
+ * Mappedin JS allows adding and removing Markers on a map. Markers are elements containing HTML that Mappedin JS anchors to a {@link Door}, {@link Space}, {@link Coordinate} or {@link Node}.
8423
+ * They are automatically rotated and repositioned when the camera moves.
8424
+ *
8425
+ * This class is accessed using {@link MapView.Markers}.
8426
+ *
8427
+ * Refer to the [Markers Guide](https://developer.mappedin.com/web-sdk/markers) for more information and interactive examples.
8428
+ */
8037
8429
  export class Markers {
8038
8430
  #private;
8039
8431
  /**
@@ -8061,8 +8453,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8061
8453
  * @param options Optional additional options for the {@link Marker}.
8062
8454
  * @returns {Marker | undefined} The created {@link Marker}, or undefined if creation failed.
8063
8455
  * @example
8064
- * // Add an interactive {@link Marker} to the map with custom HTML content.
8065
- * map.Markers.add(coordinate, '<div>Marker Content</div>', { interactive: true });
8456
+ * // Add an interactive Marker to the map with custom HTML content.
8457
+ * mapView.Markers.add(coordinate, '<div>Marker Content</div>', { interactive: true });
8066
8458
  */
8067
8459
  add(target: Space | Door | Coordinate | Node, html: string, options?: TAddMarkerOptions): Marker;
8068
8460
  /**
@@ -8077,7 +8469,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8077
8469
  * Remove all the markers from the map.
8078
8470
  *
8079
8471
  * @example
8080
- * map.Markers.removeAll();
8472
+ * mapView.Markers.removeAll();
8081
8473
  */
8082
8474
  removeAll(): Marker[];
8083
8475
  /**
@@ -8085,7 +8477,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8085
8477
  * @param marker The {@link Marker} which should be removed.
8086
8478
  * @param target The new target object ({@link Space}, {@link Door}, or {@link Coordinate}) for the marker.
8087
8479
  * @example
8088
- * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
8480
+ * const marker = mapView.Markers.add(coordinate, '<div>Marker Content</div>');
8089
8481
  * mapView.Markers.setPosition(marker, newCoordinate);
8090
8482
  */
8091
8483
  setPosition(marker: Marker, target: Space | Door | Coordinate | Node): void;
@@ -8096,7 +8488,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8096
8488
  * @param options Optional additional options for the animation.
8097
8489
  * @returns {Promise<void>} A promise that resolves when the animation is complete.
8098
8490
  * @example
8099
- * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
8491
+ * const marker = mapView.Markers.add(coordinate, '<div>Marker Content</div>');
8100
8492
  * mapView.Markers.animateTo(marker, newCoordinate, { duration: 1000 });
8101
8493
  */
8102
8494
  animateTo(marker: Marker, target: Space | Door | Coordinate | Node, options?: TAnimationOptions): Promise<void>;
@@ -8109,6 +8501,19 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8109
8501
  import type { TAddModelOptions, TAddModel } from '@mappedin/react-sdk/mappedin-js/src/types';
8110
8502
  import { Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8111
8503
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
8504
+ /**
8505
+ * Adding 3D models to a map can be a great way to represent landmarks to help users find key locations. They could also be used to show the location of assets or represent furniture to provide a rich indoor layout.
8506
+
8507
+ * Mappedin JS supports models in Graphics Library Transmission Format (GLTF) and GL Transmission Format Binary (GLB) format. Models with nested meshes are not supported and should not be used.
8508
+ *
8509
+ * 3D Models can be added to a {@link Coordinate}, {@link Door} or {@link Space}.
8510
+ * When adding the same model to multiple locations at the same time always use an array instead of calling the add method multiple times.
8511
+ * This allows the SDK to re-use the same instance of the model to reduce RAM usage and rendering time, resulting in better performance.
8512
+ *
8513
+ * This class is accessed using {@link MapView.Models}.
8514
+ *
8515
+ * Refer to the [3D Models Guide](https://developer.mappedin.com/web-sdk/3d-models) for more information and interactive examples.
8516
+ */
8112
8517
  export class Models {
8113
8518
  #private;
8114
8519
  /**
@@ -8137,7 +8542,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8137
8542
  * @returns {Model | undefined} The created {@link Model}, or undefined if creation failed.
8138
8543
  * @example
8139
8544
  * // Add a {@link Model} to the map.
8140
- * map.Models.add(coordinate);
8545
+ * mapView.Models.add(coordinate);
8141
8546
  */
8142
8547
  add(models: TAddModel | TAddModel[], options: TAddModelOptions): Model[];
8143
8548
  /**
@@ -8152,7 +8557,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8152
8557
  * Remove all the models from the map.
8153
8558
  *
8154
8559
  * @example
8155
- * map.MOdels.removeAll();
8560
+ * mapView.Models.removeAll();
8156
8561
  */
8157
8562
  removeAll(): Model[];
8158
8563
  }
@@ -8165,6 +8570,19 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/paths' {
8165
8570
  import type { TAddPathOptions } from '@mappedin/react-sdk/mappedin-js/src';
8166
8571
  import { Path } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8167
8572
  import type { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8573
+ /**
8574
+ * While {@link Navigation} provides a complete start and end navigation illustration, it may be desired to draw just the path. This can be done using Paths.
8575
+ *
8576
+ * Paths is accessed using {@link MapView.Paths}.
8577
+ *
8578
+ * Paths can be drawn from one coordinate to another using {@link Paths.add}. If using just two coordinates, the path will be drawn straight between the two points.
8579
+ * This may work for some scenarios, but in most cases an app will need to show the user their walking path, going through doors and avoiding walls and other objects.
8580
+ * Such a path of coordinates can be created by calling the {@link MapData.getDirections()} method, passing in a start and end {@link TNavigationTarget}. Note that a Space requires an entrance to be used as a target.
8581
+ *
8582
+ * The width of the path is set using the {@link TAddPathOptions.nearRadius} and {@link TAddPathOptions.farRadius} parameters. These values are in meters. `nearRadius` is the path width used at the lowest zoom level closest to the ground and `farRadius` is used at the highest zoom level. Additional path styles are outlined later in this guide in the Path Styles section.
8583
+ *
8584
+ * Refer to the [Drawing a Path](https://developer.mappedin.com/web-sdk/wayfinding#drawing-a-path) in the Wayfinding Guide for more information and interactive examples.
8585
+ */
8168
8586
  export class Paths {
8169
8587
  #private;
8170
8588
  /**
@@ -8190,21 +8608,21 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/paths' {
8190
8608
  * @param options Optional additional option
8191
8609
  * @example
8192
8610
  * // Add a red path to the map
8193
- * map.Paths.add(coordinate, { color: '#ff0000' });
8611
+ * mapView.Paths.add(coordinate, { color: '#ff0000' });
8194
8612
  */
8195
8613
  add(coordinate: Coordinate[], options?: TAddPathOptions): Path;
8196
8614
  /**
8197
8615
  * Removes a specific path ({@link Path}) from the map.
8198
8616
  * @param path The path to be removed.
8199
8617
  * @example
8200
- * map.Paths.remove(path);
8618
+ * mapView.Paths.remove(path);
8201
8619
  */
8202
8620
  remove(path: Path): void;
8203
8621
  /**
8204
8622
  * Removes all paths ({@link Path}) from the map.
8205
8623
  *
8206
8624
  * @example
8207
- * map.Paths.removeAll();
8625
+ * mapView.Paths.removeAll();
8208
8626
  */
8209
8627
  removeAll(): Path[];
8210
8628
  }
@@ -8356,6 +8774,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation/index' {
8356
8774
  destinationColor?: string;
8357
8775
  };
8358
8776
  };
8777
+ /**
8778
+ * When a user needs to get from point A to point B, drawing a path on the map helps them to navigate to their destination. It can help them to visualize the route they'll need to take, like a good treasure map.
8779
+
8780
+ * Navigation is a helper class to display wayfinding easily on the map. Functionality of Navigation could be replicated by drawing the paths using {@link Paths} and adding well designed tooltips at connection points.
8781
+ *
8782
+ * This class is accessed using {@link MapView.Navigation}.
8783
+ *
8784
+ * {@link Navigation.draw} allows for easily drawing multiple components that make up a wayfinding illustration. It shows a human figure to mark the start point, a path with animated directional arrows, pulses in the direction of travel and a pin to mark the destination. Each of these components can be customized to match an app's style.
8785
+ *
8786
+ * Refer to the [Drawing Navigation](https://developer.mappedin.com/web-sdk/wayfinding#drawing-navigation) in the Wayfinding Guide for more information and interactive examples.
8787
+ */
8359
8788
  export class Navigation {
8360
8789
  #private;
8361
8790
  /**
@@ -8481,12 +8910,29 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/style' {
8481
8910
 
8482
8911
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
8483
8912
  import { type RendererCore, type Position } from '@mappedin/core-sdk';
8913
+ /**
8914
+ * The outdoor map shown around the Mappedin indoor map can be manipulated to show or hide additional information. It can be used to add GeoJSON based geometry, images, deck.gl layers and more.
8915
+ *
8916
+ * The outdoor map is accessed using {@link MapView.Outdoor.map}, which returns a maplibregl.Map object.
8917
+ * [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) is a TypeScript library that uses WebGL to render interactive maps from vector tiles in a browser. The Mappedin SDK makes use of it to display the outdoor map.
8918
+ *
8919
+ * By providing access to the MapLibre map used to draw the outdoor map, the Mappedin SDK enables developers to draw on and manipulate the outdoor map.
8920
+ * Developers can use most capabilities of MapLibre GL JS with key exceptions being Interactivity and Camera, which are not available.
8921
+ *
8922
+ * User touch and click events are handled by Mappedin JS and are not propagated to the outdoor map layer. Camera movement is also handled by Mappedin JS and cannot be manipulated using MapLibre controls.
8923
+ *
8924
+ * Refer to the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map) for more information and interactive examples.
8925
+ */
8484
8926
  export default class Outdoor {
8485
8927
  #private;
8486
8928
  /**
8487
8929
  * @internal
8488
8930
  */
8489
8931
  constructor(core: RendererCore, hiddenOutdoorGeometry?: [Position, string[]][]);
8932
+ /**
8933
+ * Set the style of the outdoor map. Use one of [Mappedin's predefined styles](https://developer.mappedin.com/web-sdk/outdoor-map#styles) or link to a custom style.
8934
+ * @param style {any}
8935
+ */
8490
8936
  setStyle(style: any): void;
8491
8937
  /**
8492
8938
  * Returns a Maplibre map for advanced usage.
@@ -8494,8 +8940,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
8494
8940
  * @returns {object} Maplibre map instance
8495
8941
  *
8496
8942
  * Limitations:
8497
- * - Maplibre interaction events are not supported; use SDK interaction events.
8498
- * - Maplibre markers and labels may overlap as they are not integrated with the SDK collision engine.
8943
+ * - Maplibre interaction events are not supported, use Mappedin JS interaction events.
8944
+ * - Maplibre markers and labels may overlap as they are not integrated with the Mappedin JS collision engine.
8499
8945
  */
8500
8946
  get map(): import("@packages/internal/outdoor-context-v4").Map | undefined;
8501
8947
  /**
@@ -8507,16 +8953,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
8507
8953
  */
8508
8954
  get visible(): boolean;
8509
8955
  /**
8510
- * Show the outdoor view.
8956
+ * Show the outdoor map.
8511
8957
  */
8512
8958
  show(): void;
8513
8959
  /**
8514
- * Hide the outdoor view.
8960
+ * Hide the outdoor map.
8515
8961
  * @param excludedStyleLayerIds {string[]}
8516
8962
  */
8517
8963
  hide(excludedStyleLayerIds?: string[]): void;
8518
8964
  /**
8519
- * Set outdoor view opacity
8965
+ * Set outdoor view opacity.
8520
8966
  * @param targetOpacity {number | 'initial'}
8521
8967
  * @param excludedStyleLayerIds {string[]}
8522
8968
  */
@@ -8529,6 +8975,25 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
8529
8975
  import { Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8530
8976
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
8531
8977
  import type { Space, Door, Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8978
+ /**
8979
+ * 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.
8980
+ * 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.
8981
+ *
8982
+ * This class is accessed using {@link MapView.Images}.
8983
+ *
8984
+ * JPEG and PNG images are supported. It's important to consider the size of all unique image files displayed on a map at one time.
8985
+ * Using many unique images may cause instability on mobile devices with limited GPU memory. The Mappedin SDK will cache and reuse images that have the same URL, resulting in reduced memory usage.
8986
+ *
8987
+ * The following calculations illustrates how much memory is used for a given image:
8988
+ *
8989
+ * Formula: `width * height * 4 bytes/pixel = memory used`
8990
+ *
8991
+ * 512 x 512 Pixel Image: `512px * 512px * 4 bytes/pixel = 1MB`
8992
+ *
8993
+ * 4096 x 4096 Pixel Image: `4096px * 4096px * 4 bytes/pixel = 64MB`
8994
+ *
8995
+ * Refer to the [Images Guide](https://developer.mappedin.com/web-sdk/images-textures) for more information and interactive examples.
8996
+ */
8532
8997
  export class Images {
8533
8998
  #private;
8534
8999
  /**
@@ -8557,7 +9022,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
8557
9022
  * @returns {Image | undefined} The created {@link Image}, or undefined if creation failed.
8558
9023
  * @example
8559
9024
  * // Add an interactive {@link Image} to the map with custom HTML content.
8560
- * map.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
9025
+ * mapView.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
8561
9026
  */
8562
9027
  add(target: Space | Door | Coordinate, url: string, options: TAddImageOptions): Image;
8563
9028
  /**
@@ -8572,7 +9037,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
8572
9037
  * Remove all the images from the map.
8573
9038
  *
8574
9039
  * @example
8575
- * map.Images.removeAll();
9040
+ * mapView.Images.removeAll();
8576
9041
  */
8577
9042
  removeAll(): Image[];
8578
9043
  }
@@ -8873,6 +9338,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/search/external' {
8873
9338
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
8874
9339
  import type { InternalSearch, SearchOptions, SuggestOptions } from '@mappedin/react-sdk/mappedin-js/src/search/internal';
8875
9340
  import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9341
+ /**
9342
+ * Search allows users to search for locations, categories, and other points of interest within the venue.
9343
+ *
9344
+ * Refer to the [Search Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-search) for more information and interactive examples.
9345
+ */
8876
9346
  export class Search {
8877
9347
  #private;
8878
9348
  /**
@@ -8887,7 +9357,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/search/external' {
8887
9357
  enabled?: boolean;
8888
9358
  });
8889
9359
  /**
8890
- * Searches for places, locations, and categories.
9360
+ * Use query to search for locations based on a string input:
9361
+ *
9362
+ * - {@link EnterpriseLocation}: Specific places such as stores, restaurants, or washrooms.
9363
+ * - {@link EnterpriseCategory}: Groups of locations, such as "Food Court" or "Electronics."
9364
+ * - {@link Places}: Any main objects that can be searched for such as Space, Door, Point of Interest
9365
+ *
9366
+ * Search query returns a list of matching {@ link SearchResults} based on the input string.
9367
+ *
9368
+ * {@link SearchResults} include information about the type of match, the score (relevance), and detailed metadata about the matching items.
9369
+ *
8891
9370
  * @param term - The search term.
8892
9371
  * @param options - The search options.
8893
9372
  * @returns The search results.
@@ -8899,7 +9378,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/search/external' {
8899
9378
  */
8900
9379
  query(term: string, options?: SearchOptions): ReturnType<typeof InternalSearch.prototype.search>;
8901
9380
  /**
8902
- * Suggests the names of places, locations, and categories.
9381
+ * Suggests the names of places, locations, and categories based on partial input. This is useful for creating an autocomplete feature for a search bar.
8903
9382
  * @param term - The search term.
8904
9383
  * @param options - The suggest options.
8905
9384
  * @returns The search suggestions.
@@ -9003,7 +9482,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/analytics/customer' {
9003
9482
  /**
9004
9483
  * Captures an analytic event with a custom target and query payload.
9005
9484
  *
9006
- * @param target - The event name or target can be .
9485
+ * @param target - The event name or target can be one of: `$select-location`, `$select-category`, `$query-suggest`, `$query-search`
9007
9486
  * @param query - The payload associated with the event.
9008
9487
  * @returns A promise that resolves to the server response or void.
9009
9488
  */
@@ -10334,17 +10813,22 @@ declare module '@mappedin/react-sdk/geojson/src/systems/exporter/exporter' {
10334
10813
  }
10335
10814
 
10336
10815
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
10337
- import type { ParsedMVF } from '@mappedin/mvf';
10816
+ import type { FloorProperties as MVFFloor, ParsedMVF } from '@mappedin/mvf';
10338
10817
  import type { RendererCore } from '@mappedin/core-sdk';
10339
10818
  import type { AggregatedStyleMap } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils';
10340
10819
  import type { TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
10341
- export class FloorObject {
10820
+ export class FloorObject implements MVFFloor {
10342
10821
  id: string;
10343
- name: string;
10822
+ name?: string;
10344
10823
  elevation: number;
10345
10824
  containerId: string;
10825
+ externalId: string;
10826
+ metadata?: Partial<Record<string, unknown>> | undefined;
10827
+ shortName?: string | undefined;
10828
+ subtitle?: string | undefined;
10346
10829
  layers: Map<string, string>;
10347
- constructor(parentId: string, floor: ParsedMVF['map.geojson'][0], renderer: RendererCore, options: TShow3DMapOptions, mvf: ParsedMVF, styleMap?: AggregatedStyleMap);
10830
+ floorStackId: string;
10831
+ constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
10348
10832
  load: () => this;
10349
10833
  }
10350
10834
  }
@@ -10390,6 +10874,28 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils' {
10390
10874
  export function tweenToPromise(tween: Tween): Promise<void>;
10391
10875
  }
10392
10876
 
10877
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-object' {
10878
+ import type { RendererCore } from '@mappedin/core-sdk';
10879
+ import type { FloorId, FloorStack as MVFFloorStack } from '@mappedin/mvf';
10880
+ import type { FloorObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object';
10881
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors'> {
10882
+ id: MVFFloorStack['id'];
10883
+ externalId: MVFFloorStack['externalId'];
10884
+ name: MVFFloorStack['name'];
10885
+ type: MVFFloorStack['type'];
10886
+ floorIds: FloorId[];
10887
+ /** Sorted floor objects by elevation */
10888
+ floorObjects: FloorObject[];
10889
+ floorObjectsByElevation: Map<number, FloorObject>;
10890
+ metadata?: MVFFloorStack['metadata'];
10891
+ footprint?: MVFFloorStack['footprint'];
10892
+ containerId: string;
10893
+ constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore);
10894
+ get defaultFloor(): FloorObject;
10895
+ addFloor(floor: FloorObject): void;
10896
+ }
10897
+ }
10898
+
10393
10899
  declare module '@mappedin/react-sdk/geojson/src/components/style' {
10394
10900
  import type { LineStyle } from '@mappedin/react-sdk/geojson/src/renderer';
10395
10901
  export const DEFAULT_COLOR = "#ffffff";
@@ -11197,7 +11703,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/camera/constants' {
11197
11703
  export const ZRANGE = 100;
11198
11704
  export const WHEEL_ZOOM_MULTIPLIER = 10000;
11199
11705
  export const MIN_MERCATOR_ZOOM_LEVEL = 0;
11200
- export const MAX_MERCATOR_ZOOM_LEVEL = 22;
11706
+ export const MAX_MERCATOR_ZOOM_LEVEL = 24;
11201
11707
  export const BLOCK_MERCATOR_ZOOM_LEVEL = 17;
11202
11708
  export const ROOM_MERCATOR_ZOOM_LEVEL = 20;
11203
11709
  export const EVENTS: readonly ["change", "pan-start", "pan-end", "rotate-start", "rotate-end", "zoom-start", "zoom-end", "multi-start", "multi-end", "multi-cancel", "pedestal-start", "pedestal-change", "pedestal-end", "user-pan-start", "user-pedestal-start", "user-rotate-start", "user-dolly-start", "user-zoom-start", "user-tilt-start", "user-pan-end", "user-pedestal-end", "user-rotate-end", "user-dolly-end", "user-zoom-end", "user-tilt-end", "position-updated", "zoom-updated", "tilt-updated", "rotation-updated"];