@mappedin/react-sdk 6.0.1-beta.27 → 6.0.1-beta.29

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.
@@ -187,6 +187,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
187
187
  * @default 'bottom-right'
188
188
  */
189
189
  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
190
+ /**
191
+ * Whether to show a feedback link next to the attributions.
192
+ * @default true
193
+ */
194
+ feedback?: boolean;
190
195
  };
191
196
  /**
192
197
  * First floor to be rendered.
@@ -241,6 +246,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
241
246
  floorHeight?: number;
242
247
  updateCameraElevationOnFloorChange?: boolean;
243
248
  };
249
+ /**
250
+ * @experimental
251
+ * @internal
252
+ * @default false
253
+ */
254
+ keepOutdoorGeometryVisible?: boolean;
244
255
  };
245
256
  /**
246
257
  * @internal
@@ -322,14 +333,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
322
333
  export { parseMVF, unzipMVF, enableTestMode, preloadFont };
323
334
  export type { MapView, MapData, MapViewState, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, };
324
335
  export type * from 'geojson';
325
- 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';
336
+ export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, } from '@mappedin/react-sdk/mappedin-js/src/types';
326
337
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
327
338
  export type { Label, Marker, Path, Shape, CameraTransform, Model, Image, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
328
339
  export type { Debug } from '@mappedin/react-sdk/mappedin-js/src/debug';
329
340
  export type { Navigation, TNavigationOptions } from '@mappedin/react-sdk/mappedin-js/src/navigation';
330
341
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
331
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
332
- export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
342
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, Area, type Places, } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
343
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, DynamicFocus, } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
333
344
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/react-sdk/mappedin-js/src/search';
334
345
  export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/react-sdk/mappedin-js/src/query';
335
346
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/react-sdk/mappedin-js/src/analytics';
@@ -648,12 +659,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
648
659
  import { Analytics } from '@mappedin/react-sdk/mappedin-js/src/analytics';
649
660
  import { PubSub } from '@packages/internal/common';
650
661
  import type { TSearchOptions } from '@packages/internal/mvf-utils';
651
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node, Facade, Area } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
652
- import type EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
653
- import type EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
654
- import type EnterpriseVenue from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue';
662
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node, Facade, Area, EnterpriseCategory, EnterpriseLocation, EnterpriseVenue } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
655
663
  import { Search } from '@mappedin/react-sdk/mappedin-js/src/search';
656
- import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
664
+ import type { TNavigationTarget, TGetDirectionsOptions, TMapDataObjectTypes } from '@mappedin/react-sdk/mappedin-js/src/types';
657
665
  import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
658
666
  import type { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
659
667
  import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
@@ -842,8 +850,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
842
850
  * @example
843
851
  * const space = mapData.getById('space', 'space-id');
844
852
  */
845
- getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'facade' ? Facade | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'area' ? Area | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
846
- getById(type: string, id: string): object | undefined;
853
+ getById<T extends keyof TMapDataObjectTypes>(type: T, id: string): TMapDataObjectTypes[T] | undefined;
854
+ /**
855
+ * Retrieves an array of map features by their type and shared external ID.
856
+ *
857
+ * @param type The type of the element to retrieve (e.g., 'space', 'object').
858
+ * @param externalId The external ID of the element.
859
+ * @returns An array of features with the given type and external ID if they exist.
860
+ * @example
861
+ * const spaces = mapData.getByExternalId('space', 'space-external-id');
862
+ */
863
+ getByExternalId<T extends keyof Omit<TMapDataObjectTypes, 'annotation' | 'facade'>>(type: T, externalId: string): TMapDataObjectTypes[T][];
847
864
  /**
848
865
  * Get the GeoJSON for a map data object on the map.
849
866
  * @param mapDataObject
@@ -1082,7 +1099,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1082
1099
  import Image from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image';
1083
1100
  import FloorStack from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack';
1084
1101
  import Facade from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade';
1085
- import type { MapDataRecords } from '@mappedin/react-sdk/mappedin-js/src/utils/data-creation';
1102
+ import type { MapDataRecords, EnterpriseMapDataRecords } from '@mappedin/react-sdk/mappedin-js/src/utils/data-creation';
1086
1103
  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';
1087
1104
  import { AnalyticsInternal } from '@mappedin/react-sdk/mappedin-js/src/analytics';
1088
1105
  import EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
@@ -1092,7 +1109,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1092
1109
  import type { LanguagePack, Places, TMapDataInternalOptions } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
1093
1110
  import { type LocalePackUrls } from '@packages/internal/mvf-utils';
1094
1111
  import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
1095
- import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
1112
+ import type { TMapDataObjectTypes, TGetDirectionsOptions, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
1096
1113
  import { type Directions, DirectionsInternal } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
1097
1114
  import { type THydrateMapDataBundle } from '@mappedin/react-sdk/mappedin-js/src';
1098
1115
  import { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
@@ -1146,11 +1163,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1146
1163
  pointsOfInterestById: MapDataRecords['poisById'];
1147
1164
  annotationsById: MapDataRecords['annotationsById'];
1148
1165
  areasById: MapDataRecords['areasById'];
1149
- locationsById: MapDataRecords['locationsById'];
1150
- categoriesById: MapDataRecords['categoriesById'];
1166
+ locationsById: EnterpriseMapDataRecords['locationsById'];
1167
+ categoriesById: EnterpriseMapDataRecords['categoriesById'];
1151
1168
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
1152
- locationsBySpaceId: MapDataRecords['mvfLocationsBySpaceId'];
1153
- locationIdsByNodeId: MapDataRecords['locationIdsByNodeId'];
1169
+ mvfLocationsBySpaceId: EnterpriseMapDataRecords['mvfLocationsBySpaceId'];
1170
+ locationIdsByNodeId: EnterpriseMapDataRecords['locationIdsByNodeId'];
1154
1171
  mvfAnnotationsById: MapDataRecords['mvfAnnotationsById'];
1155
1172
  mvfConnectionsById: MapDataRecords['mvfConnectionsById'];
1156
1173
  mvfConnectionsByNodeId: MapDataRecords['mvfConnectionsByNodeId'];
@@ -1161,6 +1178,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1161
1178
  mvfFloorsById: MapDataRecords['mvfFloorsById'];
1162
1179
  mvfFloorStacksById: MapDataRecords['mvfFloorStacksById'];
1163
1180
  mvfAreasById: MapDataRecords['mvfAreasById'];
1181
+ spacesByExternalId: MapDataRecords['spacesByExternalId'];
1182
+ nodesByExternalId: MapDataRecords['nodesByExternalId'];
1183
+ objectsByExternalId: MapDataRecords['objectsByExternalId'];
1184
+ poisByExternalId: MapDataRecords['poisByExternalId'];
1185
+ floorsByExternalId: MapDataRecords['floorsByExternalId'];
1186
+ floorStacksByExternalId: MapDataRecords['floorStacksByExternalId'];
1187
+ doorsByExternalId: MapDataRecords['doorsByExternalId'];
1188
+ areasByExternalId: MapDataRecords['areasByExternalId'];
1189
+ connectionsByExternalId: EnterpriseMapDataRecords['connectionsByExternalId'];
1190
+ locationsByExternalId: EnterpriseMapDataRecords['locationsByExternalId'];
1191
+ categoriesByExternalId: EnterpriseMapDataRecords['categoriesByExternalId'];
1164
1192
  mvfNodesByFloorId: MapDataRecords['mvfNodesByFloorId'];
1165
1193
  mvfSpacesByFloorId: MapDataRecords['mvfSpacesByFloorId'];
1166
1194
  mvfPoisByFloorId: MapDataRecords['mvfPoisByFloorId'];
@@ -1271,10 +1299,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1271
1299
  *
1272
1300
  * @param type The type of the object (e.g., 'space', 'door').
1273
1301
  * @param id The ID of the object.
1274
- * @returns {Space | Door | Floor | Connection | MapObject | undefined} The requested object, or undefined if not found.
1302
+ * @returns The requested object, or undefined if not found.
1275
1303
  */
1276
- getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : T extends 'area' ? Area | undefined : T extends 'facade' ? Facade | undefined : undefined;
1277
- getById(type: string, id: string): object | undefined;
1304
+ getById<T extends keyof TMapDataObjectTypes>(type: T, id: string): TMapDataObjectTypes[T] | undefined;
1305
+ getByExternalId<T extends keyof Omit<TMapDataObjectTypes, 'annotation' | 'facade'>>(type: T, externalId: string): TMapDataObjectTypes[T][];
1278
1306
  getMapDataById(id: string): Places | undefined;
1279
1307
  /**
1280
1308
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
@@ -1332,7 +1360,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1332
1360
  import { PubSub } from '@packages/internal/common';
1333
1361
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
1334
1362
  import type { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
1335
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
1363
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images, DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
1336
1364
  import type { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1337
1365
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1338
1366
  import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
@@ -1416,7 +1444,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1416
1444
  * @internal
1417
1445
  * @experimental
1418
1446
  */
1419
- get DynamicFocus(): import("./api-geojson/dynamic-focus").DynamicFocus;
1447
+ get DynamicFocus(): DynamicFocus;
1420
1448
  /**
1421
1449
  * @internal
1422
1450
  */
@@ -1753,7 +1781,7 @@ declare module '@mappedin/react-sdk/geojson/src' {
1753
1781
  export type { AddText3DOptions, InitializeText3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
1754
1782
  export { ATTRIBUTION_POSITIONS } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
1755
1783
  export { ANIMATION_TWEENS } from '@mappedin/react-sdk/geojson/src/camera';
1756
- export type { AddPathOptions, AddMarkerOptions, AddLabelOptions, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, EasingCurve, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, };
1784
+ export type { AddPathOptions, AddMarkerOptions, AddLabelOptions, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, EasingCurve, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, RendererCoreOptions, };
1757
1785
  export function createRenderer(container: HTMLElement, options?: RendererCoreOptions & {
1758
1786
  [key: string]: any;
1759
1787
  }): Promise<RendererCore>;
@@ -1831,10 +1859,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1831
1859
 
1832
1860
  declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1833
1861
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1834
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1862
+ 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';
1835
1863
  import type { Label, Marker, Model, Image, Shape, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1836
1864
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1837
- import type { InsetPaddingOption, Position, UpdatableText3DState, Text3DState, AddText3DOptions } from '@mappedin/react-sdk/geojson/src';
1865
+ import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions } from '@mappedin/react-sdk/geojson/src';
1838
1866
  export type DeepRequired<T> = Required<{
1839
1867
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1840
1868
  }>;
@@ -1996,12 +2024,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1996
2024
  */
1997
2025
  opacity: number;
1998
2026
  };
1999
- export type TMarkerState = Omit<Required<TAddMarkerOptions>, 'id'> & {
2027
+ export type TMarkerState = Omit<Required<TAddMarkerOptions>, 'id' | 'zIndex'> & {
2000
2028
  type: 'marker';
2001
2029
  /**
2002
2030
  * HTML element for the marker.
2003
2031
  */
2004
2032
  element: HTMLElement;
2033
+ /**
2034
+ * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' override the default distance from the camera based
2035
+ * sorting of markers and show certain markers always in front
2036
+ */
2037
+ zIndex?: number;
2005
2038
  };
2006
2039
  /**
2007
2040
  * Represents the state of a shape.
@@ -2180,18 +2213,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2180
2213
  */
2181
2214
  interruptible?: boolean;
2182
2215
  };
2183
- /**
2184
- * A map element that can be focused on by the camera.
2185
- */
2186
- export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation | Facade
2187
- /**
2188
- * @experimental
2189
- */
2190
- | Position;
2191
- /**
2192
- * Defines the target(s) for the {@link Camera.focusOn} animation.
2193
- */
2194
- export type TCameraFocusOnTarget = TFocusable | TFocusable[];
2195
2216
  /**
2196
2217
  * Defines the target for camera operations.
2197
2218
  */
@@ -2229,7 +2250,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2229
2250
  geometry: Feature<MultiPolygon | Polygon>;
2230
2251
  /**
2231
2252
  * The additional cost for navigation through the zone, from 0 to Infinity.
2232
- * The final cost is calculated as the sum of basic cost that comes from the {@MapData}
2253
+ * The final cost is calculated as the sum of basic cost that comes from the {@link MapData}
2233
2254
  * and the additional zone cost.
2234
2255
  * A additional zone cost of 0 will make the zone free to navigate through
2235
2256
  * A additional zone cost of Infinity will make the zone impossible to navigate through
@@ -2536,6 +2557,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2536
2557
  * ```
2537
2558
  */
2538
2559
  zones?: TDirectionZone[];
2560
+ /**
2561
+ * @experimental
2562
+ * Enterprise only. Connections that should not be used for directions.
2563
+ *
2564
+ * If a connection is excluded, it will not be used in the directions even if it is the shortest (or only) path.
2565
+ * If there is no path that does not include the these connections, the directions will be undefined.
2566
+ */
2567
+ excludedConnections?: Connection[];
2539
2568
  };
2540
2569
  /**
2541
2570
  * The target for the add model operation.
@@ -2651,6 +2680,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2651
2680
  * Whether the marker is enabled.
2652
2681
  */
2653
2682
  enabled?: boolean;
2683
+ /**
2684
+ * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' override the default distance from the camera based
2685
+ * sorting of markers and show certain markers always in front
2686
+ */
2687
+ zIndex?: number;
2654
2688
  };
2655
2689
  /**
2656
2690
  * Options for creating a new {@link Label} with {@link Labels.add}.
@@ -2794,6 +2828,41 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2794
2828
  };
2795
2829
  };
2796
2830
  export type UpdateGlobalState = DeepPartial<GlobalState>;
2831
+ /**
2832
+ * A map element that can be focused on by the camera.
2833
+ */
2834
+ export type TFocusTarget = Coordinate | Space | Area | MapObject | Floor | Shape;
2835
+ /**
2836
+ * A class that implements IFocusable can be focused on by the camera.
2837
+ */
2838
+ export interface IFocusable {
2839
+ get focusTarget(): TFocusTarget | TFocusTarget[];
2840
+ }
2841
+ /**
2842
+ * A class that implements IAnchorable can have 2D elements like {@link Label}s and {@link Marker}s anchored to it.
2843
+ */
2844
+ export interface IAnchorable {
2845
+ get anchorTarget(): Coordinate;
2846
+ }
2847
+ /**
2848
+ * Associates MapData type strings with their corresponding classes.
2849
+ */
2850
+ export type TMapDataObjectTypes = {
2851
+ node: Node;
2852
+ space: Space;
2853
+ door: Door;
2854
+ floor: Floor;
2855
+ 'floor-stack': FloorStack;
2856
+ connection: Connection;
2857
+ object: MapObject;
2858
+ 'point-of-interest': PointOfInterest;
2859
+ annotation: Annotation;
2860
+ 'enterprise-location': EnterpriseLocation;
2861
+ 'enterprise-category': EnterpriseCategory;
2862
+ 'enterprise-venue': EnterpriseVenue;
2863
+ area: Area;
2864
+ facade: Facade;
2865
+ };
2797
2866
  }
2798
2867
 
2799
2868
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
@@ -3341,6 +3410,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson' {
3341
3410
  export { default as Outdoor } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor';
3342
3411
  export { Images } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/images';
3343
3412
  export { StackedMaps } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
3413
+ export { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus';
3344
3414
  }
3345
3415
 
3346
3416
  declare module '@mappedin/react-sdk/mappedin-js/src/search' {
@@ -3391,285 +3461,367 @@ declare module '@mappedin/react-sdk/react-sdk/src' {
3391
3461
  export type { DetailedHTMLProps, HTMLAttributes, ClassAttributes } from 'react';
3392
3462
  }
3393
3463
 
3394
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
3395
- import type { EnterpriseCategory as MVFEnterpriseCategory } from '@mappedin/mvf';
3396
- import type { MapDataInternal, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3397
- import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
3464
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3465
+ import type { ParsedMVF } from '@mappedin/mvf';
3466
+ import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
3467
+ import { Connection, Coordinate, Node, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3468
+ import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
3398
3469
  /**
3399
- * An EnterpriseCategory groups one or more EnterpriseLocation. These allow similar locations to be sorted in a logical fashion.
3400
- * 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.
3401
- *
3402
- * ```typescript
3403
- * const categories = mapData.getByType('enterprise-category');
3404
- * ```
3470
+ * Represents a set of directions between two points.
3405
3471
  *
3406
- * Refer to the [EnterpriseCategory Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-categories) for more information and interactive examples.
3472
+ * Directions are used to represent the path between two points on the map,
3473
+ * as well as the instructions to follow the path.
3407
3474
  */
3408
- class EnterpriseCategory extends BaseMetaData implements Omit<MVFEnterpriseCategory, 'children' | 'locations'> {
3475
+ export class Directions {
3409
3476
  #private;
3410
3477
  /**
3411
3478
  * @internal
3412
3479
  */
3413
- static readonly __type = "enterprise-category";
3480
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal);
3414
3481
  /**
3415
3482
  * @internal
3416
3483
  */
3417
- readonly __type = "enterprise-category";
3418
- /**
3419
- * The name of the category.
3420
- */
3421
- name: string;
3422
- /**
3423
- * The color of the category.
3424
- */
3425
- color?: string | undefined;
3484
+ get path(): Node[];
3426
3485
  /**
3427
- * The external ID of the category.
3486
+ * All the coordinates ({@link Coordinate}) of the directions.
3428
3487
  */
3429
- externalId: string;
3488
+ get coordinates(): Coordinate[];
3430
3489
  /**
3431
- * Extra properties of the category.
3490
+ * The total distance of the path in meters.
3432
3491
  */
3433
- extra?: Record<string, unknown> | undefined;
3492
+ get distance(): number;
3434
3493
  /**
3435
- * A URL to the icon of the category.
3494
+ * The array of instructions ({@link TDirectionInstruction}).
3436
3495
  */
3437
- icon?: string | undefined;
3496
+ get instructions(): TDirectionInstruction[];
3497
+ }
3498
+ export class DirectionsInternal {
3438
3499
  /**
3439
- * The icon from the default list of icons.
3500
+ * @hidden
3440
3501
  */
3441
- iconFromDefaultList?: string | null | undefined;
3502
+ constructor({ nodes, geojsonCollection, connections, groupBy, }: {
3503
+ nodes: ParsedMVF['node.geojson'];
3504
+ geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
3505
+ connections: ParsedMVF['connection.json'];
3506
+ groupBy?: string;
3507
+ });
3442
3508
  /**
3443
- * The sort order of the category.
3509
+ * Get directions between two navigation targets.
3510
+ *
3511
+ * @hidden
3512
+ * @param from
3513
+ * @param to
3514
+ * @param options
3515
+ * @param mapData
3444
3516
  */
3445
- sortOrder: number;
3517
+ getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
3518
+ accessible: boolean;
3519
+ smoothing: {
3520
+ enabled: boolean;
3521
+ radius: number;
3522
+ };
3523
+ zones: TDirectionZone[];
3524
+ excludedConnections: Connection[];
3525
+ }, mapData: MapDataInternal) => Directions | undefined;
3446
3526
  /**
3447
- * Checks if the provided instance is of type EnterpriseCategory.
3527
+ * Get the node IDs that should be excluded from the navigation graph.
3448
3528
  *
3449
- * @param instance The instance to check.
3450
- * @returns {boolean} True if the instance is a EnterpriseCategory, false otherwise.
3529
+ * @hidden
3530
+ * @param accessible {boolean}
3451
3531
  */
3452
- static is(instance: object): instance is EnterpriseCategory;
3532
+ getExcludedNodeIds: (accessible: boolean, excludedConnections: Connection[]) => string[];
3533
+ }
3534
+ }
3535
+
3536
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3537
+ import type Area from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area';
3538
+ import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
3539
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3540
+ import type Space from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
3541
+ import type PointOfInterest from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi';
3542
+ import type Annotation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation';
3543
+ import type Connection from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection';
3544
+ import type MapObject from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object';
3545
+ import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack, Feature } from '@mappedin/mvf';
3546
+ import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3547
+ import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3548
+ import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
3549
+ import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
3550
+ /**
3551
+ * Places are the main objects that can be searched for.
3552
+ */
3553
+ export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
3554
+ export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
3555
+ export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
3556
+ export type LanguagePack = {
3557
+ type: 'downloaded';
3558
+ data: ParsedMVFLocalePack;
3559
+ optimized: {
3560
+ locations: Record<string, LocationWithLocale> | undefined;
3561
+ categories: Record<string, CategoryWithLocale> | undefined;
3562
+ };
3563
+ } | {
3564
+ type: 'initial';
3565
+ optimized: {
3566
+ locations: Record<string, MvfEnterpriseLocation>;
3567
+ categories: Record<string, MvfEnterpriseCategory>;
3568
+ };
3569
+ };
3570
+ export type TMapDataInternalOptions = {
3571
+ env?: EnvControl;
3572
+ enterprise?: boolean;
3573
+ outdoorViewToken?: string;
3574
+ localePacksUrls?: LocalePackUrls;
3575
+ languagePacks?: LanguagePackHydrationItem[];
3576
+ binaryBundle?: Uint8Array;
3577
+ sasToken?: string;
3578
+ };
3579
+ /**
3580
+ * A class that implements IGeoJSONData has a underlying GeoJSON datathat can be accessed.
3581
+ */
3582
+ export interface IGeoJSONData {
3583
+ /** Gets the underlying GeoJSON Feature representation of this object. */
3584
+ geoJSON: Feature<any, null>;
3585
+ }
3586
+ }
3587
+
3588
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform' {
3589
+ import type { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
3590
+ /**
3591
+ * Class representing camera transformation data.
3592
+ */
3593
+ export class CameraTransform {
3594
+ #private;
3453
3595
  /**
3454
3596
  * @internal
3455
3597
  */
3456
- constructor(data: MapDataInternal, options: {
3457
- mvfData: MVFEnterpriseCategory;
3458
- });
3598
+ constructor(camera: Camera);
3459
3599
  /**
3460
- * The child categories of the category.
3600
+ * Getter for the center coordinate of the camera.
3601
+ *
3602
+ * @returns Center Coordinate.
3461
3603
  */
3462
- get children(): EnterpriseCategory[];
3604
+ get center(): import("..").Coordinate;
3463
3605
  /**
3464
- * The {@link EnterpriseLocation}s within this category.
3606
+ * Getter for the camera's bearing in degrees.
3607
+ *
3608
+ * @returns Camera bearing in degrees.
3465
3609
  */
3466
- get locations(): EnterpriseLocation[];
3610
+ get bearing(): number;
3467
3611
  /**
3468
- * Serializes the EnterpriseCategory data to JSON.
3612
+ * Getter for the camera's pitch in degrees.
3469
3613
  *
3470
- * @returns An object representing the EnterpriseCategory.
3614
+ * @returns Camera pitch in degrees.
3471
3615
  */
3472
- toJSON(): {
3473
- id: string;
3474
- name: string;
3475
- };
3616
+ get pitch(): number;
3476
3617
  /**
3477
- * Cleans up resources used by the instance.
3618
+ * Getter for the camera's zoom level in mercator zoom levels.
3478
3619
  *
3479
- * @internal
3620
+ * @see https://wiki.openstreetmap.org/wiki/Zoom_levels
3621
+ *
3622
+ * @returns Zoom level in mercator zoom levels.
3480
3623
  */
3481
- destroy(): void;
3624
+ get zoomLevel(): number;
3482
3625
  }
3483
- export default EnterpriseCategory;
3484
3626
  }
3485
3627
 
3486
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
3487
- import type { EnterpriseLocation as MVFEnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
3488
- import type { Coordinate, EnterpriseCategory, MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3489
- import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
3628
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot' {
3629
+ export { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3630
+ export type { TBlueDotEvents, GeolocationPositionExtended, TFollowCameraOptions, TFollowMode } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3631
+ }
3632
+
3633
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
3634
+ import type { NodeCollection } from '@mappedin/mvf';
3635
+ import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3636
+ import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3637
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3490
3638
  import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
3639
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3640
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3491
3641
  /**
3492
- * An EnterpriseLocation contains metadata about a location, such as its name, description, logo, phone number, social medial links, hours of operation and more.
3493
- * They can be accessed using the {@link MapData.getByType()} method as shown below.
3642
+ * A class representing {@link Path} node data within the map.
3494
3643
  *
3495
- * ```typescript
3496
- * const allLocations = mapData.getByType('enterprise-location');
3497
- * ```
3644
+ * Nodes are used to define points in the map's pathfinding graph.
3498
3645
  *
3499
- * Refer to the [EnterpriseLocation Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-locations) for more information and interactive examples.
3500
3646
  */
3501
- class EnterpriseLocation extends BaseMetaData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links'> {
3647
+ class Node extends BaseMetaData implements IGeoJSONData, IFocusable, IAnchorable {
3502
3648
  #private;
3503
3649
  /**
3504
3650
  * @internal
3505
3651
  */
3506
- static readonly __type = "enterprise-location";
3652
+ static readonly __type = "node";
3507
3653
  /**
3508
3654
  * @internal
3509
3655
  */
3510
- readonly __type = "enterprise-location";
3656
+ readonly __type = "node";
3511
3657
  /**
3512
- * The description of the location.
3658
+ * Checks if the provided instance is of type Node.
3659
+ *
3660
+ * @param instance The instance to check.
3661
+ * @returns {boolean} True if the instance is a Node, false otherwise.
3513
3662
  */
3514
- description?: string | undefined;
3663
+ static is(instance: object): instance is Node;
3515
3664
  /**
3516
- * The name of the location.
3665
+ * @internal
3517
3666
  */
3518
- name: string;
3519
- /**
3520
- * The amenity of the location.
3521
- */
3522
- amenity?: string | undefined;
3523
- /**
3524
- * The external ID of the location.
3525
- */
3526
- externalId: string;
3527
- /**
3528
- * Extra properties of the location.
3529
- */
3530
- extra?: Record<string, unknown> | undefined;
3667
+ constructor(data: MapDataInternal, options: {
3668
+ floorId: string;
3669
+ mvfData: NodeCollection['features'][number];
3670
+ });
3671
+ /** @internal */
3672
+ get locations(): EnterpriseLocation[];
3531
3673
  /**
3532
- * The gallery of the location.
3674
+ * Gets the {@link Floor} associated with the node.
3675
+ *
3676
+ * @returns {Floor} The floor object.
3677
+ * @throws Will throw an error if the floor is not found.
3533
3678
  */
3534
- gallery?: {
3535
- caption?: string | null;
3536
- image: string;
3537
- embeddedUrl?: string | null;
3538
- }[] | undefined;
3679
+ get floor(): Floor;
3539
3680
  /**
3540
- * Specific instances of this location with different properties.
3541
- * Typically, there will be at least one node or polygon defined,
3542
- * plus one or more other properties that are different from the parent.
3543
- * The remaining properties will be the same as the parent.
3544
-
3545
- * For example, suppose there is a location like this:
3546
- *
3547
- * ```json
3548
- * {
3549
- * "id": "location-id-1",
3550
- * "name": "Location 1",
3551
- * "nodes": ["node-1", "node-2"],
3552
- * "polygons": ["polygon-1", "polygon-2"],
3553
- * "externalId": "externalId-1",
3554
- * "description": "Description 1",
3555
- * }
3556
- * ```
3557
- *
3558
- * (Note that for clarity, this example puts strings in for nodes and polygons, but in practice they would be objects.)
3559
- *
3560
- * Then suppose it had an `instances` array that contained an object that looked like this:
3561
- *
3562
- * ```json
3563
- * {
3564
- * "id": "instance-id-1",
3565
- * "name": "Location 1 - A",
3566
- * "nodes": ["node-1"],
3567
- * "polygons": ["polygon-1"],
3568
- * "externalId": "externalId-1-A",
3569
- * "description": "Description 1",
3570
- * }
3571
- * ```
3572
- * 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`.
3573
- * The ID will always be different, but other properties (like the description) are the same as the parent.
3574
- *
3575
- * Example use cases:
3576
- * - 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
3577
- * 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.
3578
- * - An airport may have a location with several polygons and nodes, and an instance for each node (and corresponding polygon, if any) with a different siblingGroup. The location in the sibling group may be the airport terminal, or airside vs landside.
3579
- * 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.
3681
+ * Gets the {@link Coordinate} of the node.
3580
3682
  *
3581
- * Note: Instances are actual EnterpriseLocations. This means they have all the properties of a normal EnterpriseLocation, including an `instances` property, that will always be undefined. They also do NOT have a parent property, or any other explicit reference to the parent location. These instances are
3582
- * 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.
3683
+ * @returns {Coordinate} The node's coordinate.
3583
3684
  */
3584
- instances?: EnterpriseLocation[] | undefined;
3685
+ get coordinate(): Coordinate;
3585
3686
  /**
3586
- * A URL to the logo of the location.
3687
+ * Gets the external ID of the node.
3688
+ *
3689
+ * @returns {string} The external ID of the node.
3587
3690
  */
3588
- logo?: string | undefined;
3691
+ get externalId(): string;
3589
3692
  /**
3590
- * The operation hours of the location.
3693
+ * Gets the neighboring nodes of this node.
3694
+ *
3695
+ * @returns {Node[]} An array of neighboring Node objects.
3591
3696
  */
3592
- operationHours?: OperationHours[] | undefined;
3697
+ get neighbors(): Node[];
3593
3698
  /**
3594
- * The phone number of the location.
3699
+ * Gets the underlying GeoJSON Feature representation of this Node.
3595
3700
  */
3596
- phone?: {
3597
- number: string;
3598
- extension?: string;
3599
- } | undefined;
3701
+ get geoJSON(): {
3702
+ properties: null;
3703
+ type: import("@mappedin/mvf").FeatureType;
3704
+ geometry: import("@mappedin/mvf").Point;
3705
+ };
3706
+ /** @internal */
3707
+ get focusTarget(): Coordinate;
3708
+ /** @internal */
3709
+ get anchorTarget(): Coordinate;
3600
3710
  /**
3601
- * A URL to the picture of the location.
3711
+ * Serializes the node data to JSON.
3712
+ *
3713
+ * @returns An object representing the node.
3602
3714
  */
3603
- picture?: string | undefined;
3715
+ toJSON(): {
3716
+ id: string;
3717
+ floor: string;
3718
+ coordinate: {
3719
+ latitude: number;
3720
+ longitude: number;
3721
+ floor: string | undefined;
3722
+ };
3723
+ neighbors: string[];
3724
+ };
3604
3725
  /**
3605
- * The short name of the location.
3726
+ * Cleans up resources used by the instance.
3727
+ *
3728
+ * @internal
3606
3729
  */
3607
- shortName?: string | undefined;
3730
+ destroy(): void;
3731
+ }
3732
+ export default Node;
3733
+ }
3734
+
3735
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
3736
+ import type { AreaCollection } from '@mappedin/mvf';
3737
+ import { Coordinate, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3738
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3739
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3740
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3741
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3742
+ /**
3743
+ * An Area represents some grouping of multiple pieces of geometry, not
3744
+ * necessarily bounded by walls or any other physical feature of the map.
3745
+ *
3746
+ * Areas are currently in a preview state, and may have changes to existing
3747
+ * functionality or new features added in the future.
3748
+ */
3749
+ class Area extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
3750
+ #private;
3608
3751
  /**
3609
- * Whether to show the floating label when an image is present.
3752
+ * @internal
3610
3753
  */
3611
- showFloatingLabelWhenImagePresent?: boolean | undefined;
3754
+ static readonly __type = "area";
3612
3755
  /**
3613
- * Whether to show the logo.
3756
+ * @internal
3614
3757
  */
3615
- showLogo?: boolean | undefined;
3758
+ readonly __type = "area";
3616
3759
  /**
3617
- * The sibling groups of the location.
3760
+ * Checks if the provided instance is of type Area.
3761
+ *
3762
+ * @param instance The instance to check.
3763
+ * @returns {boolean} True if the instance is a Area, false otherwise.
3618
3764
  */
3619
- siblingGroups?: SiblingGroup[] | undefined;
3765
+ static is(instance: object): instance is Area;
3620
3766
  /**
3621
- * The social media links of the location.
3767
+ * @internal
3622
3768
  */
3623
- social?: {
3624
- facebook?: string;
3625
- instagram?: string;
3626
- twitter?: string;
3627
- website?: string;
3628
- } | undefined;
3769
+ constructor(data: MapDataInternal, options: {
3770
+ floorId: string;
3771
+ mvfData: AreaCollection['features'][number];
3772
+ });
3629
3773
  /**
3630
- * The sort order of the location.
3774
+ * Gets the name of the area.
3775
+ *
3776
+ * @returns {string} The name of the area.
3631
3777
  */
3632
- sortOrder: number;
3778
+ get name(): string;
3633
3779
  /**
3634
- * The {@link LocationState}s of the location.
3780
+ * Gets the external identifier of the area.
3781
+ *
3782
+ * @returns {string} The external ID of the area, or an empty string if no external ID exists.
3635
3783
  */
3636
- states?: LocationState[] | undefined;
3784
+ get externalId(): string;
3637
3785
  /**
3638
- * The tags of the location.
3786
+ * Gets the description of the area.
3787
+ *
3788
+ * @returns {string} The description of the area, or an empty string if no description exists.
3639
3789
  */
3640
- tags?: string[] | undefined;
3790
+ get description(): string;
3641
3791
  /**
3642
- * The type of the location.
3792
+ * Gets the center {@link Coordinate} of the area.
3793
+ *
3794
+ * @returns {Coordinate} The area's center coordinate.
3643
3795
  */
3644
- type: string;
3796
+ get center(): Coordinate;
3645
3797
  /**
3646
- * Checks if the provided instance is of type EnterpriseLocation.
3798
+ * Gets the {@link Floor} object associated with the area.
3647
3799
  *
3648
- * @param instance The instance to check.
3649
- * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
3800
+ * @returns {Floor} The floor object.
3801
+ * @throws Will throw an error if the floor is not found.
3650
3802
  */
3651
- static is(instance: object): instance is EnterpriseLocation;
3803
+ get floor(): Floor;
3652
3804
  /**
3653
- * @internal
3805
+ * Gets the underlying GeoJSON Feature representation of this Area.
3654
3806
  */
3655
- constructor(data: MapDataInternal, options: {
3656
- mvfData: MVFEnterpriseLocation;
3657
- categoryIds: string[];
3658
- locationInstances?: EnterpriseLocation[];
3659
- parentId?: string;
3660
- });
3661
- get categories(): EnterpriseCategory[];
3662
- get coordinates(): Coordinate[];
3663
- get nodes(): Node[];
3664
- get spaces(): Space[];
3807
+ get geoJSON(): {
3808
+ properties: null;
3809
+ type: import("@mappedin/mvf").FeatureType;
3810
+ geometry: import("@mappedin/mvf").Polygon;
3811
+ };
3812
+ /** @internal */
3813
+ get focusTarget(): this;
3814
+ /** @internal */
3815
+ get anchorTarget(): Coordinate;
3665
3816
  /**
3666
- * Serializes the EnterpriseLocation data to JSON.
3817
+ * Serializes the space data to JSON.
3667
3818
  *
3668
- * @returns An object representing the EnterpriseLocation.
3819
+ * @returns An object representing the space.
3669
3820
  */
3670
3821
  toJSON(): {
3671
3822
  id: string;
3672
3823
  name: string;
3824
+ floor: string;
3673
3825
  };
3674
3826
  /**
3675
3827
  * Cleans up resources used by the instance.
@@ -3678,112 +3830,266 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
3678
3830
  */
3679
3831
  destroy(): void;
3680
3832
  }
3681
- export default EnterpriseLocation;
3833
+ export default Area;
3682
3834
  }
3683
3835
 
3684
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
3685
- import type { EnterpriseVenue as MVFEnterpriseVenue, Language } from '@mappedin/mvf';
3686
- import type { Hyperlink, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3687
- import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
3836
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
3837
+ import type { EntranceCollection } from '@mappedin/mvf';
3838
+ import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3839
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3840
+ import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3841
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3842
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3843
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3688
3844
  /**
3689
- * The EnterpriseVenue class holds metadata bout the map, which includes the map name, supported languages, default language, top locations and more.
3690
- * It can be accessed using the {@link MapData.getByType()} method as shown below.
3845
+ * A class representing door data within the map.
3846
+ *
3847
+ * Doors are hidden by default. Doors can be made visible by setting their `visible` property to `true`.
3691
3848
  *
3692
3849
  * ```typescript
3693
- * const venue = mapData.getByType('enterprise-venue');
3850
+ * //Make interior doors visible and brown.
3851
+ * mapView.updateState(DOORS.Interior, {
3852
+ * visible: true,
3853
+ * color: '#5C4033',
3854
+ * opacity: 0.6,
3855
+ * });
3856
+
3857
+ * //Make exterior doors visible and black.
3858
+ * mapView.updateState(DOORS.Exterior, {
3859
+ * visible: true,
3860
+ * color: 'black',
3861
+ * opacity: 0.6,
3862
+ * });
3694
3863
  * ```
3864
+ * Doors can also be made visible on an individual basis by passing in a {@link Door} object to {@link MapView.updateState}.
3695
3865
  *
3696
- * Refer to the [EnterpriseVenue Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-venue) for more information.
3697
- */
3698
- class EnterpriseVenue extends BaseMetaData implements MVFEnterpriseVenue {
3866
+ * Refer to the [Door Guide](https://developer.mappedin.com/web-sdk/spaces#doors) for more information and interactive examples.
3867
+ *
3868
+ * Door appearance can be customized by changing the color or adding a texture to the top or sides of a door.
3869
+ * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
3870
+ *
3871
+ */
3872
+ class Door extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
3699
3873
  #private;
3700
3874
  /**
3701
3875
  * @internal
3702
3876
  */
3703
- static readonly __type = "enterprise-venue";
3877
+ static readonly __type = "door";
3704
3878
  /**
3705
3879
  * @internal
3706
3880
  */
3707
- readonly __type = "enterprise-venue";
3881
+ readonly __type = "door";
3708
3882
  /**
3709
- * The country code of the venue.
3883
+ * Checks if the provided instance is of type Door.
3884
+ *
3885
+ * @param instance The instance to check.
3886
+ * @returns {boolean} True if the instance is a Door, false otherwise.
3710
3887
  */
3711
- countrycode?: string | undefined;
3888
+ static is(instance: object): instance is Door;
3712
3889
  /**
3713
- * The external ID of the venue.
3890
+ * @internal
3714
3891
  */
3715
- externalId: string;
3892
+ constructor(data: MapDataInternal, options: {
3893
+ floorId: string;
3894
+ mvfData: EntranceCollection['features'][number];
3895
+ });
3716
3896
  /**
3717
- * The default language of the venue.
3897
+ * Gets the name of the door.
3898
+ *
3899
+ * @returns {string} The name of the door.
3718
3900
  */
3719
- defaultLanguage: Language;
3901
+ get name(): string;
3720
3902
  /**
3721
- * The default map of the venue.
3903
+ * Gets the external ID of the door.
3904
+ *
3905
+ * @returns {string} The external ID of the door.
3722
3906
  */
3723
- defaultMap?: string | undefined;
3907
+ get externalId(): string;
3724
3908
  /**
3725
- * Extra properties of the venue.
3909
+ * Gets the description of the door.
3910
+ *
3911
+ * @returns {string} The description of the door.
3726
3912
  */
3727
- extra?: Record<string, unknown> | undefined;
3913
+ get description(): string;
3728
3914
  /**
3729
- * A URL to the icon of the venue.
3915
+ * Gets the {@link Floor} object associated with the door.
3916
+ *
3917
+ * @returns {Floor} The floor object.
3918
+ * @throws Will throw an error if the floor is not found.
3730
3919
  */
3731
- icon?: string | undefined;
3920
+ get floor(): Floor;
3732
3921
  /**
3733
- * The languages supported by the venue.
3922
+ * Calculates and gets the center {@link Coordinate} of the door.
3923
+ *
3924
+ * @returns {Coordinate} The center coordinate.
3734
3925
  */
3735
- languages: Language[];
3926
+ get center(): Coordinate;
3736
3927
  /**
3737
- * The links of the venue.
3928
+ * Gets whether this door is an exterior door.
3738
3929
  */
3739
- links: Hyperlink[];
3930
+ get isExterior(): boolean;
3740
3931
  /**
3741
- * A URL to the logo of the venue.
3932
+ * Gets the underlying GeoJSON Feature representation of this Door.
3742
3933
  */
3743
- logo?: string | undefined;
3934
+ get geoJSON(): {
3935
+ properties: null;
3936
+ type: import("@mappedin/mvf").FeatureType;
3937
+ geometry: import("@mappedin/mvf").LineString;
3938
+ };
3939
+ /** @internal */
3940
+ get focusTarget(): Coordinate;
3941
+ /** @internal */
3942
+ get anchorTarget(): Coordinate;
3744
3943
  /**
3745
- * A URL to a web page with [Mappedin Web](https://developer.mappedin.com/docs/enterprise-apps/mappedin-web-v2) for this venue.
3944
+ * Converts the door information to a JSON object.
3945
+ *
3946
+ * @returns An object representing the door.
3746
3947
  */
3747
- mappedinWebUrl?: string | undefined;
3948
+ toJSON(): {
3949
+ id: string;
3950
+ name: string;
3951
+ floor: string;
3952
+ center: {
3953
+ latitude: number;
3954
+ longitude: number;
3955
+ floor: string | undefined;
3956
+ };
3957
+ };
3748
3958
  /**
3749
- * The slug of the venue.
3959
+ * Cleans up resources used by the instance.
3960
+ *
3961
+ * @internal
3750
3962
  */
3751
- slug: string;
3963
+ destroy(): void;
3964
+ }
3965
+ export default Door;
3966
+ }
3967
+
3968
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
3969
+ import type { SpaceCollection } from '@mappedin/mvf';
3970
+ import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3971
+ import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3972
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3973
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3974
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
3975
+ import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
3976
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3977
+ /**
3978
+ * Represents the various types of spaces that can be defined within a map.
3979
+ * - 'room': A standard room or enclosed area.
3980
+ * - 'hallway': A passageway connecting rooms.
3981
+ * - 'exterior': An outdoor area.
3982
+ * - 'void': An undefined or non-specific space.
3983
+ * - 'connection.stairs': A stairway connecting different floors.
3984
+ * - 'connection.elevator': An elevator connecting different floors.
3985
+ * - 'poi': A point of interest within the map.
3986
+ */
3987
+ export type TSpaceType = 'room' | 'hallway' | 'exterior' | 'void' | 'connection.stairs' | 'connection.elevator' | 'poi';
3988
+ /**
3989
+ * 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.
3990
+ * Spaces can also be customized with a color, texture and hover color.
3991
+ *
3992
+ * Refer to the [Spaces Guide](https://developer.mappedin.com/web-sdk/spaces) for more information and interactive examples.
3993
+ */
3994
+ class Space extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
3995
+ #private;
3752
3996
  /**
3753
- * The top locations of the venue.
3997
+ * @internal
3754
3998
  */
3755
- topLocations?: string[] | undefined;
3999
+ static readonly __type = "space";
3756
4000
  /**
3757
- * The timezone ID of the venue.
4001
+ * @internal
3758
4002
  */
3759
- tzid?: string | undefined;
4003
+ readonly __type = "space";
4004
+ getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon | import("@mappedin/mvf").Point, import("@mappedin/mvf").SpaceProperties>;
3760
4005
  /**
3761
- * Checks if the provided instance is of type EnterpriseVenue.
4006
+ * Checks if the provided instance is of type Space.
3762
4007
  *
3763
4008
  * @param instance The instance to check.
3764
- * @returns {boolean} True if the instance is a EnterpriseVenue, false otherwise.
4009
+ * @returns {boolean} True if the instance is a Space, false otherwise.
3765
4010
  */
3766
- static is(instance: object): instance is EnterpriseVenue;
4011
+ static is(instance: object): instance is Space;
3767
4012
  /**
3768
4013
  * @internal
3769
4014
  */
3770
- constructor(_data: MapDataInternal, options: {
3771
- mvfData: MVFEnterpriseVenue;
4015
+ constructor(data: MapDataInternal, options: {
4016
+ floorId: string;
4017
+ mvfData: SpaceCollection['features'][number];
3772
4018
  });
3773
4019
  /**
3774
- * Gets the name of the EnterpriseVenue.
4020
+ * Gets the name of the space.
3775
4021
  *
3776
- * @returns {string} The name of the EnterpriseVenue.
4022
+ * @returns {string} The name of the space.
3777
4023
  */
3778
4024
  get name(): string;
3779
4025
  /**
3780
- * Serializes the EnterpriseVenue data to JSON.
4026
+ * Gets the type/kind of the space.
3781
4027
  *
3782
- * @returns An object representing the EnterpriseVenue.
4028
+ * @returns {TSpaceType} The type of the space.
4029
+ */
4030
+ get type(): TSpaceType;
4031
+ /**
4032
+ * Gets the description of the space.
4033
+ *
4034
+ * @returns {string} The description of the space, or an empty string if no description exists.
4035
+ */
4036
+ get description(): string;
4037
+ /**
4038
+ * Gets the external identifier of the space.
4039
+ *
4040
+ * @returns {string} The external ID of the space, or an empty string if no external ID exists.
4041
+ */
4042
+ get externalId(): string;
4043
+ /**
4044
+ * @internal
4045
+ */
4046
+ get locations(): EnterpriseLocation[];
4047
+ /**
4048
+ * Gets the {@link Floor} object associated with the space.
4049
+ *
4050
+ * @returns {Floor} The floor object.
4051
+ * @throws Will throw an error if the floor is not found.
4052
+ */
4053
+ get floor(): Floor;
4054
+ /**
4055
+ * Gets the array of {@link Door}s associated with the space.
4056
+ *
4057
+ * @returns {Door[]} The doors array.
4058
+ */
4059
+ get doors(): Door[];
4060
+ /**
4061
+ * Gets the center {@link Coordinate} of the space.
4062
+ *
4063
+ * @returns {Coordinate} The space's center coordinate.
4064
+ */
4065
+ get center(): Coordinate;
4066
+ /**
4067
+ * Gets the underlying GeoJSON Feature representation of this Space.
4068
+ */
4069
+ get geoJSON(): {
4070
+ properties: null;
4071
+ type: import("@mappedin/mvf").FeatureType;
4072
+ geometry: import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon | import("@mappedin/mvf").Point;
4073
+ };
4074
+ /** @internal */
4075
+ get focusTarget(): Coordinate | this;
4076
+ /** @internal */
4077
+ get anchorTarget(): Coordinate;
4078
+ /**
4079
+ * Serializes the space data to JSON.
4080
+ *
4081
+ * @returns An object representing the space.
3783
4082
  */
3784
4083
  toJSON(): {
3785
4084
  id: string;
3786
4085
  name: string;
4086
+ type: TSpaceType;
4087
+ floor: string;
4088
+ center: {
4089
+ latitude: number;
4090
+ longitude: number;
4091
+ floor: string | undefined;
4092
+ };
3787
4093
  };
3788
4094
  /**
3789
4095
  * Cleans up resources used by the instance.
@@ -3792,262 +4098,231 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
3792
4098
  */
3793
4099
  destroy(): void;
3794
4100
  }
3795
- export default EnterpriseVenue;
4101
+ export const VALID_SPACE_TYPES: TSpaceType[];
4102
+ /**
4103
+ * validates space type and fallback to room
4104
+ */
4105
+ export function validateSpaceType(input: string | null | undefined): TSpaceType;
4106
+ export default Space;
3796
4107
  }
3797
4108
 
3798
- declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3799
- import type { ParsedMVF } from '@mappedin/mvf';
3800
- import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
3801
- import { Coordinate, Node, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3802
- import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
4109
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
4110
+ import type { FloorProperties as MVFFloor } from '@mappedin/mvf';
4111
+ import type { Annotation, Connection, Door, MapDataInternal, PointOfInterest, Space, MapObject, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4112
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4113
+ import type { IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3803
4114
  /**
3804
- * Represents a set of directions between two points.
4115
+ * A class representing floor data within the map.
3805
4116
  *
3806
- * Directions are used to represent the path between two points on the map,
3807
- * as well as the instructions to follow the path.
4117
+ * Floors are used to represent different levels within a map, each containing various map elements.
3808
4118
  */
3809
- export class Directions {
4119
+ class Floor extends BaseMapData implements IFocusable {
3810
4120
  #private;
3811
4121
  /**
3812
4122
  * @internal
3813
4123
  */
3814
- constructor(directions: DirectionsCollection, mapData: MapDataInternal);
4124
+ static readonly __type = "floor";
3815
4125
  /**
3816
4126
  * @internal
3817
4127
  */
3818
- get path(): Node[];
4128
+ readonly __type = "floor";
3819
4129
  /**
3820
- * All the coordinates ({@link Coordinate}) of the directions.
4130
+ * Checks if the provided instance is of type Floor.
4131
+ *
4132
+ * @param instance The instance to check.
4133
+ * @returns {boolean} True if the instance is a Floor, false otherwise.
3821
4134
  */
3822
- get coordinates(): Coordinate[];
4135
+ static is(instance: object): instance is Floor;
3823
4136
  /**
3824
- * The total distance of the path in meters.
4137
+ * @internal
3825
4138
  */
3826
- get distance(): number;
4139
+ constructor(data: MapDataInternal, options: {
4140
+ mvfData: MVFFloor;
4141
+ });
4142
+ /** @internal */
4143
+ get focusTarget(): this;
3827
4144
  /**
3828
- * The array of instructions ({@link TDirectionInstruction}).
4145
+ * Gets the name of the floor.
4146
+ *
4147
+ * @returns {string} The name of the floor.
3829
4148
  */
3830
- get instructions(): TDirectionInstruction[];
3831
- }
3832
- export class DirectionsInternal {
4149
+ get name(): string;
3833
4150
  /**
3834
- * @hidden
4151
+ * Gets the external ID of the floor.
4152
+ *
4153
+ * @returns {string} The external ID of the floor.
3835
4154
  */
3836
- constructor({ nodes, geojsonCollection, connections, groupBy, }: {
3837
- nodes: ParsedMVF['node.geojson'];
3838
- geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
3839
- connections: ParsedMVF['connection.json'];
3840
- groupBy?: string;
3841
- });
4155
+ get externalId(): string;
3842
4156
  /**
3843
- * Get directions between two navigation targets.
4157
+ * Gets the elevation of the floor.
3844
4158
  *
3845
- * @hidden
3846
- * @param from
3847
- * @param to
3848
- * @param options
3849
- * @param mapData
4159
+ * @returns {number} The elevation of the floor.
3850
4160
  */
3851
- getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
3852
- accessible: boolean;
3853
- smoothing: {
3854
- enabled: boolean;
3855
- radius: number;
3856
- };
3857
- zones: TDirectionZone[];
3858
- }, mapData: MapDataInternal) => Directions | undefined;
4161
+ get elevation(): number;
3859
4162
  /**
3860
- * Get the node IDs that should be excluded from the navigation graph.
4163
+ * Gets the spaces ({@link Space}) located on this floor.
3861
4164
  *
3862
- * @hidden
3863
- * @param accessible {boolean}
4165
+ * @returns {Space[]} An array of Space objects on this floor.
3864
4166
  */
3865
- getExcludedNodeIds: (accessible: boolean) => string[];
3866
- }
3867
- }
3868
-
3869
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3870
- import type Area from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area';
3871
- import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
3872
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3873
- import type Space from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
3874
- import type PointOfInterest from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi';
3875
- import type Annotation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation';
3876
- import type Connection from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection';
3877
- import type MapObject from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object';
3878
- import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack, Feature } from '@mappedin/mvf';
3879
- import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3880
- import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3881
- import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
3882
- import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
3883
- /**
3884
- * Places are the main objects that can be searched for.
3885
- */
3886
- export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
3887
- export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
3888
- export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
3889
- export type LanguagePack = {
3890
- type: 'downloaded';
3891
- data: ParsedMVFLocalePack;
3892
- optimized: {
3893
- locations: Record<string, LocationWithLocale> | undefined;
3894
- categories: Record<string, CategoryWithLocale> | undefined;
3895
- };
3896
- } | {
3897
- type: 'initial';
3898
- optimized: {
3899
- locations: Record<string, MvfEnterpriseLocation>;
3900
- categories: Record<string, MvfEnterpriseCategory>;
3901
- };
3902
- };
3903
- export type TMapDataInternalOptions = {
3904
- env?: EnvControl;
3905
- enterprise?: boolean;
3906
- outdoorViewToken?: string;
3907
- localePacksUrls?: LocalePackUrls;
3908
- languagePacks?: LanguagePackHydrationItem[];
3909
- binaryBundle?: Uint8Array;
3910
- sasToken?: string;
3911
- };
3912
- /**
3913
- * A class that implements IGeoJSONData has a underlying GeoJSON datathat can be accessed.
3914
- */
3915
- export interface IGeoJSONData {
3916
- /** Gets the underlying GeoJSON Feature representation of this object. */
3917
- geoJSON: Feature<any, null>;
3918
- }
3919
- }
3920
-
3921
- declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform' {
3922
- import type { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
3923
- /**
3924
- * Class representing camera transformation data.
3925
- */
3926
- export class CameraTransform {
3927
- #private;
4167
+ get spaces(): Space[];
3928
4168
  /**
3929
- * @internal
4169
+ * Gets the objects ({@link MapObject}) located on this floor.
4170
+ *
4171
+ * @returns {MapObject[]} An array of MapObject objects on this floor.
3930
4172
  */
3931
- constructor(camera: Camera);
4173
+ get objects(): MapObject[];
3932
4174
  /**
3933
- * Getter for the center coordinate of the camera.
4175
+ * Gets the connections ({@link Connection}) associated with this floor.
3934
4176
  *
3935
- * @returns Center Coordinate.
4177
+ * @returns {Connection[]} An array of Connection objects linked to this floor.
3936
4178
  */
3937
- get center(): import("..").Coordinate;
4179
+ get connections(): Connection[];
3938
4180
  /**
3939
- * Getter for the camera's bearing in degrees.
4181
+ * Gets the doors ({@link Door}) located on this floor.
3940
4182
  *
3941
- * @returns Camera bearing in degrees.
4183
+ * @returns {Door[]} An array of Door objects on this floor.
3942
4184
  */
3943
- get bearing(): number;
4185
+ get doors(): Door[];
3944
4186
  /**
3945
- * Getter for the camera's pitch in degrees.
4187
+ * Gets the annotations ({@link Annotation}) associated with this floor.
3946
4188
  *
3947
- * @returns Camera pitch in degrees.
4189
+ * @returns {Annotation[]} An array of Annotation objects linked to this floor.
3948
4190
  */
3949
- get pitch(): number;
4191
+ get annotations(): Annotation[];
3950
4192
  /**
3951
- * Getter for the camera's zoom level in mercator zoom levels.
4193
+ * Gets the points of interest ({@link PointOfInterest}) located on this floor.
3952
4194
  *
3953
- * @see https://wiki.openstreetmap.org/wiki/Zoom_levels
4195
+ * @returns {PointOfInterest[]} An array of PointOfInterest objects on this floor.
4196
+ */
4197
+ get pois(): PointOfInterest[];
4198
+ /**
4199
+ * Gets the FloorStack ({@link FloorStack}) that this floor belongs to.
3954
4200
  *
3955
- * @returns Zoom level in mercator zoom levels.
4201
+ * @returns {FloorStack} The FloorStack that this floor belongs to.
3956
4202
  */
3957
- get zoomLevel(): number;
4203
+ get floorStack(): FloorStack;
4204
+ /**
4205
+ * Serializes the floor data to JSON.
4206
+ *
4207
+ * @returns An object representing the floor.
4208
+ */
4209
+ toJSON(): {
4210
+ id: string;
4211
+ name: string;
4212
+ elevation: number;
4213
+ spaces: string[];
4214
+ objects: string[];
4215
+ connections: string[];
4216
+ doors: string[];
4217
+ annotations: string[];
4218
+ pois: string[];
4219
+ };
4220
+ /**
4221
+ * Cleans up resources used by the instance.
4222
+ *
4223
+ * @internal
4224
+ */
4225
+ destroy(): void;
3958
4226
  }
4227
+ export default Floor;
3959
4228
  }
3960
4229
 
3961
- declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot' {
3962
- export { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3963
- export type { TBlueDotEvents, GeolocationPositionExtended, TFollowCameraOptions, TFollowMode } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3964
- }
3965
-
3966
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
3967
- import type { NodeCollection } from '@mappedin/mvf';
4230
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection' {
4231
+ import type { Feature, FeatureCollection, Point, SpaceProperties, Connection as MVFConnection } from '@mappedin/mvf';
3968
4232
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3969
- import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3970
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3971
- import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
3972
- import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4233
+ import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
4234
+ import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4235
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4236
+ import type { IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
3973
4237
  /**
3974
- * A class representing {@link Path} node data within the map.
3975
- *
3976
- * Nodes are used to define points in the map's pathfinding graph.
4238
+ * A class representing connection data within the map.
3977
4239
  *
4240
+ * Connections are used to represent pathways between different map nodes.
3978
4241
  */
3979
- class Node extends BaseMetaData implements IGeoJSONData {
4242
+ class Connection extends BaseMapData implements IFocusable {
3980
4243
  #private;
3981
4244
  /**
3982
4245
  * @internal
3983
4246
  */
3984
- static readonly __type = "node";
4247
+ static readonly __type = "connection";
3985
4248
  /**
3986
4249
  * @internal
3987
4250
  */
3988
- readonly __type = "node";
4251
+ readonly __type = "connection";
3989
4252
  /**
3990
- * Checks if the provided instance is of type Node.
4253
+ * Checks if the provided instance is of type Connection.
3991
4254
  *
3992
4255
  * @param instance The instance to check.
3993
- * @returns {boolean} True if the instance is a Node, false otherwise.
4256
+ * @returns {boolean} True if the instance is a Connection, false otherwise.
3994
4257
  */
3995
- static is(instance: object): instance is Node;
4258
+ static is(instance: object): instance is Connection;
3996
4259
  /**
3997
4260
  * @internal
3998
4261
  */
3999
4262
  constructor(data: MapDataInternal, options: {
4000
- floorId: string;
4001
- mvfData: NodeCollection['features'][number];
4263
+ mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]> | Record<string, Feature<Point, MVFConnection>>;
4264
+ accessible?: boolean;
4002
4265
  });
4003
- get locations(): EnterpriseLocation[];
4004
4266
  /**
4005
- * Gets the {@link Floor} associated with the node.
4267
+ * Gets the name of the connection.
4006
4268
  *
4007
- * @returns {Floor} The floor object.
4008
- * @throws Will throw an error if the floor is not found.
4269
+ * @returns {string} The name of the connection.
4009
4270
  */
4010
- get floor(): Floor;
4271
+ get name(): string;
4272
+ get description(): string;
4011
4273
  /**
4012
- * Gets the {@link Coordinate} of the node.
4274
+ * Whether the connection is accessible. For example elevators are accessible while stairs are not.
4013
4275
  *
4014
- * @returns {Coordinate} The node's coordinate.
4276
+ * @returns {boolean} Whether the connection is accessible.
4015
4277
  */
4016
- get coordinate(): Coordinate;
4278
+ get accessible(): boolean;
4017
4279
  /**
4018
- * Gets the external ID of the node.
4280
+ * Gets the external ID of the connection.
4019
4281
  *
4020
- * @returns {string} The external ID of the node.
4282
+ * @returns {string} The external ID of the connection.
4021
4283
  */
4022
4284
  get externalId(): string;
4023
4285
  /**
4024
- * Gets the neighboring nodes of this node.
4286
+ /**
4287
+ * Gets the type of the connection.
4025
4288
  *
4026
- * @returns {Node[]} An array of neighboring Node objects.
4289
+ * @returns {string} The type of the connection.
4027
4290
  */
4028
- get neighbors(): Node[];
4291
+ get type(): string;
4029
4292
  /**
4030
- * Gets the underlying GeoJSON Feature representation of this Node.
4293
+ * Gets the coordinates ({@link Coordinate}) of the connection.
4294
+ *
4295
+ * @returns {Coordinate[]} An array of coordinates for the connection.
4031
4296
  */
4032
- get geoJSON(): {
4033
- properties: null;
4034
- type: import("@mappedin/mvf").FeatureType;
4035
- geometry: import("@mappedin/mvf").Point;
4036
- };
4297
+ get coordinates(): Coordinate[];
4037
4298
  /**
4038
- * Serializes the node data to JSON.
4299
+ * Gets the nodes ({@link Node}) associated with the connection.
4300
+ */
4301
+ get nodes(): Node[];
4302
+ /**
4303
+ * Gets the floors ({@link Floor}) associated with the connection.
4039
4304
  *
4040
- * @returns An object representing the node.
4305
+ * @returns {Floor[]} An array of floors for the connection.
4306
+ */
4307
+ get floors(): Floor[];
4308
+ /** @internal */
4309
+ get focusTarget(): Coordinate[];
4310
+ /**
4311
+ * Serializes the connection data to JSON.
4312
+ *
4313
+ * @returns An object representing the connection.
4041
4314
  */
4042
4315
  toJSON(): {
4043
4316
  id: string;
4044
- floor: string;
4045
- coordinate: {
4317
+ name: string;
4318
+ type: string;
4319
+ externalId: string;
4320
+ coordinates: {
4046
4321
  latitude: number;
4047
4322
  longitude: number;
4048
4323
  floor: string | undefined;
4049
- };
4050
- neighbors: string[];
4324
+ }[];
4325
+ floors: string[];
4051
4326
  };
4052
4327
  /**
4053
4328
  * Cleans up resources used by the instance.
@@ -4056,94 +4331,113 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
4056
4331
  */
4057
4332
  destroy(): void;
4058
4333
  }
4059
- export default Node;
4334
+ export default Connection;
4060
4335
  }
4061
4336
 
4062
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
4063
- import type { AreaCollection } from '@mappedin/mvf';
4064
- import { Coordinate, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4337
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4338
+ import type { ObstructionCollection } from '@mappedin/mvf';
4339
+ import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4340
+ import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4065
4341
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4066
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4067
4342
  import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4343
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4344
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
4068
4345
  /**
4069
- * An Area represents some grouping of multiple pieces of geometry, not
4070
- * necessarily bounded by walls or any other physical feature of the map.
4346
+ * A class representing generic map object data within the map.
4071
4347
  *
4072
- * Areas are currently in a preview state, and may have changes to existing
4073
- * functionality or new features added in the future.
4348
+ * It could represent various objects on the map, such as desks, chairs, etc.
4349
+ *
4350
+ * MapObject appearance can be customized by changing the color or adding a texture to its top or sides.
4351
+ * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4074
4352
  */
4075
- class Area extends BaseMapData implements IGeoJSONData {
4353
+ export class MapObject extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
4076
4354
  #private;
4077
4355
  /**
4078
4356
  * @internal
4079
4357
  */
4080
- static readonly __type = "area";
4358
+ static readonly __type = "object";
4081
4359
  /**
4082
4360
  * @internal
4083
4361
  */
4084
- readonly __type = "area";
4362
+ readonly __type = "object";
4085
4363
  /**
4086
- * Checks if the provided instance is of type Area.
4364
+ * Checks if the provided instance is of type MapObject.
4087
4365
  *
4088
4366
  * @param instance The instance to check.
4089
- * @returns {boolean} True if the instance is a Area, false otherwise.
4367
+ * @returns {boolean} True if the instance is a MapObject, false otherwise.
4090
4368
  */
4091
- static is(instance: object): instance is Area;
4369
+ static is(instance: object): instance is MapObject;
4092
4370
  /**
4093
4371
  * @internal
4094
4372
  */
4095
4373
  constructor(data: MapDataInternal, options: {
4096
4374
  floorId: string;
4097
- mvfData: AreaCollection['features'][number];
4375
+ mvfData: ObstructionCollection['features'][number];
4098
4376
  });
4099
4377
  /**
4100
- * Gets the name of the area.
4378
+ * Gets the name of the MapObject.
4101
4379
  *
4102
- * @returns {string} The name of the area.
4380
+ * @returns {string} The name of the object.
4103
4381
  */
4104
4382
  get name(): string;
4105
4383
  /**
4106
- * Gets the external identifier of the area.
4384
+ * Gets the external ID of the MapObject.
4107
4385
  *
4108
- * @returns {string} The external ID of the area, or an empty string if no external ID exists.
4386
+ * @returns {string} The external ID of the object.
4109
4387
  */
4110
4388
  get externalId(): string;
4111
4389
  /**
4112
- * Gets the description of the area.
4390
+ * Gets the description of the MapObject.
4113
4391
  *
4114
- * @returns {string} The description of the area, or an empty string if no description exists.
4392
+ * @returns {string} The description of the object.
4115
4393
  */
4116
4394
  get description(): string;
4117
4395
  /**
4118
- * Gets the center {@link Coordinate} of the area.
4396
+ * Gets the type of the MapObject.
4119
4397
  *
4120
- * @returns {Coordinate} The area's center coordinate.
4398
+ * @returns {string} The kind of the object.
4121
4399
  */
4122
- get center(): Coordinate;
4400
+ get type(): string;
4123
4401
  /**
4124
- * Gets the {@link Floor} object associated with the area.
4402
+ * Gets the {@link Floor} associated with the MapObject.
4125
4403
  *
4126
4404
  * @returns {Floor} The floor object.
4127
4405
  * @throws Will throw an error if the floor is not found.
4128
4406
  */
4129
4407
  get floor(): Floor;
4130
4408
  /**
4131
- * Gets the underlying GeoJSON Feature representation of this Area.
4409
+ * Gets the center {@link Coordinate} of the MapObject.
4410
+ *
4411
+ * @returns {Coordinate} The object's center coordinate.
4412
+ */
4413
+ get center(): Coordinate;
4414
+ /**
4415
+ * Gets the underlying GeoJSON Feature representation of this Object.
4132
4416
  */
4133
4417
  get geoJSON(): {
4134
4418
  properties: null;
4135
4419
  type: import("@mappedin/mvf").FeatureType;
4136
- geometry: import("@mappedin/mvf").Polygon;
4420
+ geometry: import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon;
4137
4421
  };
4422
+ /** @internal */
4423
+ get anchorTarget(): Coordinate;
4424
+ /** @internal */
4425
+ get focusTarget(): Coordinate | this;
4138
4426
  /**
4139
- * Serializes the space data to JSON.
4427
+ * Serializes the MapObject data to JSON.
4140
4428
  *
4141
- * @returns An object representing the space.
4429
+ * @returns An object representing the MapObject.
4142
4430
  */
4143
4431
  toJSON(): {
4144
4432
  id: string;
4145
4433
  name: string;
4434
+ type: string;
4146
4435
  floor: string;
4436
+ center: {
4437
+ latitude: number;
4438
+ longitude: number;
4439
+ floor: string | undefined;
4440
+ };
4147
4441
  };
4148
4442
  /**
4149
4443
  * Cleans up resources used by the instance.
@@ -4152,125 +4446,78 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
4152
4446
  */
4153
4447
  destroy(): void;
4154
4448
  }
4155
- export default Area;
4449
+ export default MapObject;
4156
4450
  }
4157
4451
 
4158
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
4159
- import type { EntranceCollection } from '@mappedin/mvf';
4160
- import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4161
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4162
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4163
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4164
- import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4452
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate' {
4453
+ import type { IFocusable, IAnchorable } from '@mappedin/react-sdk/mappedin-js/src/types';
4165
4454
  /**
4166
- * A class representing door data within the map.
4167
- *
4168
- * Doors are hidden by default. Doors can be made visible by setting their `visible` property to `true`.
4169
- *
4170
- * ```typescript
4171
- * //Make interior doors visible and brown.
4172
- * mapView.updateState(DOORS.Interior, {
4173
- * visible: true,
4174
- * color: '#5C4033',
4175
- * opacity: 0.6,
4176
- * });
4177
-
4178
- * //Make exterior doors visible and black.
4179
- * mapView.updateState(DOORS.Exterior, {
4180
- * visible: true,
4181
- * color: 'black',
4182
- * opacity: 0.6,
4183
- * });
4184
- * ```
4185
- * Doors can also be made visible on an individual basis by passing in a {@link Door} object to {@link MapView.updateState}.
4186
- *
4187
- * Refer to the [Door Guide](https://developer.mappedin.com/web-sdk/spaces#doors) for more information and interactive examples.
4188
- *
4189
- * Door appearance can be customized by changing the color or adding a texture to the top or sides of a door.
4190
- * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4455
+ * Class representing a pseudo-mercator coordinate.
4191
4456
  *
4457
+ * The Pseudo-Mercator projection is a type of cylindrical and conformal map projection.
4458
+ * It is identified as EPSG:3857 ({@link https://epsg.io/3857}).
4459
+ * This projection is a modified version of the traditional Mercator projection,
4460
+ * which is commonly used in marine navigation.
4192
4461
  */
4193
- class Door extends BaseMapData implements IGeoJSONData {
4194
- #private;
4462
+ class Coordinate implements IFocusable, IAnchorable {
4195
4463
  /**
4196
4464
  * @internal
4197
4465
  */
4198
- static readonly __type = "door";
4466
+ static readonly __type = "coordinate";
4199
4467
  /**
4200
4468
  * @internal
4201
4469
  */
4202
- readonly __type = "door";
4203
- /**
4204
- * Checks if the provided instance is of type Door.
4205
- *
4206
- * @param instance The instance to check.
4207
- * @returns {boolean} True if the instance is a Door, false otherwise.
4208
- */
4209
- static is(instance: object): instance is Door;
4470
+ readonly __type = "coordinate";
4471
+ id: string;
4210
4472
  /**
4211
- * @internal
4473
+ * The latitude of the coordinate.
4474
+ * @type {number}
4212
4475
  */
4213
- constructor(data: MapDataInternal, options: {
4214
- floorId: string;
4215
- mvfData: EntranceCollection['features'][number];
4216
- });
4476
+ readonly latitude: number;
4217
4477
  /**
4218
- * Gets the name of the door.
4219
- *
4220
- * @returns {string} The name of the door.
4478
+ * The longitude of the coordinate.
4479
+ * @type {number}
4221
4480
  */
4222
- get name(): string;
4481
+ readonly longitude: number;
4223
4482
  /**
4224
- * Gets the external ID of the door.
4225
- *
4226
- * @returns {string} The external ID of the door.
4483
+ * The floor ID of the coordinate.
4227
4484
  */
4228
- get externalId(): string;
4485
+ readonly floorId?: string;
4229
4486
  /**
4230
- * Gets the description of the door.
4487
+ * Checks if the provided instance is of type Coordinate.
4231
4488
  *
4232
- * @returns {string} The description of the door.
4489
+ * @param instance The instance to check.
4490
+ * @returns {boolean} True if the instance is a Coordinate, false otherwise.
4233
4491
  */
4234
- get description(): string;
4492
+ static is(instance: object): instance is Coordinate;
4235
4493
  /**
4236
- * Gets the {@link Floor} object associated with the door.
4237
- *
4238
- * @returns {Floor} The floor object.
4239
- * @throws Will throw an error if the floor is not found.
4494
+ * @internal
4240
4495
  */
4241
- get floor(): Floor;
4496
+ constructor(latitude: number, longitude: number, floorId?: string);
4242
4497
  /**
4243
- * Calculates and gets the center {@link Coordinate} of the door.
4244
- *
4245
- * @returns {Coordinate} The center coordinate.
4498
+ * @internal
4246
4499
  */
4247
- get center(): Coordinate;
4500
+ get anchorTarget(): this;
4248
4501
  /**
4249
- * Gets whether this door is an exterior door.
4502
+ * @internal
4250
4503
  */
4251
- get isExterior(): boolean;
4504
+ get focusTarget(): this;
4252
4505
  /**
4253
- * Gets the underlying GeoJSON Feature representation of this Door.
4506
+ * Checks if this coordinate is equal to another coordinate.
4507
+ *
4508
+ * @param coordinate The coordinate to compare with.
4509
+ * @returns {boolean} True if coordinates are equal, false otherwise.
4254
4510
  */
4255
- get geoJSON(): {
4256
- properties: null;
4257
- type: import("@mappedin/mvf").FeatureType;
4258
- geometry: import("@mappedin/mvf").LineString;
4259
- };
4511
+ isEqual(coordinate: Coordinate): boolean;
4260
4512
  /**
4261
- * Converts the door information to a JSON object.
4513
+ * Serializes the coordinate data to JSON.
4262
4514
  *
4263
- * @returns An object representing the door.
4515
+ * @returns An object representing the coordinate.
4264
4516
  */
4265
4517
  toJSON(): {
4266
- id: string;
4267
- name: string;
4268
- floor: string;
4269
- center: {
4270
- latitude: number;
4271
- longitude: number;
4272
- floor: string | undefined;
4273
- };
4518
+ latitude: number;
4519
+ longitude: number;
4520
+ floor: string | undefined;
4274
4521
  };
4275
4522
  /**
4276
4523
  * Cleans up resources used by the instance.
@@ -4279,125 +4526,99 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
4279
4526
  */
4280
4527
  destroy(): void;
4281
4528
  }
4282
- export default Door;
4529
+ export default Coordinate;
4283
4530
  }
4284
4531
 
4285
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4286
- import type { SpaceCollection } from '@mappedin/mvf';
4532
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
4533
+ import type { FeatureCollection, Point, SpaceProperties } from '@mappedin/mvf';
4534
+ import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4287
4535
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4288
- import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4289
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4290
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4291
- import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
4292
4536
  import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4537
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4538
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
4293
4539
  /**
4294
- * Represents the various types of spaces that can be defined within a map.
4295
- * - 'room': A standard room or enclosed area.
4296
- * - 'hallway': A passageway connecting rooms.
4297
- * - 'exterior': An outdoor area.
4298
- * - 'void': An undefined or non-specific space.
4299
- * - 'connection.stairs': A stairway connecting different floors.
4300
- * - 'connection.elevator': An elevator connecting different floors.
4301
- * - 'poi': A point of interest within the map.
4302
- */
4303
- export type TSpaceType = 'room' | 'hallway' | 'exterior' | 'void' | 'connection.stairs' | 'connection.elevator' | 'poi';
4304
- /**
4305
- * 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.
4306
- * Spaces can also be customized with a color, texture and hover color.
4540
+ * A class representing point of interest data within the map.
4307
4541
  *
4308
- * Refer to the [Spaces Guide](https://developer.mappedin.com/web-sdk/spaces) for more information and interactive examples.
4542
+ * Points of interest are used to represent specific points
4543
+ * on the map with additional information(e.g. ATMs, Water Fountains).
4309
4544
  */
4310
- class Space extends BaseMapData implements IGeoJSONData {
4545
+ class PointOfInterest extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
4311
4546
  #private;
4312
4547
  /**
4313
4548
  * @internal
4314
4549
  */
4315
- static readonly __type = "space";
4550
+ static readonly __type = "point-of-interest";
4316
4551
  /**
4317
4552
  * @internal
4318
4553
  */
4319
- readonly __type = "space";
4320
- getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point, import("@mappedin/mvf").SpaceProperties>;
4554
+ readonly __type = "point-of-interest";
4321
4555
  /**
4322
- * Checks if the provided instance is of type Space.
4556
+ * Checks if the provided instance is of type PointOfInterest.
4323
4557
  *
4324
4558
  * @param instance The instance to check.
4325
- * @returns {boolean} True if the instance is a Space, false otherwise.
4559
+ * @returns {boolean} True if the instance is a PointOfInterest, false otherwise.
4326
4560
  */
4327
- static is(instance: object): instance is Space;
4561
+ static is(instance: object): instance is PointOfInterest;
4328
4562
  /**
4329
4563
  * @internal
4330
4564
  */
4331
4565
  constructor(data: MapDataInternal, options: {
4332
4566
  floorId: string;
4333
- mvfData: SpaceCollection['features'][number];
4567
+ mvfData: FeatureCollection<Point, SpaceProperties>['features'][number];
4334
4568
  });
4335
4569
  /**
4336
- * Gets the name of the space.
4570
+ * Gets the name of the POI.
4337
4571
  *
4338
- * @returns {string} The name of the space.
4572
+ * @returns {string} The name of the POI.
4339
4573
  */
4340
4574
  get name(): string;
4341
4575
  /**
4342
- * Gets the type/kind of the space.
4343
- *
4344
- * @returns {TSpaceType} The type of the space.
4345
- */
4346
- get type(): TSpaceType;
4347
- /**
4348
- * Gets the description of the space.
4576
+ * Gets the description of the POI.
4349
4577
  *
4350
- * @returns {string} The description of the space, or an empty string if no description exists.
4578
+ * @returns {string} The description of the POI.
4351
4579
  */
4352
4580
  get description(): string;
4353
4581
  /**
4354
- * Gets the external identifier of the space.
4355
- *
4356
- * @returns {string} The external ID of the space, or an empty string if no external ID exists.
4357
- */
4358
- get externalId(): string;
4359
- /**
4360
- * @internal
4361
- */
4362
- get locations(): EnterpriseLocation[];
4363
- /**
4364
- * Gets the {@link Floor} object associated with the space.
4582
+ * Gets the {@link Floor} object associated with the POI.
4365
4583
  *
4366
4584
  * @returns {Floor} The floor object.
4367
4585
  * @throws Will throw an error if the floor is not found.
4368
4586
  */
4369
4587
  get floor(): Floor;
4370
4588
  /**
4371
- * Gets the array of {@link Door}s associated with the space.
4589
+ * Gets the {@link Coordinate} of the POI.
4372
4590
  *
4373
- * @returns {Door[]} The doors array.
4591
+ * @returns {Coordinate} The POI's coordinate.
4374
4592
  */
4375
- get doors(): Door[];
4593
+ get coordinate(): Coordinate;
4376
4594
  /**
4377
- * Gets the center {@link Coordinate} of the space.
4595
+ * Gets the external ID of the POI.
4378
4596
  *
4379
- * @returns {Coordinate} The space's center coordinate.
4597
+ * @returns {string} The external ID of the POI.
4380
4598
  */
4381
- get center(): Coordinate;
4599
+ get externalId(): string;
4382
4600
  /**
4383
- * Gets the underlying GeoJSON Feature representation of this Space.
4601
+ * Gets the underlying GeoJSON Feature representation of this PointOfInterest.
4384
4602
  */
4385
4603
  get geoJSON(): {
4386
4604
  properties: null;
4387
4605
  type: import("@mappedin/mvf").FeatureType;
4388
- geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point;
4606
+ geometry: Point;
4389
4607
  };
4608
+ /** @internal */
4609
+ get focusTarget(): Coordinate;
4610
+ /** @internal */
4611
+ get anchorTarget(): Coordinate;
4390
4612
  /**
4391
- * Serializes the space data to JSON.
4613
+ * Serializes the POI data to JSON.
4392
4614
  *
4393
- * @returns An object representing the space.
4615
+ * @returns An object representing the POI.
4394
4616
  */
4395
4617
  toJSON(): {
4396
4618
  id: string;
4397
4619
  name: string;
4398
- type: TSpaceType;
4399
4620
  floor: string;
4400
- center: {
4621
+ coordinate: {
4401
4622
  latitude: number;
4402
4623
  longitude: number;
4403
4624
  floor: string | undefined;
@@ -4410,121 +4631,161 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4410
4631
  */
4411
4632
  destroy(): void;
4412
4633
  }
4413
- export const VALID_SPACE_TYPES: TSpaceType[];
4414
- /**
4415
- * validates space type and fallback to room
4416
- */
4417
- export function validateSpaceType(input: string | null | undefined): TSpaceType;
4418
- export default Space;
4634
+ export default PointOfInterest;
4419
4635
  }
4420
4636
 
4421
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
4422
- import type { FloorProperties as MVFFloor } from '@mappedin/mvf';
4423
- import type { Annotation, Connection, Door, MapDataInternal, PointOfInterest, Space, MapObject, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4637
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation' {
4638
+ import type { AnnotationCollection } from '@mappedin/mvf';
4639
+ import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4640
+ import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4424
4641
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4642
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4643
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
4425
4644
  /**
4426
- * A class representing floor data within the map.
4645
+ * A class representing annotation data within the map.
4427
4646
  *
4428
- * Floors are used to represent different levels within a map, each containing various map elements.
4647
+ * Annotations are used to mark specific points or areas on the map with additional information.
4648
+ * It includes some details on a map that may be relevant to safety or accessibility (e.g. Fire Extinguishers).
4649
+ * Refer to the [Annotation Guide](https://developer.mappedin.com/web-sdk/annotations) for more information.
4429
4650
  */
4430
- class Floor extends BaseMapData {
4651
+ class Annotation extends BaseMapData implements IGeoJSONData, IFocusable, IAnchorable {
4431
4652
  #private;
4432
4653
  /**
4433
4654
  * @internal
4434
4655
  */
4435
- static readonly __type = "floor";
4656
+ static readonly __type = "annotation";
4436
4657
  /**
4437
4658
  * @internal
4438
4659
  */
4439
- readonly __type = "floor";
4660
+ readonly __type = "annotation";
4440
4661
  /**
4441
- * Checks if the provided instance is of type Floor.
4662
+ * Checks if the provided instance is of type Annotation.
4442
4663
  *
4443
4664
  * @param instance The instance to check.
4444
- * @returns {boolean} True if the instance is a Floor, false otherwise.
4665
+ * @returns {boolean} True if the instance is an Annotation, false otherwise.
4445
4666
  */
4446
- static is(instance: object): instance is Floor;
4667
+ static is(instance: object): instance is Annotation;
4447
4668
  /**
4448
4669
  * @internal
4449
4670
  */
4450
4671
  constructor(data: MapDataInternal, options: {
4451
- mvfData: MVFFloor;
4672
+ floorId: string;
4673
+ mvfData: AnnotationCollection['features'][number];
4452
4674
  });
4453
4675
  /**
4454
- * Gets the name of the floor.
4676
+ * Gets the group of the annotation.
4455
4677
  *
4456
- * @returns {string} The name of the floor.
4678
+ * @returns {string} The annotation group.
4457
4679
  */
4458
- get name(): string;
4680
+ get group(): string;
4459
4681
  /**
4460
- * Gets the external ID of the floor.
4682
+ * Gets the type of the annotation.
4461
4683
  *
4462
- * @returns {string} The external ID of the floor.
4684
+ * @returns {string} The annotation type.
4463
4685
  */
4464
- get externalId(): string;
4686
+ get type(): string;
4465
4687
  /**
4466
- * Gets the elevation of the floor.
4688
+ * Gets the external ID of the annotation.
4467
4689
  *
4468
- * @returns {number} The elevation of the floor.
4690
+ * @returns {string} The external ID of the annotation.
4469
4691
  */
4470
- get elevation(): number;
4692
+ get externalId(): string;
4471
4693
  /**
4472
- * Gets the spaces ({@link Space}) located on this floor.
4694
+ * Gets the center {@link Coordinate} of the annotation.
4473
4695
  *
4474
- * @returns {Space[]} An array of Space objects on this floor.
4696
+ * @returns {Coordinate} The annotation's coordinate.
4475
4697
  */
4476
- get spaces(): Space[];
4698
+ get coordinate(): Coordinate;
4477
4699
  /**
4478
- * Gets the objects ({@link MapObject}) located on this floor.
4700
+ * Gets the {@link Floor} object associated with the annotation.
4479
4701
  *
4480
- * @returns {MapObject[]} An array of MapObject objects on this floor.
4702
+ * @returns {Floor} The floor object.
4703
+ * @throws Will throw an error if the floor is not found.
4481
4704
  */
4482
- get objects(): MapObject[];
4705
+ get floor(): Floor;
4483
4706
  /**
4484
- * Gets the connections ({@link Connection}) associated with this floor.
4707
+ * Gets the underlying GeoJSON Feature representation of this Annotation.
4708
+ */
4709
+ get geoJSON(): {
4710
+ properties: null;
4711
+ type: import("@mappedin/mvf").FeatureType;
4712
+ geometry: import("@mappedin/mvf").Point;
4713
+ };
4714
+ /** @internal */
4715
+ get focusTarget(): Coordinate;
4716
+ /** @internal */
4717
+ get anchorTarget(): Coordinate;
4718
+ /**
4719
+ * Converts the annotation information to a JSON object.
4485
4720
  *
4486
- * @returns {Connection[]} An array of Connection objects linked to this floor.
4721
+ * @returns An object representing the annotation.
4487
4722
  */
4488
- get connections(): Connection[];
4723
+ toJSON(): {
4724
+ id: string;
4725
+ group: string;
4726
+ type: string;
4727
+ coordinate: {
4728
+ latitude: number;
4729
+ longitude: number;
4730
+ floor: string | undefined;
4731
+ };
4732
+ };
4489
4733
  /**
4490
- * Gets the doors ({@link Door}) located on this floor.
4734
+ * Cleans up resources used by the instance.
4491
4735
  *
4492
- * @returns {Door[]} An array of Door objects on this floor.
4736
+ * @internal
4493
4737
  */
4494
- get doors(): Door[];
4738
+ destroy(): void;
4739
+ }
4740
+ export default Annotation;
4741
+ }
4742
+
4743
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/hyperlink' {
4744
+ import type { Hyperlink as MVFHyperlink } from '@mappedin/mvf';
4745
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
4746
+ /**
4747
+ * A class representing hyperlink link data within the map.
4748
+ */
4749
+ class Hyperlink extends BaseMetaData {
4750
+ #private;
4495
4751
  /**
4496
- * Gets the annotations ({@link Annotation}) associated with this floor.
4752
+ * @internal
4753
+ */
4754
+ static readonly __type = "hyperlink";
4755
+ /**
4756
+ * Checks if the provided instance is of type Hyperlink.
4497
4757
  *
4498
- * @returns {Annotation[]} An array of Annotation objects linked to this floor.
4758
+ * @param instance The instance to check.
4759
+ * @returns {boolean} True if the instance is a Hyperlink, false otherwise.
4499
4760
  */
4500
- get annotations(): Annotation[];
4761
+ static is(instance: object): instance is Hyperlink;
4501
4762
  /**
4502
- * Gets the points of interest ({@link PointOfInterest}) located on this floor.
4763
+ * @internal
4764
+ */
4765
+ constructor(options: {
4766
+ mvfData: MVFHyperlink;
4767
+ });
4768
+ /**
4769
+ * Gets the url of the hyperlink.
4503
4770
  *
4504
- * @returns {PointOfInterest[]} An array of PointOfInterest objects on this floor.
4771
+ * @returns {string} The url of the hyperlink.
4505
4772
  */
4506
- get pois(): PointOfInterest[];
4773
+ get url(): string;
4507
4774
  /**
4508
- * Gets the FloorStack ({@link FloorStack}) that this floor belongs to.
4775
+ * Gets the name of the hyperlink.
4509
4776
  *
4510
- * @returns {FloorStack} The FloorStack that this floor belongs to.
4777
+ * @returns {string | undefined } The name of the hyperlink.
4511
4778
  */
4512
- get floorStack(): FloorStack;
4779
+ get name(): string | undefined;
4513
4780
  /**
4514
- * Serializes the floor data to JSON.
4781
+ * Serializes the hyperlink data to JSON.
4515
4782
  *
4516
- * @returns An object representing the floor.
4783
+ * @returns An object representing the hyperlink.
4517
4784
  */
4518
4785
  toJSON(): {
4519
4786
  id: string;
4520
- name: string;
4521
- elevation: number;
4522
- spaces: string[];
4523
- objects: string[];
4524
- connections: string[];
4525
- doors: string[];
4526
- annotations: string[];
4527
- pois: string[];
4787
+ url: string;
4788
+ name: string | undefined;
4528
4789
  };
4529
4790
  /**
4530
4791
  * Cleans up resources used by the instance.
@@ -4533,283 +4794,145 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
4533
4794
  */
4534
4795
  destroy(): void;
4535
4796
  }
4536
- export default Floor;
4797
+ export default Hyperlink;
4537
4798
  }
4538
4799
 
4539
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection' {
4540
- import type { Feature, FeatureCollection, Point, SpaceProperties, Connection as MVFConnection } from '@mappedin/mvf';
4541
- import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4542
- import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
4543
- import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4544
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4800
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image' {
4801
+ import type { Image as MVFImage } from '@mappedin/mvf';
4802
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
4545
4803
  /**
4546
- * A class representing connection data within the map.
4547
- *
4548
- * Connections are used to represent pathways between different map nodes.
4804
+ * A class representing image link data within the map.
4549
4805
  */
4550
- class Connection extends BaseMapData {
4806
+ class Image extends BaseMetaData {
4551
4807
  #private;
4552
4808
  /**
4553
4809
  * @internal
4554
4810
  */
4555
- static readonly __type = "connection";
4556
- /**
4557
- * @internal
4558
- */
4559
- readonly __type = "connection";
4811
+ static readonly __type = "image";
4560
4812
  /**
4561
- * Checks if the provided instance is of type Connection.
4813
+ * Checks if the provided instance is of type Image.
4562
4814
  *
4563
4815
  * @param instance The instance to check.
4564
- * @returns {boolean} True if the instance is a Connection, false otherwise.
4816
+ * @returns {boolean} True if the instance is a Image, false otherwise.
4565
4817
  */
4566
- static is(instance: object): instance is Connection;
4818
+ static is(instance: object): instance is Image;
4567
4819
  /**
4568
4820
  * @internal
4569
4821
  */
4570
- constructor(data: MapDataInternal, options: {
4571
- mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]> | Record<string, Feature<Point, MVFConnection>>;
4572
- accessible?: boolean;
4822
+ constructor(options: {
4823
+ mvfData: MVFImage;
4573
4824
  });
4574
4825
  /**
4575
- * Gets the name of the connection.
4826
+ * Gets the url of the image.
4576
4827
  *
4577
- * @returns {string} The name of the connection.
4828
+ * @returns {string | undefined} The url of the image.
4578
4829
  */
4579
- get name(): string;
4580
- get description(): string;
4830
+ get url(): string | undefined;
4581
4831
  /**
4582
- * Whether the connection is accessible. For example elevators are accessible while stairs are not.
4832
+ * Gets the alt text of the image.
4583
4833
  *
4584
- * @returns {boolean} Whether the connection is accessible.
4834
+ * @returns {string | undefined } The alt text of the image.
4835
+ * @deprecated Use {@link altText} instead.
4585
4836
  */
4586
- get accessible(): boolean;
4837
+ get name(): string | undefined;
4587
4838
  /**
4588
- * Gets the external ID of the connection.
4839
+ * Gets the alt text of the image.
4589
4840
  *
4590
- * @returns {string} The external ID of the connection.
4841
+ * @returns {string | undefined } The alt text of the image.
4591
4842
  */
4592
- get externalId(): string;
4843
+ get altText(): string | undefined;
4593
4844
  /**
4594
4845
  /**
4595
- * Gets the type of the connection.
4846
+ * Serializes the image data to JSON.
4596
4847
  *
4597
- * @returns {string} The type of the connection.
4848
+ * @returns An object representing the image.
4598
4849
  */
4599
- get type(): string;
4850
+ toJSON(): {
4851
+ id: string;
4852
+ url: string | undefined;
4853
+ name: string | undefined;
4854
+ };
4600
4855
  /**
4601
- * Gets the coordinates ({@link Coordinate}) of the connection.
4856
+ * Cleans up resources used by the instance.
4602
4857
  *
4603
- * @returns {Coordinate[]} An array of coordinates for the connection.
4858
+ * @internal
4604
4859
  */
4605
- get coordinates(): Coordinate[];
4606
- /**
4607
- * Gets the nodes ({@link Node}) associated with the connection.
4608
- */
4609
- get nodes(): Node[];
4610
- /**
4611
- * Gets the floors ({@link Floor}) associated with the connection.
4612
- *
4613
- * @returns {Floor[]} An array of floors for the connection.
4614
- */
4615
- get floors(): Floor[];
4616
- /**
4617
- * Serializes the connection data to JSON.
4618
- *
4619
- * @returns An object representing the connection.
4620
- */
4621
- toJSON(): {
4622
- id: string;
4623
- name: string;
4624
- type: string;
4625
- externalId: string;
4626
- coordinates: {
4627
- latitude: number;
4628
- longitude: number;
4629
- floor: string | undefined;
4630
- }[];
4631
- floors: string[];
4632
- };
4633
- /**
4634
- * Cleans up resources used by the instance.
4635
- *
4636
- * @internal
4637
- */
4638
- destroy(): void;
4639
- }
4640
- export default Connection;
4641
- }
4642
-
4643
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4644
- import type { ObstructionCollection } from '@mappedin/mvf';
4645
- import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4646
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4647
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4648
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4649
- import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4650
- /**
4651
- * A class representing generic map object data within the map.
4652
- *
4653
- * It could represent various objects on the map, such as desks, chairs, etc.
4654
- *
4655
- * MapObject appearance can be customized by changing the color or adding a texture to its top or sides.
4656
- * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4657
- */
4658
- export class MapObject extends BaseMapData implements IGeoJSONData {
4659
- #private;
4860
+ destroy(): void;
4861
+ }
4862
+ export default Image;
4863
+ }
4864
+
4865
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack' {
4866
+ import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
4867
+ import type { MapDataInternal, Floor, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4868
+ import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4869
+ /**
4870
+ * A class representing floor stack data within the map.
4871
+ *
4872
+ * FloorStacks are used to represent a group of floors that are part of a single entity.
4873
+ */
4874
+ class FloorStack extends BaseMapData {
4875
+ #private;
4660
4876
  /**
4661
4877
  * @internal
4662
4878
  */
4663
- static readonly __type = "object";
4879
+ static readonly __type = "floor-stack";
4664
4880
  /**
4665
4881
  * @internal
4666
4882
  */
4667
- readonly __type = "object";
4883
+ readonly __type = "floor-stack";
4668
4884
  /**
4669
- * Checks if the provided instance is of type MapObject.
4885
+ * Checks if the provided instance is of type FloorStack.
4670
4886
  *
4671
4887
  * @param instance The instance to check.
4672
- * @returns {boolean} True if the instance is a MapObject, false otherwise.
4888
+ * @returns {boolean} True if the instance is a FloorStack, false otherwise.
4673
4889
  */
4674
- static is(instance: object): instance is MapObject;
4890
+ static is(instance: object): instance is FloorStack;
4675
4891
  /**
4676
4892
  * @internal
4677
4893
  */
4678
4894
  constructor(data: MapDataInternal, options: {
4679
- floorId: string;
4680
- mvfData: ObstructionCollection['features'][number];
4895
+ mvfData: MVFFloorStack;
4896
+ facadeId?: string;
4681
4897
  });
4682
4898
  /**
4683
- * Gets the name of the MapObject.
4684
- *
4685
- * @returns {string} The name of the object.
4686
- */
4687
- get name(): string;
4688
- /**
4689
- * Gets the external ID of the MapObject.
4690
- *
4691
- * @returns {string} The external ID of the object.
4899
+ * Gets the type of FloorStack.
4692
4900
  */
4693
- get externalId(): string;
4901
+ get type(): MVFFloorStack['type'];
4694
4902
  /**
4695
- * Gets the description of the MapObject.
4903
+ * Gets the name of the FloorStack.
4696
4904
  *
4697
- * @returns {string} The description of the object.
4905
+ * @returns {string} The name of the FloorStack.
4698
4906
  */
4699
- get description(): string;
4907
+ get name(): string;
4700
4908
  /**
4701
- * Gets the type of the MapObject.
4702
- *
4703
- * @returns {string} The kind of the object.
4909
+ * Gets the externalId of FloorStack
4704
4910
  */
4705
- get type(): string;
4911
+ get externalId(): string;
4706
4912
  /**
4707
- * Gets the {@link Floor} associated with the MapObject.
4913
+ * Gets the floors ({@link Floor}) included in this FloorStack.
4708
4914
  *
4709
- * @returns {Floor} The floor object.
4710
- * @throws Will throw an error if the floor is not found.
4915
+ * @returns {Floor[]} An array of Floor objects in this FloorStack.
4711
4916
  */
4712
- get floor(): Floor;
4917
+ get floors(): [Floor, ...Floor[]];
4713
4918
  /**
4714
- * Gets the center {@link Coordinate} of the MapObject.
4715
- *
4716
- * @returns {Coordinate} The object's center coordinate.
4919
+ * Get the default floor for this floor stack
4717
4920
  */
4718
- get center(): Coordinate;
4921
+ get defaultFloor(): Floor;
4719
4922
  /**
4720
- * Gets the underlying GeoJSON Feature representation of this Object.
4923
+ * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
4721
4924
  */
4722
- get geoJSON(): {
4723
- properties: null;
4724
- type: import("@mappedin/mvf").FeatureType;
4725
- geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString;
4726
- };
4925
+ get facade(): Facade | undefined;
4727
4926
  /**
4728
- * Serializes the MapObject data to JSON.
4927
+ * Serializes the FloorStack data to JSON.
4729
4928
  *
4730
- * @returns An object representing the MapObject.
4929
+ * @returns An object representing the FloorStack.
4731
4930
  */
4732
4931
  toJSON(): {
4733
4932
  id: string;
4734
4933
  name: string;
4735
- type: string;
4736
- floor: string;
4737
- center: {
4738
- latitude: number;
4739
- longitude: number;
4740
- floor: string | undefined;
4741
- };
4742
- };
4743
- /**
4744
- * Cleans up resources used by the instance.
4745
- *
4746
- * @internal
4747
- */
4748
- destroy(): void;
4749
- }
4750
- export default MapObject;
4751
- }
4752
-
4753
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate' {
4754
- /**
4755
- * Class representing a pseudo-mercator coordinate.
4756
- *
4757
- * The Pseudo-Mercator projection is a type of cylindrical and conformal map projection.
4758
- * It is identified as EPSG:3857 ({@link https://epsg.io/3857}).
4759
- * This projection is a modified version of the traditional Mercator projection,
4760
- * which is commonly used in marine navigation.
4761
- */
4762
- class Coordinate {
4763
- /**
4764
- * @internal
4765
- */
4766
- static readonly __type = "coordinate";
4767
- /**
4768
- * @internal
4769
- */
4770
- readonly __type = "coordinate";
4771
- id: string;
4772
- /**
4773
- * The latitude of the coordinate.
4774
- * @type {number}
4775
- */
4776
- readonly latitude: number;
4777
- /**
4778
- * The longitude of the coordinate.
4779
- * @type {number}
4780
- */
4781
- readonly longitude: number;
4782
- /**
4783
- * The floor ID of the coordinate.
4784
- */
4785
- readonly floorId?: string;
4786
- /**
4787
- * Checks if the provided instance is of type Coordinate.
4788
- *
4789
- * @param instance The instance to check.
4790
- * @returns {boolean} True if the instance is a Coordinate, false otherwise.
4791
- */
4792
- static is(instance: object): instance is Coordinate;
4793
- /**
4794
- * @internal
4795
- */
4796
- constructor(latitude: number, longitude: number, floorId?: string);
4797
- /**
4798
- * Checks if this coordinate is equal to another coordinate.
4799
- *
4800
- * @param coordinate The coordinate to compare with.
4801
- * @returns {boolean} True if coordinates are equal, false otherwise.
4802
- */
4803
- isEqual(coordinate: Coordinate): boolean;
4804
- /**
4805
- * Serializes the coordinate data to JSON.
4806
- *
4807
- * @returns An object representing the coordinate.
4808
- */
4809
- toJSON(): {
4810
- latitude: number;
4811
- longitude: number;
4812
- floor: string | undefined;
4934
+ type: "Building" | "Outdoor" | undefined;
4935
+ floors: string[];
4813
4936
  };
4814
4937
  /**
4815
4938
  * Cleans up resources used by the instance.
@@ -4818,321 +4941,332 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate'
4818
4941
  */
4819
4942
  destroy(): void;
4820
4943
  }
4821
- export default Coordinate;
4944
+ export default FloorStack;
4822
4945
  }
4823
4946
 
4824
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
4825
- import type { FeatureCollection, Point, SpaceProperties } from '@mappedin/mvf';
4826
- import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4827
- import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4947
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade' {
4948
+ import type { Space, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4949
+ import { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4828
4950
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4829
- import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4951
+ import type { Facade as MVFFacade } from '@mappedin/mvf';
4952
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
4830
4953
  /**
4831
- * A class representing point of interest data within the map.
4832
- *
4833
- * Points of interest are used to represent specific points
4834
- * on the map with additional information(e.g. ATMs, Water Fountains).
4954
+ * A Facade is a collection of spaces that make up the exterior representation of a Floor Stack ({@link FloorStack}).
4835
4955
  */
4836
- class PointOfInterest extends BaseMapData implements IGeoJSONData {
4956
+ class Facade extends BaseMapData implements IFocusable, IAnchorable {
4837
4957
  #private;
4958
+ static readonly __type = "facade";
4959
+ readonly __type = "facade";
4838
4960
  /**
4839
- * @internal
4840
- */
4841
- static readonly __type = "point-of-interest";
4842
- /**
4843
- * @internal
4844
- */
4845
- readonly __type = "point-of-interest";
4846
- /**
4847
- * Checks if the provided instance is of type PointOfInterest.
4961
+ * Checks if the provided instance is of type Floor.
4848
4962
  *
4849
4963
  * @param instance The instance to check.
4850
- * @returns {boolean} True if the instance is a PointOfInterest, false otherwise.
4851
- */
4852
- static is(instance: object): instance is PointOfInterest;
4853
- /**
4854
- * @internal
4964
+ * @returns {boolean} True if the instance is a Floor, false otherwise.
4855
4965
  */
4966
+ static is(instance: object): instance is Facade;
4967
+ /** @internal */
4856
4968
  constructor(data: MapDataInternal, options: {
4857
- floorId: string;
4858
- mvfData: FeatureCollection<Point, SpaceProperties>['features'][number];
4969
+ mvfData: MVFFacade;
4970
+ floorStackId: string;
4859
4971
  });
4860
4972
  /**
4861
- * Gets the name of the POI.
4862
- *
4863
- * @returns {string} The name of the POI.
4864
- */
4865
- get name(): string;
4866
- /**
4867
- * Gets the description of the POI.
4868
- *
4869
- * @returns {string} The description of the POI.
4973
+ * Gets the floor stack that this Facade represents.
4870
4974
  */
4871
- get description(): string;
4975
+ get floorStack(): import("./floor-stack").default;
4872
4976
  /**
4873
- * Gets the {@link Floor} object associated with the POI.
4874
- *
4875
- * @returns {Floor} The floor object.
4876
- * @throws Will throw an error if the floor is not found.
4977
+ * Gets the collection of spaces that make up this Facade.
4877
4978
  */
4878
- get floor(): Floor;
4979
+ get spaces(): Space[];
4879
4980
  /**
4880
- * Gets the {@link Coordinate} of the POI.
4881
- *
4882
- * @returns {Coordinate} The POI's coordinate.
4981
+ * Gets the center {@link Coordinate} of the Facade.
4883
4982
  */
4884
- get coordinate(): Coordinate;
4885
- /**
4886
- * Gets the external ID of the POI.
4887
- *
4888
- * @returns {string} The external ID of the POI.
4889
- */
4890
- get externalId(): string;
4891
- /**
4892
- * Gets the underlying GeoJSON Feature representation of this PointOfInterest.
4893
- */
4894
- get geoJSON(): {
4895
- properties: null;
4896
- type: import("@mappedin/mvf").FeatureType;
4897
- geometry: Point;
4983
+ get center(): Coordinate;
4984
+ /** @internal */
4985
+ get focusTarget(): Space[];
4986
+ /** @internal */
4987
+ get anchorTarget(): Coordinate;
4988
+ }
4989
+ export default Facade;
4990
+ }
4991
+
4992
+ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
4993
+ 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';
4994
+ import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4995
+ import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4996
+ export type MapDataRecords = {
4997
+ spacesById: Record<string, Space>;
4998
+ nodesById: Record<string, Node>;
4999
+ objectsById: Record<string, MapObject>;
5000
+ floorsById: Record<string, Floor>;
5001
+ floorStacksById: Record<string, FloorStack>;
5002
+ facadesById: Record<string, Facade>;
5003
+ facadesBySpaceId: Record<string, Facade>;
5004
+ connectionsById: Record<string, Connection>;
5005
+ doorsById: Record<string, Door>;
5006
+ doorsByNodeId: Record<string, Door>;
5007
+ poisById: Record<string, PointOfInterest>;
5008
+ annotationsById: Record<string, Annotation>;
5009
+ areasById: Record<AreaId, Area>;
5010
+ spacesByExternalId: Record<string, Space[]>;
5011
+ nodesByExternalId: Record<string, Node[]>;
5012
+ poisByExternalId: Record<string, PointOfInterest[]>;
5013
+ doorsByExternalId: Record<string, Door[]>;
5014
+ floorStacksByExternalId: Record<string, FloorStack[]>;
5015
+ floorsByExternalId: Record<string, Floor[]>;
5016
+ objectsByExternalId: Record<string, MapObject[]>;
5017
+ areasByExternalId: Record<string, Area[]>;
5018
+ spaceIdsByDestinationNodeId: Record<string, string[]>;
5019
+ objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5020
+ obstructionIdByEntranceId: Record<string, string>;
5021
+ connectionIdsByLatLon: Record<string, string[]>;
5022
+ mvfSpacesById: Record<string, SpaceCollection['features'][number]>;
5023
+ mvfNodesById: Record<string, NodeCollection['features'][number]>;
5024
+ mvfObstructionById: Record<string, ObstructionCollection['features'][number]>;
5025
+ mvfFloorsById: Record<string, MVFFloor>;
5026
+ mvfFloorStacksById: Record<string, MVFFloorStack>;
5027
+ mvfConnectionsById: Record<string, MVFConnection>;
5028
+ mvfConnectionsByNodeId: Record<string, MVFConnection>;
5029
+ mvfEntrancesById: Record<string, EntranceCollection['features'][number]>;
5030
+ mvfAnnotationsById: Record<string, AnnotationCollection['features'][number]>;
5031
+ mvfNodesByFloorId: {
5032
+ [floorId: string]: NodeCollection['features'][number][];
4898
5033
  };
4899
- /**
4900
- * Serializes the POI data to JSON.
4901
- *
4902
- * @returns An object representing the POI.
4903
- */
4904
- toJSON(): {
4905
- id: string;
4906
- name: string;
4907
- floor: string;
4908
- coordinate: {
4909
- latitude: number;
4910
- longitude: number;
4911
- floor: string | undefined;
4912
- };
5034
+ mvfSpacesByFloorId: {
5035
+ [floorId: string]: SpaceCollection['features'][number][];
4913
5036
  };
4914
- /**
4915
- * Cleans up resources used by the instance.
4916
- *
4917
- * @internal
4918
- */
4919
- destroy(): void;
4920
- }
4921
- export default PointOfInterest;
5037
+ mvfPoisByFloorId: {
5038
+ [floorId: string]: FeatureCollection<Point, SpaceProperties>['features'][number][];
5039
+ };
5040
+ mvfEntrancesByFloorId: {
5041
+ [floorId: string]: EntranceCollection['features'][number][];
5042
+ };
5043
+ mvfAnnotationsByFloorId: {
5044
+ [floorId: string]: AnnotationCollection['features'][number][];
5045
+ };
5046
+ mvfAreasById: Record<AreaId, AreaCollection['features'][number]>;
5047
+ };
5048
+ export type EnterpriseMapDataRecords = {
5049
+ connectionsByExternalId: Record<string, Connection[]>;
5050
+ locationsByExternalId: Record<string, EnterpriseLocation[]>;
5051
+ categoriesByExternalId: Record<string, EnterpriseCategory[]>;
5052
+ locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
5053
+ categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
5054
+ locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
5055
+ locationInstancesById: Record<string, EnterpriseLocationInstance>;
5056
+ venue: MVFEnterpriseVenue;
5057
+ mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
5058
+ mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5059
+ mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5060
+ };
5061
+ export const processMVFSpaces: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "spacesById" | "spacesByExternalId" | "spaceIdsByDestinationNodeId" | "poisById" | "poisByExternalId" | "mvfSpacesById" | "objectEntranceNodeIdsByObstructionId" | "connectionsById" | "connectionIdsByLatLon" | "mvfSpacesByFloorId" | "mvfPoisByFloorId">;
5062
+ export const processMVFNodes: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "nodesById" | "nodesByExternalId" | "mvfNodesById" | "mvfNodesByFloorId">;
5063
+ export const processMVFObstructions: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "objectsById" | "objectsByExternalId" | "mvfObstructionById" | "obstructionIdByEntranceId">;
5064
+ export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "floorsByExternalId" | "mvfFloorsById">;
5065
+ export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "floorStacksByExternalId" | "mvfFloorStacksById" | "facadesById" | "facadesBySpaceId">;
5066
+ export const processMVFConnections: (mvf: ParsedMVF) => Pick<MapDataRecords, "mvfConnectionsById" | "mvfConnectionsByNodeId">;
5067
+ export const processMVFEntrances: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "doorsById" | "doorsByExternalId" | "doorsByNodeId" | "mvfEntrancesById" | "mvfEntrancesByFloorId">;
5068
+ export const processMVFAnnotations: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "annotationsById" | "mvfAnnotationsById" | "mvfAnnotationsByFloorId">;
5069
+ export const processMVFAreas: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "areasById" | "areasByExternalId" | "mvfAreasById">;
5070
+ /**
5071
+ * @internal
5072
+ */
5073
+ export const createEnterpriseDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => EnterpriseMapDataRecords;
5074
+ /**
5075
+ * @internal
5076
+ */
5077
+ export const createDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => MapDataRecords;
4922
5078
  }
4923
5079
 
4924
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation' {
4925
- import type { AnnotationCollection } from '@mappedin/mvf';
4926
- import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4927
- import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4928
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4929
- import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
5080
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
5081
+ import type { EnterpriseLocation as MVFEnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
5082
+ import type { Coordinate, EnterpriseCategory, MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5083
+ import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
5084
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5085
+ import type { IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
4930
5086
  /**
4931
- * A class representing annotation data within the map.
5087
+ * An EnterpriseLocation contains metadata about a location, such as its name, description, logo, phone number, social medial links, hours of operation and more.
5088
+ * They can be accessed using the {@link MapData.getByType()} method as shown below.
4932
5089
  *
4933
- * Annotations are used to mark specific points or areas on the map with additional information.
4934
- * It includes some details on a map that may be relevant to safety or accessibility (e.g. Fire Extinguishers).
4935
- * Refer to the [Annotation Guide](https://developer.mappedin.com/web-sdk/annotations) for more information.
5090
+ * ```typescript
5091
+ * const allLocations = mapData.getByType('enterprise-location');
5092
+ * ```
5093
+ *
5094
+ * Refer to the [EnterpriseLocation Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-locations) for more information and interactive examples.
4936
5095
  */
4937
- class Annotation extends BaseMapData implements IGeoJSONData {
5096
+ class EnterpriseLocation extends BaseMetaData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links'>, IFocusable {
4938
5097
  #private;
4939
5098
  /**
4940
5099
  * @internal
4941
5100
  */
4942
- static readonly __type = "annotation";
5101
+ static readonly __type = "enterprise-location";
4943
5102
  /**
4944
5103
  * @internal
4945
5104
  */
4946
- readonly __type = "annotation";
5105
+ readonly __type = "enterprise-location";
4947
5106
  /**
4948
- * Checks if the provided instance is of type Annotation.
4949
- *
4950
- * @param instance The instance to check.
4951
- * @returns {boolean} True if the instance is an Annotation, false otherwise.
5107
+ * The description of the location.
4952
5108
  */
4953
- static is(instance: object): instance is Annotation;
5109
+ description?: string | undefined;
4954
5110
  /**
4955
- * @internal
5111
+ * The name of the location.
4956
5112
  */
4957
- constructor(data: MapDataInternal, options: {
4958
- floorId: string;
4959
- mvfData: AnnotationCollection['features'][number];
4960
- });
5113
+ name: string;
4961
5114
  /**
4962
- * Gets the group of the annotation.
4963
- *
4964
- * @returns {string} The annotation group.
5115
+ * The amenity of the location.
4965
5116
  */
4966
- get group(): string;
5117
+ amenity?: string | undefined;
4967
5118
  /**
4968
- * Gets the type of the annotation.
4969
- *
4970
- * @returns {string} The annotation type.
5119
+ * The external ID of the location.
4971
5120
  */
4972
- get type(): string;
5121
+ externalId: string;
4973
5122
  /**
4974
- * Gets the external ID of the annotation.
4975
- *
4976
- * @returns {string} The external ID of the annotation.
5123
+ * Extra properties of the location.
4977
5124
  */
4978
- get externalId(): string;
5125
+ extra?: Record<string, unknown> | undefined;
4979
5126
  /**
4980
- * Gets the center {@link Coordinate} of the annotation.
4981
- *
4982
- * @returns {Coordinate} The annotation's coordinate.
5127
+ * The gallery of the location.
4983
5128
  */
4984
- get coordinate(): Coordinate;
5129
+ gallery?: {
5130
+ caption?: string | null;
5131
+ image: string;
5132
+ embeddedUrl?: string | null;
5133
+ }[] | undefined;
4985
5134
  /**
4986
- * Gets the {@link Floor} object associated with the annotation.
5135
+ * Specific instances of this location with different properties.
5136
+ * Typically, there will be at least one node or polygon defined,
5137
+ * plus one or more other properties that are different from the parent.
5138
+ * The remaining properties will be the same as the parent.
5139
+
5140
+ * For example, suppose there is a location like this:
4987
5141
  *
4988
- * @returns {Floor} The floor object.
4989
- * @throws Will throw an error if the floor is not found.
4990
- */
4991
- get floor(): Floor;
4992
- /**
4993
- * Gets the underlying GeoJSON Feature representation of this Annotation.
4994
- */
4995
- get geoJSON(): {
4996
- properties: null;
4997
- type: import("@mappedin/mvf").FeatureType;
4998
- geometry: import("@mappedin/mvf").Point;
4999
- };
5000
- /**
5001
- * Converts the annotation information to a JSON object.
5142
+ * ```json
5143
+ * {
5144
+ * "id": "location-id-1",
5145
+ * "name": "Location 1",
5146
+ * "nodes": ["node-1", "node-2"],
5147
+ * "polygons": ["polygon-1", "polygon-2"],
5148
+ * "externalId": "externalId-1",
5149
+ * "description": "Description 1",
5150
+ * }
5151
+ * ```
5002
5152
  *
5003
- * @returns An object representing the annotation.
5153
+ * (Note that for clarity, this example puts strings in for nodes and polygons, but in practice they would be objects.)
5154
+ *
5155
+ * Then suppose it had an `instances` array that contained an object that looked like this:
5156
+ *
5157
+ * ```json
5158
+ * {
5159
+ * "id": "instance-id-1",
5160
+ * "name": "Location 1 - A",
5161
+ * "nodes": ["node-1"],
5162
+ * "polygons": ["polygon-1"],
5163
+ * "externalId": "externalId-1-A",
5164
+ * "description": "Description 1",
5165
+ * }
5166
+ * ```
5167
+ * 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`.
5168
+ * The ID will always be different, but other properties (like the description) are the same as the parent.
5169
+ *
5170
+ * Example use cases:
5171
+ * - 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
5172
+ * 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.
5173
+ * - An airport may have a location with several polygons and nodes, and an instance for each node (and corresponding polygon, if any) with a different siblingGroup. The location in the sibling group may be the airport terminal, or airside vs landside.
5174
+ * 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.
5175
+ *
5176
+ * Note: Instances are actual EnterpriseLocations. This means they have all the properties of a normal EnterpriseLocation, including an `instances` property, that will always be undefined. They also do NOT have a parent property, or any other explicit reference to the parent location. These instances are
5177
+ * 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.
5004
5178
  */
5005
- toJSON(): {
5006
- id: string;
5007
- group: string;
5008
- type: string;
5009
- coordinate: {
5010
- latitude: number;
5011
- longitude: number;
5012
- floor: string | undefined;
5013
- };
5014
- };
5179
+ instances?: EnterpriseLocation[] | undefined;
5015
5180
  /**
5016
- * Cleans up resources used by the instance.
5017
- *
5018
- * @internal
5181
+ * A URL to the logo of the location.
5019
5182
  */
5020
- destroy(): void;
5021
- }
5022
- export default Annotation;
5023
- }
5024
-
5025
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/hyperlink' {
5026
- import type { Hyperlink as MVFHyperlink } from '@mappedin/mvf';
5027
- import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5028
- /**
5029
- * A class representing hyperlink link data within the map.
5030
- */
5031
- class Hyperlink extends BaseMetaData {
5032
- #private;
5183
+ logo?: string | undefined;
5033
5184
  /**
5034
- * @internal
5185
+ * The operation hours of the location.
5035
5186
  */
5036
- static readonly __type = "hyperlink";
5187
+ operationHours?: OperationHours[] | undefined;
5037
5188
  /**
5038
- * Checks if the provided instance is of type Hyperlink.
5039
- *
5040
- * @param instance The instance to check.
5041
- * @returns {boolean} True if the instance is a Hyperlink, false otherwise.
5189
+ * The phone number of the location.
5042
5190
  */
5043
- static is(instance: object): instance is Hyperlink;
5191
+ phone?: {
5192
+ number: string;
5193
+ extension?: string;
5194
+ } | undefined;
5044
5195
  /**
5045
- * @internal
5196
+ * A URL to the picture of the location.
5046
5197
  */
5047
- constructor(options: {
5048
- mvfData: MVFHyperlink;
5049
- });
5198
+ picture?: string | undefined;
5050
5199
  /**
5051
- * Gets the url of the hyperlink.
5052
- *
5053
- * @returns {string} The url of the hyperlink.
5200
+ * The short name of the location.
5054
5201
  */
5055
- get url(): string;
5202
+ shortName?: string | undefined;
5056
5203
  /**
5057
- * Gets the name of the hyperlink.
5058
- *
5059
- * @returns {string | undefined } The name of the hyperlink.
5204
+ * Whether to show the floating label when an image is present.
5060
5205
  */
5061
- get name(): string | undefined;
5206
+ showFloatingLabelWhenImagePresent?: boolean | undefined;
5062
5207
  /**
5063
- * Serializes the hyperlink data to JSON.
5064
- *
5065
- * @returns An object representing the hyperlink.
5208
+ * Whether to show the logo.
5066
5209
  */
5067
- toJSON(): {
5068
- id: string;
5069
- url: string;
5070
- name: string | undefined;
5071
- };
5210
+ showLogo?: boolean | undefined;
5072
5211
  /**
5073
- * Cleans up resources used by the instance.
5074
- *
5075
- * @internal
5212
+ * The sibling groups of the location.
5076
5213
  */
5077
- destroy(): void;
5078
- }
5079
- export default Hyperlink;
5080
- }
5081
-
5082
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image' {
5083
- import type { Image as MVFImage } from '@mappedin/mvf';
5084
- import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5085
- /**
5086
- * A class representing image link data within the map.
5087
- */
5088
- class Image extends BaseMetaData {
5089
- #private;
5214
+ siblingGroups?: SiblingGroup[] | undefined;
5090
5215
  /**
5091
- * @internal
5216
+ * The social media links of the location.
5092
5217
  */
5093
- static readonly __type = "image";
5218
+ social?: {
5219
+ facebook?: string;
5220
+ instagram?: string;
5221
+ twitter?: string;
5222
+ website?: string;
5223
+ } | undefined;
5094
5224
  /**
5095
- * Checks if the provided instance is of type Image.
5096
- *
5097
- * @param instance The instance to check.
5098
- * @returns {boolean} True if the instance is a Image, false otherwise.
5225
+ * The sort order of the location.
5099
5226
  */
5100
- static is(instance: object): instance is Image;
5227
+ sortOrder: number;
5101
5228
  /**
5102
- * @internal
5229
+ * The {@link LocationState}s of the location.
5103
5230
  */
5104
- constructor(options: {
5105
- mvfData: MVFImage;
5106
- });
5231
+ states?: LocationState[] | undefined;
5107
5232
  /**
5108
- * Gets the url of the image.
5109
- *
5110
- * @returns {string | undefined} The url of the image.
5233
+ * The tags of the location.
5111
5234
  */
5112
- get url(): string | undefined;
5235
+ tags?: string[] | undefined;
5113
5236
  /**
5114
- * Gets the alt text of the image.
5115
- *
5116
- * @returns {string | undefined } The alt text of the image.
5117
- * @deprecated Use {@link altText} instead.
5237
+ * The type of the location.
5118
5238
  */
5119
- get name(): string | undefined;
5239
+ type: string;
5120
5240
  /**
5121
- * Gets the alt text of the image.
5241
+ * Checks if the provided instance is of type EnterpriseLocation.
5122
5242
  *
5123
- * @returns {string | undefined } The alt text of the image.
5243
+ * @param instance The instance to check.
5244
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
5124
5245
  */
5125
- get altText(): string | undefined;
5246
+ static is(instance: object): instance is EnterpriseLocation;
5126
5247
  /**
5248
+ * @internal
5249
+ */
5250
+ constructor(data: MapDataInternal, options: {
5251
+ mvfData: MVFEnterpriseLocation;
5252
+ categoryIds: string[];
5253
+ locationInstances?: EnterpriseLocation[];
5254
+ parentId?: string;
5255
+ });
5256
+ /** @internal */
5257
+ get focusTarget(): Space[];
5258
+ get categories(): EnterpriseCategory[];
5259
+ get coordinates(): Coordinate[];
5260
+ get nodes(): Node[];
5261
+ get spaces(): Space[];
5127
5262
  /**
5128
- * Serializes the image data to JSON.
5263
+ * Serializes the EnterpriseLocation data to JSON.
5129
5264
  *
5130
- * @returns An object representing the image.
5265
+ * @returns An object representing the EnterpriseLocation.
5131
5266
  */
5132
5267
  toJSON(): {
5133
5268
  id: string;
5134
- url: string | undefined;
5135
- name: string | undefined;
5269
+ name: string;
5136
5270
  };
5137
5271
  /**
5138
5272
  * Cleans up resources used by the instance.
@@ -5141,80 +5275,90 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image' {
5141
5275
  */
5142
5276
  destroy(): void;
5143
5277
  }
5144
- export default Image;
5278
+ export default EnterpriseLocation;
5145
5279
  }
5146
5280
 
5147
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack' {
5148
- import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
5149
- import type { MapDataInternal, Floor, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5150
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
5281
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
5282
+ import type { EnterpriseCategory as MVFEnterpriseCategory } from '@mappedin/mvf';
5283
+ import type { MapDataInternal, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5284
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5151
5285
  /**
5152
- * A class representing floor stack data within the map.
5286
+ * An EnterpriseCategory groups one or more EnterpriseLocation. These allow similar locations to be sorted in a logical fashion.
5287
+ * 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.
5153
5288
  *
5154
- * FloorStacks are used to represent a group of floors that are part of a single entity.
5289
+ * ```typescript
5290
+ * const categories = mapData.getByType('enterprise-category');
5291
+ * ```
5292
+ *
5293
+ * Refer to the [EnterpriseCategory Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-categories) for more information and interactive examples.
5155
5294
  */
5156
- class FloorStack extends BaseMapData {
5295
+ class EnterpriseCategory extends BaseMetaData implements Omit<MVFEnterpriseCategory, 'children' | 'locations'> {
5157
5296
  #private;
5158
5297
  /**
5159
5298
  * @internal
5160
5299
  */
5161
- static readonly __type = "floor-stack";
5300
+ static readonly __type = "enterprise-category";
5162
5301
  /**
5163
5302
  * @internal
5164
5303
  */
5165
- readonly __type = "floor-stack";
5304
+ readonly __type = "enterprise-category";
5166
5305
  /**
5167
- * Checks if the provided instance is of type FloorStack.
5168
- *
5169
- * @param instance The instance to check.
5170
- * @returns {boolean} True if the instance is a FloorStack, false otherwise.
5306
+ * The name of the category.
5171
5307
  */
5172
- static is(instance: object): instance is FloorStack;
5308
+ name: string;
5173
5309
  /**
5174
- * @internal
5310
+ * The color of the category.
5175
5311
  */
5176
- constructor(data: MapDataInternal, options: {
5177
- mvfData: MVFFloorStack;
5178
- facadeId?: string;
5179
- });
5312
+ color?: string | undefined;
5180
5313
  /**
5181
- * Gets the type of FloorStack.
5314
+ * The external ID of the category.
5182
5315
  */
5183
- get type(): MVFFloorStack['type'];
5316
+ externalId: string;
5184
5317
  /**
5185
- * Gets the name of the FloorStack.
5186
- *
5187
- * @returns {string} The name of the FloorStack.
5318
+ * Extra properties of the category.
5188
5319
  */
5189
- get name(): string;
5320
+ extra?: Record<string, unknown> | undefined;
5190
5321
  /**
5191
- * Gets the externalId of FloorStack
5322
+ * A URL to the icon of the category.
5192
5323
  */
5193
- get externalId(): string;
5324
+ icon?: string | undefined;
5194
5325
  /**
5195
- * Gets the floors ({@link Floor}) included in this FloorStack.
5326
+ * The icon from the default list of icons.
5327
+ */
5328
+ iconFromDefaultList?: string | null | undefined;
5329
+ /**
5330
+ * The sort order of the category.
5331
+ */
5332
+ sortOrder: number;
5333
+ /**
5334
+ * Checks if the provided instance is of type EnterpriseCategory.
5196
5335
  *
5197
- * @returns {Floor[]} An array of Floor objects in this FloorStack.
5336
+ * @param instance The instance to check.
5337
+ * @returns {boolean} True if the instance is a EnterpriseCategory, false otherwise.
5198
5338
  */
5199
- get floors(): [Floor, ...Floor[]];
5339
+ static is(instance: object): instance is EnterpriseCategory;
5200
5340
  /**
5201
- * Get the default floor for this floor stack
5341
+ * @internal
5202
5342
  */
5203
- get defaultFloor(): Floor;
5343
+ constructor(data: MapDataInternal, options: {
5344
+ mvfData: MVFEnterpriseCategory;
5345
+ });
5204
5346
  /**
5205
- * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
5347
+ * The child categories of the category.
5206
5348
  */
5207
- get facade(): Facade | undefined;
5349
+ get children(): EnterpriseCategory[];
5208
5350
  /**
5209
- * Serializes the FloorStack data to JSON.
5351
+ * The {@link EnterpriseLocation}s within this category.
5352
+ */
5353
+ get locations(): EnterpriseLocation[];
5354
+ /**
5355
+ * Serializes the EnterpriseCategory data to JSON.
5210
5356
  *
5211
- * @returns An object representing the FloorStack.
5357
+ * @returns An object representing the EnterpriseCategory.
5212
5358
  */
5213
5359
  toJSON(): {
5214
5360
  id: string;
5215
5361
  name: string;
5216
- type: "Building" | "Outdoor" | undefined;
5217
- floors: string[];
5218
5362
  };
5219
5363
  /**
5220
5364
  * Cleans up resources used by the instance.
@@ -5223,175 +5367,121 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack
5223
5367
  */
5224
5368
  destroy(): void;
5225
5369
  }
5226
- export default FloorStack;
5227
- }
5228
-
5229
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade' {
5230
- import type { Space, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5231
- import { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5232
- import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
5233
- import type { Facade as MVFFacade } from '@mappedin/mvf';
5234
- /**
5235
- * A Facade is a collection of spaces that make up the exterior representation of a Floor Stack ({@link FloorStack}).
5236
- */
5237
- class Facade extends BaseMapData {
5238
- #private;
5239
- static readonly __type = "facade";
5240
- readonly __type = "facade";
5241
- /**
5242
- * Checks if the provided instance is of type Floor.
5243
- *
5244
- * @param instance The instance to check.
5245
- * @returns {boolean} True if the instance is a Floor, false otherwise.
5246
- */
5247
- static is(instance: object): instance is Facade;
5248
- /** @internal */
5249
- constructor(data: MapDataInternal, options: {
5250
- mvfData: MVFFacade;
5251
- floorStackId: string;
5252
- });
5253
- /**
5254
- * Gets the floor stack that this Facade represents.
5255
- */
5256
- get floorStack(): import("./floor-stack").default;
5257
- /**
5258
- * Gets the collection of spaces that make up this Facade.
5259
- */
5260
- get spaces(): Space[];
5261
- /**
5262
- * Gets the center {@link Coordinate} of the Facade.
5263
- */
5264
- get center(): Coordinate;
5265
- }
5266
- export default Facade;
5370
+ export default EnterpriseCategory;
5267
5371
  }
5268
5372
 
5269
- declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5270
- import type { AnnotationCollection, EntranceCollection, Feature, 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';
5271
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5272
- import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5273
- export type MapDataRecords = {
5274
- spacesById: Record<string, Space>;
5275
- nodesById: Record<string, Node>;
5276
- objectsById: Record<string, MapObject>;
5277
- floorsById: Record<string, Floor>;
5278
- floorStacksById: Record<string, FloorStack>;
5279
- facadesById: Record<string, Facade>;
5280
- facadesBySpaceId: Record<string, Facade>;
5281
- connectionsById: Record<string, Connection>;
5282
- doorsById: Record<string, Door>;
5283
- doorsByNodeId: Record<string, Door>;
5284
- poisById: Record<string, PointOfInterest>;
5285
- annotationsById: Record<string, Annotation>;
5286
- locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
5287
- categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
5288
- locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
5289
- areasById: Record<AreaId, Area>;
5290
- venue: MVFEnterpriseVenue;
5291
- spaceIdsByDestinationNodeId: Record<string, string[]>;
5292
- objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5293
- obstructionIdByEntranceId: Record<string, string>;
5294
- connectionIdsByLatLon: Record<string, string[]>;
5295
- mvfSpacesById: Record<string, SpaceCollection['features'][number]>;
5296
- mvfNodesById: Record<string, NodeCollection['features'][number]>;
5297
- mvfObstructionById: Record<string, ObstructionCollection['features'][number]>;
5298
- mvfFloorsById: Record<string, MVFFloor>;
5299
- mvfFloorStacksById: Record<string, MVFFloorStack>;
5300
- mvfConnectionsById: Record<string, MVFConnection>;
5301
- mvfConnectionsByNodeId: Record<string, MVFConnection>;
5302
- mvfEntrancesById: Record<string, EntranceCollection['features'][number]>;
5303
- mvfAnnotationsById: Record<string, AnnotationCollection['features'][number]>;
5304
- mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
5305
- mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5306
- mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5307
- mvfNodesByFloorId: {
5308
- [floorId: string]: NodeCollection['features'][number][];
5309
- };
5310
- mvfSpacesByFloorId: {
5311
- [floorId: string]: SpaceCollection['features'][number][];
5312
- };
5313
- mvfPoisByFloorId: {
5314
- [floorId: string]: FeatureCollection<Point, SpaceProperties>['features'][number][];
5315
- };
5316
- mvfEntrancesByFloorId: {
5317
- [floorId: string]: EntranceCollection['features'][number][];
5318
- };
5319
- mvfAnnotationsByFloorId: {
5320
- [floorId: string]: AnnotationCollection['features'][number][];
5321
- };
5322
- mvfAreasById: Record<AreaId, AreaCollection['features'][number]>;
5323
- };
5324
- export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "mvfFloorsById">;
5325
- export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById" | "facadesById" | "facadesBySpaceId">;
5326
- export const processMVFAreas: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "areasById" | "mvfAreasById">;
5327
- /**
5328
- * @internal
5329
- */
5330
- export const createEnterpriseDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
5331
- locationIdsByNodeId: Record<string, string[]>;
5332
- locationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5333
- mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5334
- mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
5335
- locationsById: Record<string, EnterpriseLocation>;
5336
- locationInstancesById: Record<string, EnterpriseLocationInstance>;
5337
- categoriesById: Record<string, EnterpriseCategory>;
5338
- venue: MVFEnterpriseVenue;
5339
- };
5373
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
5374
+ import type { EnterpriseVenue as MVFEnterpriseVenue, Language } from '@mappedin/mvf';
5375
+ import type { Hyperlink, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5376
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5340
5377
  /**
5341
- * @internal
5378
+ * The EnterpriseVenue class holds metadata bout the map, which includes the map name, supported languages, default language, top locations and more.
5379
+ * It can be accessed using the {@link MapData.getByType()} method as shown below.
5380
+ *
5381
+ * ```typescript
5382
+ * const venue = mapData.getByType('enterprise-venue');
5383
+ * ```
5384
+ *
5385
+ * Refer to the [EnterpriseVenue Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-venue) for more information.
5342
5386
  */
5343
- export const createDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
5344
- spacesById: Record<string, Space>;
5345
- nodesById: Record<string, Node>;
5346
- objectsById: Record<string, MapObject>;
5347
- floorsById: Record<string, Floor>;
5348
- floorStacksById: Record<string, FloorStack>;
5349
- facadesById: Record<string, Facade>;
5350
- facadesBySpaceId: Record<string, Facade>;
5351
- connectionsById: Record<string, Connection>;
5352
- doorsById: Record<string, Door>;
5353
- doorsByNodeId: Record<string, Door>;
5354
- poisById: Record<string, PointOfInterest>;
5355
- annotationsById: Record<string, Annotation>;
5356
- areasById: Record<string, Area>;
5357
- spaceIdsByDestinationNodeId: Record<string, string[]>;
5358
- objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5359
- obstructionIdByEntranceId: Record<string, string>;
5360
- connectionIdsByLatLon: Record<string, string[]>;
5361
- mvfSpacesById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>>;
5362
- mvfNodesById: Record<string, Feature<Point, import("@mappedin/mvf").NodeProperties>>;
5363
- mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString, import("@mappedin/mvf").ObstructionProperties>>;
5364
- mvfFloorsById: Record<string, MVFFloor>;
5365
- mvfFloorStacksById: Record<string, MVFFloorStack>;
5366
- mvfConnectionsById: Record<string, MVFConnection>;
5367
- mvfConnectionsByNodeId: Record<string, MVFConnection>;
5368
- mvfEntrancesById: Record<string, Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>>;
5369
- mvfAnnotationsById: Record<string, {
5370
- type: import("@mappedin/mvf").FeatureType;
5371
- geometry: Point;
5372
- properties: import("@mappedin/mvf").AnnotationProperties;
5373
- }>;
5374
- mvfNodesByFloorId: {
5375
- [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5376
- };
5377
- mvfSpacesByFloorId: {
5378
- [floorId: string]: Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>[];
5379
- };
5380
- mvfPoisByFloorId: {
5381
- [floorId: string]: Feature<Point, SpaceProperties>[];
5382
- };
5383
- mvfAreasById: Record<string, import("@mappedin/mvf").Area>;
5384
- mvfEntrancesByFloorId: {
5385
- [floorId: string]: Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>[];
5386
- };
5387
- mvfAnnotationsByFloorId: {
5388
- [floorId: string]: {
5389
- type: import("@mappedin/mvf").FeatureType;
5390
- geometry: Point;
5391
- properties: import("@mappedin/mvf").AnnotationProperties;
5392
- }[];
5387
+ class EnterpriseVenue extends BaseMetaData implements MVFEnterpriseVenue {
5388
+ #private;
5389
+ /**
5390
+ * @internal
5391
+ */
5392
+ static readonly __type = "enterprise-venue";
5393
+ /**
5394
+ * @internal
5395
+ */
5396
+ readonly __type = "enterprise-venue";
5397
+ /**
5398
+ * The country code of the venue.
5399
+ */
5400
+ countrycode?: string | undefined;
5401
+ /**
5402
+ * The external ID of the venue.
5403
+ */
5404
+ externalId: string;
5405
+ /**
5406
+ * The default language of the venue.
5407
+ */
5408
+ defaultLanguage: Language;
5409
+ /**
5410
+ * The default map of the venue.
5411
+ */
5412
+ defaultMap?: string | undefined;
5413
+ /**
5414
+ * Extra properties of the venue.
5415
+ */
5416
+ extra?: Record<string, unknown> | undefined;
5417
+ /**
5418
+ * A URL to the icon of the venue.
5419
+ */
5420
+ icon?: string | undefined;
5421
+ /**
5422
+ * The languages supported by the venue.
5423
+ */
5424
+ languages: Language[];
5425
+ /**
5426
+ * The links of the venue.
5427
+ */
5428
+ links: Hyperlink[];
5429
+ /**
5430
+ * A URL to the logo of the venue.
5431
+ */
5432
+ logo?: string | undefined;
5433
+ /**
5434
+ * A URL to a web page with [Mappedin Web](https://developer.mappedin.com/docs/enterprise-apps/mappedin-web-v2) for this venue.
5435
+ */
5436
+ mappedinWebUrl?: string | undefined;
5437
+ /**
5438
+ * The slug of the venue.
5439
+ */
5440
+ slug: string;
5441
+ /**
5442
+ * The top locations of the venue.
5443
+ */
5444
+ topLocations?: string[] | undefined;
5445
+ /**
5446
+ * The timezone ID of the venue.
5447
+ */
5448
+ tzid?: string | undefined;
5449
+ /**
5450
+ * Checks if the provided instance is of type EnterpriseVenue.
5451
+ *
5452
+ * @param instance The instance to check.
5453
+ * @returns {boolean} True if the instance is a EnterpriseVenue, false otherwise.
5454
+ */
5455
+ static is(instance: object): instance is EnterpriseVenue;
5456
+ /**
5457
+ * @internal
5458
+ */
5459
+ constructor(_data: MapDataInternal, options: {
5460
+ mvfData: MVFEnterpriseVenue;
5461
+ });
5462
+ /**
5463
+ * Gets the name of the EnterpriseVenue.
5464
+ *
5465
+ * @returns {string} The name of the EnterpriseVenue.
5466
+ */
5467
+ get name(): string;
5468
+ /**
5469
+ * Serializes the EnterpriseVenue data to JSON.
5470
+ *
5471
+ * @returns An object representing the EnterpriseVenue.
5472
+ */
5473
+ toJSON(): {
5474
+ id: string;
5475
+ name: string;
5393
5476
  };
5394
- };
5477
+ /**
5478
+ * Cleans up resources used by the instance.
5479
+ *
5480
+ * @internal
5481
+ */
5482
+ destroy(): void;
5483
+ }
5484
+ export default EnterpriseVenue;
5395
5485
  }
5396
5486
 
5397
5487
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
@@ -5537,6 +5627,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5537
5627
  * ```
5538
5628
  */
5539
5629
  interactive?: boolean | 'pointer-events-auto';
5630
+ /**
5631
+ * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
5632
+ */
5633
+ zIndex?: number;
5540
5634
  };
5541
5635
  /**
5542
5636
  * 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.
@@ -5553,17 +5647,20 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5553
5647
  id: z.ZodOptional<z.ZodString>;
5554
5648
  anchor: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["top", "bottom", "left", "right", "center", "top-left", "top-right", "bottom-left", "bottom-right"]>, z.ZodArray<z.ZodEnum<["top", "bottom", "left", "right", "center", "top-left", "top-right", "bottom-left", "bottom-right"]>, "many">]>>;
5555
5649
  dynamicResize: z.ZodOptional<z.ZodBoolean>;
5650
+ zIndex: z.ZodOptional<z.ZodNumber>;
5556
5651
  }, "strip", z.ZodTypeAny, {
5557
5652
  interactive?: boolean | "pointer-events-auto" | undefined;
5558
5653
  id?: string | undefined;
5559
5654
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5560
5655
  dynamicResize?: boolean | undefined;
5656
+ zIndex?: number | undefined;
5561
5657
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5562
5658
  }, {
5563
5659
  interactive?: boolean | "pointer-events-auto" | undefined;
5564
5660
  id?: string | undefined;
5565
5661
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5566
5662
  dynamicResize?: boolean | undefined;
5663
+ zIndex?: number | undefined;
5567
5664
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5568
5665
  }>;
5569
5666
  export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
@@ -5598,6 +5695,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5598
5695
  * Dynamic resize of the marker. If set to true, the marker will resize based on the content.
5599
5696
  */
5600
5697
  dynamicResize?: boolean;
5698
+ /**
5699
+ * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
5700
+ */
5701
+ zIndex?: number;
5601
5702
  };
5602
5703
  export class MarkerComponent {
5603
5704
  id: string | number;
@@ -5607,7 +5708,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5607
5708
  initialRank: number;
5608
5709
  activeAnchor: MarkerAnchor;
5609
5710
  pointerEvents: 'auto' | 'none';
5610
- options: Required<AddMarkerOptions>;
5711
+ options: Required<Omit<AddMarkerOptions, 'zIndex'>> & {
5712
+ zIndex?: number;
5713
+ };
5611
5714
  projection: Vector2;
5612
5715
  enabled: boolean;
5613
5716
  /**
@@ -5616,7 +5719,6 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5616
5719
  canShow: boolean;
5617
5720
  visible: boolean;
5618
5721
  offscreen: boolean;
5619
- activeStrategyIndex: number;
5620
5722
  strategyIndex: number;
5621
5723
  activeBoundingBox: {
5622
5724
  x: number;
@@ -6327,7 +6429,6 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6327
6429
  static testId: number;
6328
6430
  opacity: number;
6329
6431
  visibilityNeedsUpdate: 'show' | 'hide' | false;
6330
- activeStrategyIndex: number;
6331
6432
  text: string;
6332
6433
  style: TStyle;
6333
6434
  projection: Vector2;
@@ -8554,7 +8655,10 @@ declare module '@mappedin/react-sdk/geojson/src/systems/watermark/system' {
8554
8655
  */
8555
8656
  visible?: boolean;
8556
8657
  };
8557
- export type WatermarkUpdateOptions = Omit<WatermarkOptions, 'onClick' | 'visible'>;
8658
+ export type WatermarkUpdateOptions = Omit<WatermarkOptions, 'onClick' | 'visible'> & {
8659
+ /** Show the Mappedin watermark. Once it is visible it cannot be hidden again. */
8660
+ visible?: true;
8661
+ };
8558
8662
  export class WatermarkSystem extends PubSub<{
8559
8663
  'texture-loaded': void;
8560
8664
  }> {
@@ -8578,8 +8682,6 @@ declare module '@mappedin/react-sdk/geojson/src/systems/watermark/system' {
8578
8682
  x: number;
8579
8683
  y: number;
8580
8684
  };
8581
- show(): void;
8582
- hide(): void;
8583
8685
  insertIntoQuadTree(quadTree: QuadTree<{
8584
8686
  entityId: Geometry2D['id'];
8585
8687
  }>): void;
@@ -8634,6 +8736,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/html-controls/system' {
8634
8736
  export type AttributionControlOptions = {
8635
8737
  custom?: string[];
8636
8738
  position?: AttributionPosition;
8739
+ feedback?: boolean;
8637
8740
  };
8638
8741
  export class HTMLControlsSystem {
8639
8742
  controlContainerEl: HTMLDivElement;
@@ -8664,7 +8767,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/styles' {
8664
8767
  }
8665
8768
 
8666
8769
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8667
- import type { RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
8770
+ import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
8668
8771
  import { type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
8669
8772
  import { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
8670
8773
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
@@ -8718,7 +8821,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8718
8821
  Shapes: Shapes;
8719
8822
  Style: Style;
8720
8823
  Images: Images;
8721
- get DynamicFocus(): import("./dynamic-focus").DynamicFocus;
8824
+ get DynamicFocus(): import("..").DynamicFocus;
8722
8825
  get StackedMaps(): import("..").StackedMaps;
8723
8826
  constructor(rendererCore: RendererCore, mapView: MapView);
8724
8827
  updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Door | Facade | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
@@ -8728,7 +8831,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8728
8831
  addMap(mapData: MapData, options?: TShow3DMapOptions): Promise<MapData>;
8729
8832
  setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
8730
8833
  setFloorStack(floorStack: FloorStack | string): void;
8731
- updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
8834
+ updateWatermark(options: WatermarkUpdateOptions): void;
8732
8835
  get currentFloorStack(): FloorStack;
8733
8836
  get currentFloor(): Floor;
8734
8837
  getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
@@ -8754,12 +8857,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8754
8857
  import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
8755
8858
  import { FloorObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object';
8756
8859
  import type { Coordinate, Directions, Floor, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
8757
- import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction, TAddText3DOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
8860
+ import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction, TAddText3DOptions, IAnchorable } from '@mappedin/react-sdk/mappedin-js/src/types';
8758
8861
  import { type AggregatedStyleMap } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils';
8759
8862
  import { StackedMaps } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
8760
8863
  import type { TFloorChangeReason } from '@mappedin/react-sdk/mappedin-js/src/events';
8761
8864
  import type { Path, Shape, Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8762
- import { type Door, type PointOfInterest, type MapObject, type Node, type MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8865
+ import { type MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8763
8866
  import { type GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
8764
8867
  import { FloorStackObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-object';
8765
8868
  import { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus';
@@ -8793,6 +8896,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8793
8896
  renderer: RendererCore;
8794
8897
  api: GeoJsonApi;
8795
8898
  mvf: ParsedMVF;
8899
+ options: TShow3DMapOptions;
8796
8900
  styleMap: AggregatedStyleMap;
8797
8901
  StackedMaps: StackedMaps;
8798
8902
  DynamicFocus: DynamicFocus;
@@ -8839,8 +8943,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8839
8943
  remove: (id: string) => string | undefined;
8840
8944
  };
8841
8945
  Labels: {
8842
- all: ({ onCreate, }: {
8843
- onCreate: (labelId: string | number, text: string, target: Space | Door | Coordinate | PointOfInterest | MapObject | Node) => void;
8946
+ all: ({ onCreate }: {
8947
+ onCreate: (labelId: string | number, text: string, target: IAnchorable) => void;
8844
8948
  }) => void;
8845
8949
  add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
8846
8950
  floorId?: string;
@@ -8870,7 +8974,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8870
8974
  }
8871
8975
 
8872
8976
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
8873
- import type { Coordinate, Door, MapObject, Node, PointOfInterest, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8977
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
8874
8978
  /**
8875
8979
  * Class representing a label on the {@link MapView}.
8876
8980
  *
@@ -8882,7 +8986,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
8882
8986
  *
8883
8987
  * Refer to the [Labels Guide](https://developer.mappedin.com/web-sdk/labels) for more information and interactive examples.
8884
8988
  */
8885
- export class Label {
8989
+ export class Label implements IFocusable {
8886
8990
  /**
8887
8991
  * The label's id
8888
8992
  */
@@ -8894,7 +8998,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
8894
8998
  /**
8895
8999
  * The target object where the label is anchored.
8896
9000
  */
8897
- readonly target: Space | Door | Coordinate | PointOfInterest | MapObject | Node;
9001
+ readonly target: IAnchorable;
8898
9002
  /**
8899
9003
  * @internal
8900
9004
  */
@@ -8910,22 +9014,24 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
8910
9014
  * @returns {boolean} True if the instance is a Label, false otherwise.
8911
9015
  */
8912
9016
  static is(instance: object): instance is Label;
9017
+ /** @internal */
9018
+ get focusTarget(): import("..").Coordinate;
8913
9019
  /**
8914
9020
  * @internal
8915
9021
  */
8916
- constructor(id: string, text: string, target: Space | Door | Coordinate | PointOfInterest | MapObject | Node);
9022
+ constructor(id: string, text: string, target: IAnchorable);
8917
9023
  }
8918
9024
  }
8919
9025
 
8920
9026
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/marker' {
8921
- import type { Coordinate, Door, Node, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9027
+ import type { IAnchorable, IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
8922
9028
  /**
8923
9029
  * 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}.
8924
9030
  * They are automatically rotated and repositioned when the camera moves.
8925
9031
  *
8926
9032
  * Refer to the [Markers Guide](https://developer.mappedin.com/web-sdk/markers) for more information and interactive examples.
8927
9033
  */
8928
- export class Marker {
9034
+ export class Marker implements IFocusable {
8929
9035
  #private;
8930
9036
  /**
8931
9037
  * The marker's id
@@ -8935,7 +9041,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/marker' {
8935
9041
  * @internal
8936
9042
  */
8937
9043
  static readonly __type = "Marker";
8938
- get target(): Coordinate | Space | Door | Node;
9044
+ get target(): IAnchorable;
8939
9045
  /**
8940
9046
  * @internal
8941
9047
  */
@@ -8954,11 +9060,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/marker' {
8954
9060
  /**
8955
9061
  * @internal
8956
9062
  */
8957
- constructor(id: string, contentEl: HTMLElement, target: Space | Door | Coordinate | Node);
9063
+ constructor(id: string, contentEl: HTMLElement, target: IAnchorable);
9064
+ /** @internal */
9065
+ get focusTarget(): import("..").Coordinate;
8958
9066
  /**
8959
9067
  * @internal
8960
9068
  */
8961
- updateTarget(target: Space | Door | Coordinate | Node): void;
9069
+ updateTarget(target: IAnchorable): void;
8962
9070
  }
8963
9071
  }
8964
9072
 
@@ -9052,12 +9160,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/model' {
9052
9160
 
9053
9161
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/path' {
9054
9162
  import { type Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9163
+ import type { IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
9055
9164
  /**
9056
9165
  * Class representing a path on the {@link MapView}.
9057
9166
  *
9058
9167
  * Paths are used to indicate a route on the map and can be added and removed using {@link Paths.add} and {@link Paths.remove}.
9059
9168
  */
9060
- export class Path {
9169
+ export class Path implements IFocusable {
9061
9170
  /**
9062
9171
  * The label's id
9063
9172
  */
@@ -9074,6 +9183,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/path' {
9074
9183
  * @internal
9075
9184
  */
9076
9185
  readonly __type: 'Path';
9186
+ /** @internal */
9187
+ get focusTarget(): Coordinate[];
9077
9188
  /**
9078
9189
  * @internal
9079
9190
  */
@@ -9082,12 +9193,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/path' {
9082
9193
  }
9083
9194
 
9084
9195
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/shape' {
9196
+ import type { IFocusable } from '@mappedin/react-sdk/mappedin-js/src/types';
9085
9197
  /**
9086
9198
  * Class representing GeoJSON shape on the {@link MapView}.
9087
9199
  *
9088
9200
  * Refer to the [Shapes Guide](https://developer.mappedin.com/web-sdk/shapes) for more information and interactive examples.
9089
9201
  */
9090
- export class Shape {
9202
+ export class Shape implements IFocusable {
9091
9203
  /**
9092
9204
  * id of Shape
9093
9205
  */
@@ -9107,6 +9219,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/shape' {
9107
9219
  * @returns {boolean} True if the instance is a Shape, false otherwise.
9108
9220
  */
9109
9221
  static is(instance: object): instance is Shape;
9222
+ /** @internal */
9223
+ get focusTarget(): this;
9110
9224
  /**
9111
9225
  * @internal
9112
9226
  */
@@ -9148,7 +9262,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/text3d' {
9148
9262
  }
9149
9263
 
9150
9264
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9151
- import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9265
+ import type { IFocusable, TCameraAnimationOptions, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9152
9266
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
9153
9267
  import { Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9154
9268
  /**
@@ -9191,7 +9305,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9191
9305
  * // Focus on a single space
9192
9306
  * mapView.Camera.focusOn(space, { minZoomLevel: 5, duration: 1000 });
9193
9307
  */
9194
- focusOn(target: TCameraFocusOnTarget, options?: TFocusOnOptions): Promise<void>;
9308
+ focusOn(target: IFocusable | IFocusable[], options?: TFocusOnOptions): Promise<void>;
9195
9309
  /**
9196
9310
  * Animates the camera to a specified target.
9197
9311
  * @param target The target configuration for the camera.
@@ -9301,11 +9415,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9301
9415
  }
9302
9416
 
9303
9417
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
9304
- import type { TAddLabelOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9418
+ import type { IAnchorable, TAddLabelOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9305
9419
  import { Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
9306
9420
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
9307
- import type { PointOfInterest, MapObject } from '@mappedin/react-sdk/mappedin-js/src';
9308
- import { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9309
9421
  /**
9310
9422
  * Class used to add and remove a {@link Label} on the {@link MapView}.
9311
9423
  *
@@ -9349,7 +9461,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
9349
9461
  *
9350
9462
  * mapView.Labels.add(space, 'Welcome', { appearance: { color: 'blue' } });
9351
9463
  */
9352
- add(target: Space | Door | Coordinate | PointOfInterest | MapObject | Node, text: string, options?: TAddLabelOptions | undefined): Label;
9464
+ add(target: IAnchorable, text: string, options?: TAddLabelOptions | undefined): Label;
9353
9465
  /**
9354
9466
  * Automatically adds all the labels ({@link Label}) to the map.
9355
9467
  *
@@ -9381,10 +9493,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
9381
9493
  }
9382
9494
 
9383
9495
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
9384
- import type { TAddMarkerOptions, TAnimationOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9496
+ import type { IAnchorable, TAddMarkerOptions, TAnimationOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
9385
9497
  import { Marker } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
9386
9498
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
9387
- import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9388
9499
  /**
9389
9500
  * 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}.
9390
9501
  * They are automatically rotated and repositioned when the camera moves.
@@ -9423,7 +9534,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
9423
9534
  * // Add an interactive Marker to the map with custom HTML content.
9424
9535
  * mapView.Markers.add(coordinate, '<div>Marker Content</div>', { interactive: true });
9425
9536
  */
9426
- add(target: Space | Door | Coordinate | Node, html: string, options?: TAddMarkerOptions): Marker;
9537
+ add(target: IAnchorable, html: string, options?: TAddMarkerOptions): Marker;
9427
9538
  /**
9428
9539
  * Removes a marker from the map.
9429
9540
  *
@@ -9447,7 +9558,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
9447
9558
  * const marker = mapView.Markers.add(coordinate, '<div>Marker Content</div>');
9448
9559
  * mapView.Markers.setPosition(marker, newCoordinate);
9449
9560
  */
9450
- setPosition(marker: Marker, target: Space | Door | Coordinate | Node): void;
9561
+ setPosition(marker: Marker, target: IAnchorable): void;
9451
9562
  /**
9452
9563
  * Update the position of a marker with an animation.
9453
9564
  * @param marker The {@link Marker} which should be updated.
@@ -9458,7 +9569,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
9458
9569
  * const marker = mapView.Markers.add(coordinate, '<div>Marker Content</div>');
9459
9570
  * mapView.Markers.animateTo(marker, newCoordinate, { duration: 1000 });
9460
9571
  */
9461
- animateTo(marker: Marker, target: Space | Door | Coordinate | Node, options?: TAnimationOptions): Promise<void>;
9572
+ animateTo(marker: Marker, target: IAnchorable, options?: TAnimationOptions): Promise<void>;
9462
9573
  }
9463
9574
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
9464
9575
  export {};
@@ -10020,6 +10131,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
10020
10131
  export {};
10021
10132
  }
10022
10133
 
10134
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus' {
10135
+ export { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
10136
+ }
10137
+
10023
10138
  declare module '@mappedin/react-sdk/mappedin-js/src/search/internal' {
10024
10139
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
10025
10140
  import type { Places } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
@@ -11726,8 +11841,10 @@ declare module '@mappedin/react-sdk/geojson/src/systems/geometry-in-focus/system
11726
11841
  focusablesDirty: boolean;
11727
11842
  constructor(state: RendererState, camera: PerspectiveCamera);
11728
11843
  resize(): void;
11729
- update: () => void;
11844
+ update: (userIsInteracting?: boolean) => void;
11730
11845
  updateRaf(): void;
11846
+ showRaycasters(): void;
11847
+ hideRaycasters(): void;
11731
11848
  destroy(): void;
11732
11849
  }
11733
11850
  }
@@ -12203,7 +12320,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils' {
12203
12320
  export type WithId<T> = T & {
12204
12321
  id?: string;
12205
12322
  };
12206
- export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Polygon | LineString | Point, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
12323
+ export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<LineString | Polygon | Point, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
12207
12324
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
12208
12325
  export const getTargetID: <T extends Space | Shape | MapObject | Label | Text3D | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
12209
12326
  export function tweenToPromise(tween: Tween): Promise<void>;
@@ -12237,8 +12354,75 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-obje
12237
12354
  }
12238
12355
  }
12239
12356
 
12240
- declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus' {
12241
- export { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
12357
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
12358
+ import { type RendererCore } from '@mappedin/core-sdk';
12359
+ import { PubSub } from '@packages/internal/common';
12360
+ import type { Floor, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
12361
+ import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
12362
+ import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
12363
+ /**
12364
+ * @experimental
12365
+ * @internal
12366
+ */
12367
+ export type TDynamicFocusEvents = {
12368
+ 'focus-change': {
12369
+ facades: string[];
12370
+ spaces: string[];
12371
+ };
12372
+ };
12373
+ /**
12374
+ * @experimental
12375
+ * @internal
12376
+ */
12377
+ export type TDynamicFocusOptions = {
12378
+ /**
12379
+ * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
12380
+ * @default 17
12381
+ */
12382
+ minZoomLevel?: number;
12383
+ };
12384
+ /**
12385
+ * @experimental
12386
+ * @internal
12387
+ */
12388
+ export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
12389
+ #private;
12390
+ /** @internal */
12391
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
12392
+ currentMapGetter: CurrentMapGetter;
12393
+ });
12394
+ /**
12395
+ * @experimental
12396
+ * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
12397
+ */
12398
+ enable(options?: TDynamicFocusOptions): void;
12399
+ /**
12400
+ * @experimental
12401
+ * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
12402
+ */
12403
+ disable(): void;
12404
+ /**
12405
+ * @experimental
12406
+ * Returns the enabled state of Dynamic Focus.
12407
+ */
12408
+ get enabled(): boolean;
12409
+ /**
12410
+ * @experimental
12411
+ * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
12412
+ * See {@link resetDefaultFloorForStack} to reset the default floor.
12413
+ * @param floorStack - The floor stack to set the default floor for.
12414
+ * @param floor - The floor to set as the default floor.
12415
+ */
12416
+ setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
12417
+ /**
12418
+ * @experimental
12419
+ * Resets the default floor for a floor stack to it's initial value.
12420
+ * @param floorStack - The floor stack to reset the default floor for.
12421
+ */
12422
+ resetDefaultFloorForStack(floorStack: FloorStack): void;
12423
+ }
12424
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
12425
+ export {};
12242
12426
  }
12243
12427
 
12244
12428
  declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-processor' {
@@ -21048,77 +21232,6 @@ declare module '@mappedin/react-sdk/packages/geojson-navigator/src/types/coordin
21048
21232
  export type CoordinateFeature = Feature<Point, CoordinateProperties>;
21049
21233
  }
21050
21234
 
21051
- declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
21052
- import { type RendererCore } from '@mappedin/core-sdk';
21053
- import { PubSub } from '@packages/internal/common';
21054
- import type { Floor, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
21055
- import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
21056
- import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
21057
- /**
21058
- * @experimental
21059
- * @internal
21060
- */
21061
- export type TDynamicFocusEvents = {
21062
- 'focus-change': {
21063
- facades: string[];
21064
- spaces: string[];
21065
- };
21066
- };
21067
- /**
21068
- * @experimental
21069
- * @internal
21070
- */
21071
- export type TDynamicFocusOptions = {
21072
- /**
21073
- * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
21074
- * @default 17
21075
- */
21076
- minZoomLevel?: number;
21077
- };
21078
- /**
21079
- * @experimental
21080
- * @internal
21081
- */
21082
- export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
21083
- #private;
21084
- /** @internal */
21085
- constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
21086
- currentMapGetter: CurrentMapGetter;
21087
- });
21088
- /**
21089
- * @experimental
21090
- * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
21091
- */
21092
- enable(options?: TDynamicFocusOptions): void;
21093
- /**
21094
- * @experimental
21095
- * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
21096
- */
21097
- disable(): void;
21098
- /**
21099
- * @experimental
21100
- * Returns the enabled state of Dynamic Focus.
21101
- */
21102
- get enabled(): boolean;
21103
- /**
21104
- * @experimental
21105
- * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
21106
- * See {@link resetDefaultFloorForStack} to reset the default floor.
21107
- * @param floorStack - The floor stack to set the default floor for.
21108
- * @param floor - The floor to set as the default floor.
21109
- */
21110
- setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
21111
- /**
21112
- * @experimental
21113
- * Resets the default floor for a floor stack to it's initial value.
21114
- * @param floorStack - The floor stack to reset the default floor for.
21115
- */
21116
- resetDefaultFloorForStack(floorStack: FloorStack): void;
21117
- }
21118
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
21119
- export {};
21120
- }
21121
-
21122
21235
  declare module '@mappedin/react-sdk/geojson/src/systems/interactions/tap-controller' {
21123
21236
  export enum TapType {
21124
21237
  onefinger = 0,