@mappedin/react-sdk 6.0.1-beta.12 → 6.0.1-beta.14

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.
@@ -9,6 +9,7 @@
9
9
  // ../react/@packages/internal/common
10
10
  // ../react/@mappedin/core-sdk
11
11
  // ../react/@mappedin/core-sdk/src/camera
12
+ // ../react/@packages/internal/geojson-navigator
12
13
  // ../react/@tweenjs/tween.js
13
14
  // ../react/@mappedin/mvf/dist/locale
14
15
  // ../react/three
@@ -17,7 +18,6 @@
17
18
  // ../react/@turf/turf
18
19
  // ../react/@packages/internal/quad-tree
19
20
  // ../react/@packages/internal/outdoor-context-v4
20
- // ../react/@packages/internal/geojson-navigator
21
21
  // ../react/minisearch
22
22
  // ../react/three/addons/loaders/GLTFLoader.js
23
23
  // ../react/@mapbox/point-geometry
@@ -245,7 +245,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
245
245
  import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
246
246
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
247
247
  import type { Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
248
- import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
248
+ import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack } from '@mappedin/mvf';
249
249
  import { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
250
250
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
251
251
  import { enableTestMode } from '@mappedin/react-sdk/geojson/src';
@@ -498,6 +498,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
498
498
  };
499
499
  /**
500
500
  * @internal
501
+ * @deprecated Use {@link hydrateMapData} instead.
501
502
  *
502
503
  * Returns a {@link MapData} instance from a parsed MVF object.
503
504
  */
@@ -509,6 +510,37 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
509
510
  * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
510
511
  */
511
512
  export function setUseEnterpriseAPI(value: boolean): void;
513
+ export type THydrateMapDataBundle = {
514
+ type: 'binary';
515
+ options?: {
516
+ enterprise?: boolean;
517
+ };
518
+ languagePacks?: {
519
+ language: {
520
+ code: string;
521
+ name: string;
522
+ };
523
+ localePack: Uint8Array;
524
+ }[];
525
+ main: Uint8Array;
526
+ } | {
527
+ type: 'json';
528
+ options?: {
529
+ enterprise?: boolean;
530
+ };
531
+ languagePacks?: {
532
+ language: {
533
+ code: string;
534
+ name: string;
535
+ };
536
+ localePack: ParsedMVFLocalePack;
537
+ }[];
538
+ main: TMVF;
539
+ };
540
+ /**
541
+ * Load a MapData instance from a backup including language packs. Pass in userOptions to ensure outdoor view is available.
542
+ */
543
+ export const hydrateMapData: (backup: THydrateMapDataBundle | TMVF, userOptions?: TGetMapDataOptions) => Promise<MapData>;
512
544
  /**
513
545
  * Asynchronously retrieves map data ({@link MapData}) based on user-provided options.
514
546
  *
@@ -534,13 +566,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
534
566
  export { parseMVF, unzipMVF, enableTestMode };
535
567
  export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
536
568
  export type * from 'geojson';
537
- export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, } from '@mappedin/react-sdk/mappedin-js/src/types';
569
+ export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/react-sdk/mappedin-js/src/types';
538
570
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
539
571
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
540
572
  export type { Navigation, TNavigationOptions } from '@mappedin/react-sdk/mappedin-js/src/navigation';
541
573
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
542
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, type Places, } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
543
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
574
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
575
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
544
576
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/react-sdk/mappedin-js/src/search';
545
577
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/react-sdk/mappedin-js/src/analytics';
546
578
  }
@@ -574,11 +606,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
574
606
  import { Analytics } from '@mappedin/react-sdk/mappedin-js/src/analytics';
575
607
  import { PubSub } from '@packages/internal/common';
576
608
  import type { TSearchOptions } from '@packages/internal/mvf-utils';
577
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
609
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
578
610
  import type EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
579
611
  import type EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
580
612
  import type EnterpriseVenue from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue';
581
613
  import { Search } from '@mappedin/react-sdk/mappedin-js/src/search';
614
+ import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
615
+ import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
582
616
  /**
583
617
  * A WeakMap to associate {@link MapData} instances with their internal representation.
584
618
  * We need a way to get the internal data object from the API
@@ -705,6 +739,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
705
739
  * const annotations = mapData.getByType('annotation');
706
740
  */
707
741
  getByType(type: 'annotation'): Annotation[];
742
+ /**
743
+ * @returns The nodes ({@link Node}) on the map.
744
+ * @example
745
+ * const nodes = mapData.getByType('node');
746
+ */
747
+ getByType(type: 'node'): Node[];
708
748
  /**
709
749
  * @returns The enterprise locations ({@link EnterpriseLocation}) on the map.
710
750
  * @example
@@ -722,7 +762,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
722
762
  * @example
723
763
  * const enterpriseVenue = mapData.getByType('enterprise-venue');
724
764
  */
725
- getByType(type: 'enterprise-venue'): EnterpriseVenue;
765
+ getByType(type: 'enterprise-venue'): EnterpriseVenue | undefined;
726
766
  /**
727
767
  * Retrieves a specific map feature by its type and ID.
728
768
  *
@@ -732,16 +772,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
732
772
  * @example
733
773
  * const space = mapData.getById('space', 'space-id');
734
774
  */
735
- getById(type: 'space', id: string): Space | undefined;
736
- getById(type: 'door', id: string): Door | undefined;
737
- getById(type: 'floor', id: string): Floor | undefined;
738
- getById(type: 'floor-stack', id: string): FloorStack | undefined;
739
- getById(type: 'connection', id: string): Connection | undefined;
740
- getById(type: 'object', id: string): MapObject | undefined;
741
- getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
742
- getById(type: 'annotation', id: string): Annotation | undefined;
743
- getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
744
- getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
775
+ 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 : undefined;
745
776
  getById(type: string, id: string): object | undefined;
746
777
  /**
747
778
  * Changes the language of the map data.
@@ -762,6 +793,46 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
762
793
  * @internal
763
794
  */
764
795
  get currentLanguage(): import("@mappedin/mvf").Language | undefined;
796
+ /**
797
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to another on the map.
798
+ *
799
+ * @param from The starting point for navigation.
800
+ * @param to The destination point.
801
+ * @param options Optional parameters for getting directions.
802
+ * @returns Directions from the start to the destination point.
803
+ * @example
804
+ * const directions = await map.getDirections(space1, space2);
805
+ */
806
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
807
+ /**
808
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
809
+ *
810
+ * @param from The starting point for navigation.
811
+ * @param to The destination points.
812
+ * @param options Optional parameters for getting directions.
813
+ * @returns Directions from the start to the destination points.
814
+ * @example
815
+ * const directions = await map.getDirections(space1, [space2, space3]);
816
+ */
817
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
818
+ /**
819
+ * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
820
+ *
821
+ * @param from The starting point.
822
+ * @param to The destination point.
823
+ * @returns The distance between the start and destination points in meters.
824
+ */
825
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
826
+ /**
827
+ * Creates a backup of the map data including language packs.
828
+ * @internal
829
+ */
830
+ toBinaryBundle({ downloadLanguagePacks }?: {
831
+ downloadLanguagePacks?: boolean;
832
+ }): Promise<void | import(".").THydrateMapDataBundle>;
833
+ toJSONBundle({ downloadLanguagePacks }?: {
834
+ downloadLanguagePacks?: boolean;
835
+ }): Promise<import(".").THydrateMapDataBundle>;
765
836
  }
766
837
  export default MapData;
767
838
  /**
@@ -774,7 +845,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
774
845
  import type { ClickPayload } from '@mappedin/core-sdk';
775
846
  import type { TStackedMapsEvents } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
776
847
  import type { Coordinate, Floor, MapObject, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
777
- import type { Label, Marker, Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
848
+ import type { Label, Marker, Model, Path } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
778
849
  import type { CameraTransform } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform';
779
850
  export type TFloorChangeReason = '' | 'blue-dot-floor-change' | 'elevation-change';
780
851
  export type TClickPayload = {
@@ -782,6 +853,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
782
853
  * The coordinate of the interaction.
783
854
  */
784
855
  coordinate: Coordinate;
856
+ /**
857
+ * The interactive paths which the user interaction passed through.
858
+ */
859
+ paths: Path[];
785
860
  /**
786
861
  * The interactive spaces which the user interaction passed through.
787
862
  */
@@ -880,7 +955,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
880
955
  }
881
956
 
882
957
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
883
- import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
958
+ import Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
884
959
  import Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
885
960
  import Space from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
886
961
  import Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
@@ -899,9 +974,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
899
974
  import EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
900
975
  import EnterpriseVenue from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue';
901
976
  import { PubSub } from '@packages/internal/common';
902
- import type { LanguagePack, Places } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
977
+ import type { LanguagePack, Places, TMapDataInternalOptions } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
903
978
  import { type LocalePackUrls } from '@packages/internal/mvf-utils';
904
- import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
979
+ import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
980
+ import { type Directions, DirectionsInternal } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
981
+ import { type THydrateMapDataBundle } from '@mappedin/react-sdk/mappedin-js/src';
905
982
  /**
906
983
  * Internal class representing detailed map data.
907
984
  *
@@ -936,6 +1013,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
936
1013
  */
937
1014
  readonly obstructionIdByEntranceId: Record<string, string>;
938
1015
  readonly venue?: EnterpriseVenue;
1016
+ directions: DirectionsInternal;
939
1017
  enterpriseMode: boolean;
940
1018
  nodesById: MapDataRecords['nodesById'];
941
1019
  spacesById: MapDataRecords['spacesById'];
@@ -950,6 +1028,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
950
1028
  categoriesById: MapDataRecords['categoriesById'];
951
1029
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
952
1030
  locationsBySpaceId: MapDataRecords['mvfLocationsBySpaceId'];
1031
+ locationIdsByNodeId: MapDataRecords['locationIdsByNodeId'];
953
1032
  mvfAnnotationsById: MapDataRecords['mvfAnnotationsById'];
954
1033
  mvfConnectionsById: MapDataRecords['mvfConnectionsById'];
955
1034
  mvfConnectionsByNodeId: MapDataRecords['mvfConnectionsByNodeId'];
@@ -967,15 +1046,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
967
1046
  languagePacks: {
968
1047
  [languageCode: string]: LanguagePack;
969
1048
  };
1049
+ binaryBundle?: Uint8Array;
970
1050
  /**
971
1051
  * @internal
972
1052
  */
973
- constructor(mvf: ParsedMVF, { outdoorViewToken, localePacksUrls: localePacks, enterprise, languagePacks, }?: {
974
- enterprise?: boolean;
975
- outdoorViewToken?: string;
976
- localePacksUrls?: LocalePackUrls;
977
- languagePacks?: LanguagePackHydrationItem[];
978
- });
1053
+ constructor(mvf: ParsedMVF, options: TMapDataInternalOptions);
979
1054
  /**
980
1055
  * Retrieves the map name.
981
1056
  *
@@ -1077,6 +1152,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1077
1152
  * change the langauge of the data objects in mapdata
1078
1153
  */
1079
1154
  changeLanguage(languageCode: string): Promise<void>;
1155
+ getDirectionsMultiDestination: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
1156
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions & {
1157
+ multiSegment?: true;
1158
+ }) => Directions | Directions[] | undefined;
1159
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
1160
+ toJSONBundle({ downloadLanguagePacks, }?: {
1161
+ downloadLanguagePacks?: boolean;
1162
+ }): Promise<THydrateMapDataBundle>;
1163
+ toBinaryBundle({ downloadLanguagePacks, }?: {
1164
+ downloadLanguagePacks?: boolean;
1165
+ }): Promise<THydrateMapDataBundle | void>;
1080
1166
  /**
1081
1167
  * Cleans up resources used by the instance.
1082
1168
  *
@@ -1084,7 +1170,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1084
1170
  */
1085
1171
  destroy(): void;
1086
1172
  }
1087
- export { MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1173
+ export { Node, MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1088
1174
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
1089
1175
  export type { Places };
1090
1176
  }
@@ -1097,7 +1183,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1097
1183
  import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
1098
1184
  import type { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1099
1185
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1100
- import type { Door, Floor, MapObject, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1186
+ import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1101
1187
  import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/react-sdk/mappedin-js/src/types';
1102
1188
  import type { Label, Marker, Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1103
1189
  import type { TEventPayload } from '@mappedin/react-sdk/mappedin-js/src/events';
@@ -1229,6 +1315,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1229
1315
  getState<T extends Space | MapObject | Label | Marker | Image | string>(target: T): TGetState<T> | undefined;
1230
1316
  setHoverColor(c: string): void;
1231
1317
  getHoverColor(): string | undefined;
1318
+ /**
1319
+ * @internal
1320
+ */
1321
+ convertAltitudeToMercatorZoomLevel(altitude: number): number;
1322
+ /**
1323
+ * @internal
1324
+ */
1325
+ convertMercatorZoomLevelToAltitude(zoomLevel: number): number;
1232
1326
  /**
1233
1327
  * Determines if a given target is within the viewport.
1234
1328
  *
@@ -1251,6 +1345,23 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1251
1345
  * const directions = await map.getDirections(space1, space2);
1252
1346
  */
1253
1347
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
1348
+ /**
1349
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
1350
+ *
1351
+ * @param from The starting point for navigation.
1352
+ * @param to The destination points.
1353
+ * @param options Optional parameters for getting directions.
1354
+ * @returns Directions from the start to the destination points.
1355
+ */
1356
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
1357
+ /**
1358
+ * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
1359
+ *
1360
+ * @param from The starting point.
1361
+ * @param to The destination point.
1362
+ * @returns The distance between the start and destination points in meters.
1363
+ */
1364
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number | undefined;
1254
1365
  /**
1255
1366
  * Creates a {@link Coordinate} on the map.
1256
1367
  *
@@ -1262,8 +1373,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1262
1373
  * // Create a coordinate at the CN Tower.
1263
1374
  * const coord = map.createCoordinate(43.642567, -79.387054);
1264
1375
  */
1265
- createCoordinate(latitude: number, longitude: number, floor?: Floor): import(".").Coordinate;
1266
- createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): import(".").Coordinate | undefined;
1376
+ createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
1377
+ createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
1267
1378
  /**
1268
1379
  * @hidden
1269
1380
  * @experimental
@@ -1391,13 +1502,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1391
1502
 
1392
1503
  declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1393
1504
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1394
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1505
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1395
1506
  import type { Label, Marker, Model, Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1396
1507
  import type { EasingCurve } from '@mappedin/core-sdk/src/camera';
1397
1508
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1398
1509
  export type DeepRequired<T> = Required<{
1399
1510
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1400
1511
  }>;
1512
+ export type DeepPartial<T> = Partial<{
1513
+ [K in keyof T]: T[K] extends Partial<T[K]> ? DeepPartial<T[K]> : T[K];
1514
+ }>;
1401
1515
  export type CancellablePromise<T> = {
1402
1516
  promise: Promise<T>;
1403
1517
  cancel: () => void;
@@ -1463,6 +1577,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1463
1577
  * The {@link Coordinate} at which this instruction applies.
1464
1578
  */
1465
1579
  coordinate: Coordinate;
1580
+ /**
1581
+ * @internal
1582
+ */
1583
+ node: Node;
1466
1584
  };
1467
1585
  /**
1468
1586
  * Defines the state for a label when its appearance is updated.
@@ -1720,10 +1838,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1720
1838
  left: number;
1721
1839
  };
1722
1840
  };
1841
+ export type TCameraFocusOnTargets = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node;
1723
1842
  /**
1724
1843
  * Defines the target for the {@link Camera} focus operation.
1844
+ * @interface
1725
1845
  */
1726
- export type TCameraFocusOnTarget = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | (Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door)[];
1846
+ export type TCameraFocusOnTarget = TCameraFocusOnTargets | TCameraFocusOnTargets[];
1727
1847
  /**
1728
1848
  * Defines the target for camera operations.
1729
1849
  */
@@ -1750,7 +1870,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1750
1870
  /**
1751
1871
  * Defines the target for navigation operations.
1752
1872
  */
1753
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation;
1873
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node;
1754
1874
  /**
1755
1875
  * Defines the special zone for navigation operations.
1756
1876
  */
@@ -2208,26 +2328,100 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2208
2328
  id?: string;
2209
2329
  };
2210
2330
  export type TBlueDotOptions = {
2211
- /** The radius of the BlueDot in pixels. The BlueDot will maintain this size clamped to a minimum of 0.35 metres. */
2331
+ /**
2332
+ * The radius of the BlueDot in pixels. The BlueDot will maintain this size clamped to a minimum of 0.35 metres.
2333
+ * @default 10
2334
+ */
2212
2335
  radius?: number;
2213
- /** The color of the BlueDot core element. */
2336
+ /**
2337
+ * The color of the BlueDot core element.
2338
+ * @default #2266ff
2339
+ */
2214
2340
  color?: string;
2215
- /** Options for the accuracy ring around the BlueDot. */
2341
+ /**
2342
+ * The color of the BlueDot when it has timed out and gone inactive.
2343
+ * @default #808080
2344
+ */
2345
+ inactiveColor?: string;
2346
+ /**
2347
+ * Options for the accuracy ring around the BlueDot.
2348
+ */
2216
2349
  accuracyRing?: {
2217
- /** The color of the accuracy ring. */
2350
+ /**
2351
+ * The color of the accuracy ring.
2352
+ * @default #2266ff
2353
+ */
2218
2354
  color?: string;
2219
- /** The opacity of the accuracy ring. */
2355
+ /**
2356
+ * The opacity of the accuracy ring.
2357
+ * @default 0.3
2358
+ */
2220
2359
  opacity?: number;
2221
2360
  };
2222
2361
  /**
2223
- * Options for the bearing directional indicator.
2362
+ * Options for the heading directional indicator.
2224
2363
  */
2225
- bearing?: {
2226
- /** The color of the bearing cone. */
2364
+ heading?: {
2365
+ /**
2366
+ * The color of the heading cone.
2367
+ * @default #2266ff
2368
+ */
2227
2369
  color?: string;
2228
- /** The opacity of the bearing cone. */
2370
+ /**
2371
+ * The opacity of the heading cone.
2372
+ * @default 0.7
2373
+ */
2229
2374
  opacity?: number;
2230
2375
  };
2376
+ /**
2377
+ * The duration of the timeout in milliseconds.
2378
+ * If the BlueDot does not receive a position update within this time, it will grey out until a position is received.
2379
+ * @default 30000
2380
+ */
2381
+ timeout?: number;
2382
+ /**
2383
+ * Whether to watch the browser's position.
2384
+ * @default true
2385
+ */
2386
+ watchBrowserPosition?: boolean;
2387
+ /**
2388
+ * Whether to log debug messages.
2389
+ * @default false
2390
+ */
2391
+ debug?: boolean;
2392
+ };
2393
+ /**
2394
+ * Position update options for the {@link BlueDot.update} method.
2395
+ */
2396
+ export type TBlueDotPositionUpdate = {
2397
+ /**
2398
+ * Latitude to override.
2399
+ * Set to `'device'` to reset to the device's latitude.
2400
+ */
2401
+ latitude?: GeolocationPosition['coords']['latitude'] | 'device' | undefined;
2402
+ /**
2403
+ * Longitude to override.
2404
+ * Set to `'device'` to reset to the device's longitude.
2405
+ */
2406
+ longitude?: GeolocationPosition['coords']['longitude'] | 'device' | undefined;
2407
+ /**
2408
+ * Accuracy to override.
2409
+ * Set to `'device'` to reset to the device's accuracy.
2410
+ * Set to `undefined` to disable the accuracy ring.
2411
+ */
2412
+ accuracy?: GeolocationPosition['coords']['accuracy'] | 'device' | undefined;
2413
+ /**
2414
+ * Heading to override.
2415
+ * Set to `'device'` to reset to the device's heading.
2416
+ * Set to `undefined` to disable the heading indicator.
2417
+ */
2418
+ heading?: GeolocationPosition['coords']['heading'] | 'device' | undefined;
2419
+ /**
2420
+ * Floor level to override.
2421
+ * Set to `'device'` to reset to the device's floor level.
2422
+ * Set to `undefined` to disable floor level and show the BlueDot on all floors.
2423
+ */
2424
+ floor?: Floor | 'device' | undefined;
2231
2425
  };
2232
2426
  export type LanguagePackHydrationItem = {
2233
2427
  language: Language;
@@ -2246,8 +2440,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects' {
2246
2440
  }
2247
2441
 
2248
2442
  declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2443
+ import { type TDirectionInstruction } from '@mappedin/react-sdk/mappedin-js/src';
2249
2444
  import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
2250
2445
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
2446
+ import { Path, Marker } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
2251
2447
  import type { RendererCore } from '@mappedin/core-sdk';
2252
2448
  /**
2253
2449
  * Options for navigation.
@@ -2282,6 +2478,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2282
2478
  * @default '#40A9FF'
2283
2479
  */
2284
2480
  color?: string;
2481
+ /**
2482
+ * Whether the path should be clickable.
2483
+ *
2484
+ * @defaultValue false
2485
+ */
2486
+ interactive?: boolean;
2285
2487
  /**
2286
2488
  * The accent color of the path. This is applied to arrows if they are displayed
2287
2489
  * @default 'blue'
@@ -2330,16 +2532,34 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2330
2532
  * @internal
2331
2533
  */
2332
2534
  get currentMap(): GeojsonApiMapObject;
2535
+ /**
2536
+ * Returns true if the navigation is for a multi-floor path.
2537
+ */
2538
+ get isMultiFloor(): boolean;
2333
2539
  /**
2334
2540
  * @internal
2335
2541
  */
2336
2542
  constructor(core: RendererCore, currentMapGetter: CurrentMapGetter);
2543
+ /**
2544
+ * @internal
2545
+ */
2546
+ getPathById(id: string): {
2547
+ path: Path;
2548
+ entityIds: string[];
2549
+ } | undefined;
2550
+ /**
2551
+ * @internal
2552
+ */
2553
+ getMarkerById(id: string): {
2554
+ instruction: TDirectionInstruction;
2555
+ marker: Marker;
2556
+ } | undefined;
2337
2557
  /**
2338
2558
  * Draws the specified directions on the map.
2339
2559
  * @param directions The directions to be drawn.
2340
2560
  * @param options Optional additional options for the navigation.
2341
2561
  */
2342
- draw: (directions: Directions, options?: TNavigationOptions) => Promise<unknown>;
2562
+ draw: (directions: Directions | Directions[], options?: TNavigationOptions) => Promise<unknown>;
2343
2563
  /**
2344
2564
  * Clears any drawn navigation paths or directions from the map.
2345
2565
  */
@@ -2351,6 +2571,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2351
2571
 
2352
2572
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson' {
2353
2573
  export { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
2574
+ export { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot';
2354
2575
  export { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera';
2355
2576
  export { Labels } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels';
2356
2577
  export { Markers } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers';
@@ -2436,7 +2657,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category' {
2436
2657
 
2437
2658
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
2438
2659
  import type { EnterpriseLocation as MVFEnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
2439
- import type { Coordinate, MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
2660
+ import type { Coordinate, EnterpriseCategory, MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
2440
2661
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
2441
2662
  import type Node from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node';
2442
2663
  /**
@@ -2497,7 +2718,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
2497
2718
  */
2498
2719
  constructor(data: MapDataInternal, options: {
2499
2720
  mvfData: MVFEnterpriseLocation;
2721
+ categoryIds: string[];
2500
2722
  });
2723
+ get categories(): EnterpriseCategory[];
2501
2724
  get coordinates(): Coordinate[];
2502
2725
  get nodes(): Node[];
2503
2726
  get spaces(): Space[];
@@ -2588,6 +2811,77 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
2588
2811
  export default EnterpriseVenue;
2589
2812
  }
2590
2813
 
2814
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
2815
+ import type { ParsedMVF } from '@mappedin/mvf';
2816
+ import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
2817
+ import { Coordinate, Node, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
2818
+ import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
2819
+ /**
2820
+ * Represents a set of directions between two points.
2821
+ *
2822
+ * Directions are used to represent the path between two points on the map,
2823
+ * as well as the instructions to follow the path.
2824
+ */
2825
+ export class Directions {
2826
+ #private;
2827
+ /**
2828
+ * @internal
2829
+ */
2830
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal);
2831
+ /**
2832
+ * @internal
2833
+ */
2834
+ get path(): Node[];
2835
+ /**
2836
+ * All the coordinates ({@link Coordinate}) of the directions.
2837
+ */
2838
+ get coordinates(): Coordinate[];
2839
+ /**
2840
+ * The total distance of the path in meters.
2841
+ */
2842
+ get distance(): number;
2843
+ /**
2844
+ * The array of instructions ({@link TDirectionInstruction}).
2845
+ */
2846
+ get instructions(): TDirectionInstruction[];
2847
+ }
2848
+ export class DirectionsInternal {
2849
+ /**
2850
+ * @hidden
2851
+ */
2852
+ constructor({ nodes, geojsonCollection, connections, groupBy, }: {
2853
+ nodes: ParsedMVF['node.geojson'];
2854
+ geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
2855
+ connections: ParsedMVF['connection.json'];
2856
+ groupBy?: string;
2857
+ });
2858
+ /**
2859
+ * Get directions between two navigation targets.
2860
+ *
2861
+ * @hidden
2862
+ * @param from
2863
+ * @param to
2864
+ * @param options
2865
+ * @param mapData
2866
+ */
2867
+ getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
2868
+ accessible: boolean;
2869
+ smoothing: {
2870
+ enabled: boolean;
2871
+ radius: number;
2872
+ };
2873
+ zones: TDirectionZone[];
2874
+ }, mapData: MapDataInternal) => Directions | undefined;
2875
+ /**
2876
+ * Get the node IDs that should be excluded from the navigation graph.
2877
+ *
2878
+ * @hidden
2879
+ * @param accessible {boolean}
2880
+ */
2881
+ getExcludedNodeIds: (accessible: boolean) => string[];
2882
+ }
2883
+ }
2884
+
2591
2885
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps' {
2592
2886
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
2593
2887
  import type { RendererCore } from '@mappedin/core-sdk';
@@ -2668,7 +2962,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-tran
2668
2962
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
2669
2963
  import type { NodeCollection } from '@mappedin/mvf';
2670
2964
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
2671
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
2965
+ import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
2672
2966
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
2673
2967
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
2674
2968
  /**
@@ -2702,6 +2996,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
2702
2996
  floorId: string;
2703
2997
  mvfData: NodeCollection['features'][number];
2704
2998
  });
2999
+ get locations(): EnterpriseLocation[];
2705
3000
  /**
2706
3001
  * Gets the {@link Floor} associated with the node.
2707
3002
  *
@@ -2715,6 +3010,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
2715
3010
  * @returns {Coordinate} The node's coordinate.
2716
3011
  */
2717
3012
  get coordinate(): Coordinate;
3013
+ /**
3014
+ * Gets the external ID of the node.
3015
+ *
3016
+ * @returns {string} The external ID of the node.
3017
+ */
3018
+ get externalId(): string;
2718
3019
  /**
2719
3020
  * Gets the neighboring nodes of this node.
2720
3021
  *
@@ -2787,6 +3088,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
2787
3088
  * @returns {string} The name of the door.
2788
3089
  */
2789
3090
  get name(): string;
3091
+ /**
3092
+ * Gets the external ID of the door.
3093
+ *
3094
+ * @returns {string} The external ID of the door.
3095
+ */
3096
+ get externalId(): string;
2790
3097
  get description(): string;
2791
3098
  get images(): Image[];
2792
3099
  /**
@@ -2890,8 +3197,24 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
2890
3197
  * @returns {TSpaceType} The type of the space.
2891
3198
  */
2892
3199
  get type(): TSpaceType;
3200
+ /**
3201
+ * Gets the description of the space.
3202
+ *
3203
+ * @returns {string} The description of the space, or an empty string if no description exists.
3204
+ */
2893
3205
  get description(): string;
3206
+ /**
3207
+ * Gets the array of images associated with the space.
3208
+ *
3209
+ * @returns {Image[]} An array of Image objects, or an empty array if no images exist.
3210
+ */
2894
3211
  get images(): Image[];
3212
+ /**
3213
+ * Gets the external identifier of the space.
3214
+ *
3215
+ * @returns {string} The external ID of the space, or an empty string if no external ID exists.
3216
+ */
3217
+ get externalId(): string;
2895
3218
  /**
2896
3219
  * @internal
2897
3220
  */
@@ -2984,6 +3307,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
2984
3307
  * @returns {string} The name of the floor.
2985
3308
  */
2986
3309
  get name(): string;
3310
+ /**
3311
+ * Gets the external ID of the floor.
3312
+ *
3313
+ * @returns {string} The external ID of the floor.
3314
+ */
3315
+ get externalId(): string;
2987
3316
  /**
2988
3317
  * Gets the elevation of the floor.
2989
3318
  *
@@ -3059,7 +3388,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
3059
3388
  }
3060
3389
 
3061
3390
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection' {
3062
- import type { FeatureCollection, Image, Point, SpaceProperties } from '@mappedin/mvf';
3391
+ import type { Feature, FeatureCollection, Image, Point, SpaceProperties, Connection as MVFConnection } from '@mappedin/mvf';
3063
3392
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3064
3393
  import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3065
3394
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
@@ -3089,7 +3418,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
3089
3418
  * @internal
3090
3419
  */
3091
3420
  constructor(data: MapDataInternal, options: {
3092
- mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]>;
3421
+ mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]> | Record<string, Feature<Point, MVFConnection>>;
3422
+ accessible?: boolean;
3093
3423
  });
3094
3424
  /**
3095
3425
  * Gets the name of the connection.
@@ -3099,6 +3429,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
3099
3429
  get name(): string;
3100
3430
  get description(): string;
3101
3431
  get images(): Image[];
3432
+ get accessible(): boolean;
3433
+ /**
3434
+ * Gets the external ID of the connection.
3435
+ *
3436
+ * @returns {string} The external ID of the connection.
3437
+ */
3102
3438
  get externalId(): string;
3103
3439
  /**
3104
3440
  /**
@@ -3187,6 +3523,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
3187
3523
  * @returns {string} The name of the object.
3188
3524
  */
3189
3525
  get name(): string;
3526
+ /**
3527
+ * Gets the external ID of the MapObject.
3528
+ *
3529
+ * @returns {string} The external ID of the object.
3530
+ */
3531
+ get externalId(): string;
3532
+ /**
3533
+ * Gets the description of the MapObject.
3534
+ *
3535
+ * @returns {string} The description of the object.
3536
+ */
3190
3537
  get description(): string;
3191
3538
  get images(): Image[];
3192
3539
  /**
@@ -3372,6 +3719,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
3372
3719
  * @returns {Coordinate} The POI's coordinate.
3373
3720
  */
3374
3721
  get coordinate(): Coordinate;
3722
+ /**
3723
+ * Gets the external ID of the POI.
3724
+ *
3725
+ * @returns {string} The external ID of the POI.
3726
+ */
3727
+ get externalId(): string;
3375
3728
  /**
3376
3729
  * Serializes the POI data to JSON.
3377
3730
  *
@@ -3444,6 +3797,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
3444
3797
  * @returns {string} The annotation type.
3445
3798
  */
3446
3799
  get type(): string;
3800
+ /**
3801
+ * Gets the external ID of the annotation.
3802
+ *
3803
+ * @returns {string} The external ID of the annotation.
3804
+ */
3805
+ get externalId(): string;
3447
3806
  /**
3448
3807
  * Gets the center {@link Coordinate} of the annotation.
3449
3808
  *
@@ -3576,6 +3935,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/image' {
3576
3935
  * @returns {string | undefined } The name of the image.
3577
3936
  */
3578
3937
  get name(): string | undefined;
3938
+ /**
3579
3939
  /**
3580
3940
  * Serializes the image data to JSON.
3581
3941
  *
@@ -3638,6 +3998,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack
3638
3998
  * @returns {string} The name of the FloorStack.
3639
3999
  */
3640
4000
  get name(): string;
4001
+ /**
4002
+ * Gets the externalId of FloorStack
4003
+ */
4004
+ get externalId(): string;
3641
4005
  /**
3642
4006
  * Gets the floors ({@link Floor}) included in this FloorStack.
3643
4007
  *
@@ -3686,6 +4050,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
3686
4050
  annotationsById: Record<string, Annotation>;
3687
4051
  locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
3688
4052
  categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
4053
+ locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
3689
4054
  venue: MVFEnterpriseVenue;
3690
4055
  spaceIdsByDestinationNodeId: Record<string, string[]>;
3691
4056
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
@@ -3710,6 +4075,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
3710
4075
  * @internal
3711
4076
  */
3712
4077
  export const createEnterpriseDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
4078
+ locationIdsByNodeId: Record<string, string[]>;
3713
4079
  locationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
3714
4080
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
3715
4081
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
@@ -3761,6 +4127,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3761
4127
  import type MapObject from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object';
3762
4128
  import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack } from '@mappedin/mvf';
3763
4129
  import type { PartialExcept } from '@mappedin/mvf/dist/locale';
4130
+ import { LocalePackUrls } from '@packages/internal/mvf-utils';
4131
+ import { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
3764
4132
  /**
3765
4133
  * Places are the main objects that can be searched for.
3766
4134
  */
@@ -3781,25 +4149,95 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3781
4149
  categories: Record<string, MvfEnterpriseCategory>;
3782
4150
  };
3783
4151
  };
4152
+ export type TMapDataInternalOptions = {
4153
+ enterprise?: boolean;
4154
+ outdoorViewToken?: string;
4155
+ localePacksUrls?: LocalePackUrls;
4156
+ languagePacks?: LanguagePackHydrationItem[];
4157
+ binaryBundle?: Uint8Array;
4158
+ };
3784
4159
  }
3785
4160
 
3786
4161
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
3787
4162
  import type { RendererCore } from '@mappedin/core-sdk';
3788
4163
  import { PubSub } from '@packages/internal/common';
3789
4164
  import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
3790
- import type { TBlueDotOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
4165
+ import type { TBlueDotOptions, TBlueDotPositionUpdate } from '@mappedin/react-sdk/mappedin-js/src/types';
4166
+ import { Coordinate, type Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3791
4167
  export type TBlueDotEvents = {
3792
- 'floor-change': {
3793
- reason: 'blue-dot-floor-change';
3794
- floorId: string;
3795
- };
4168
+ 'floor-change': {
4169
+ reason: 'blue-dot-floor-change';
4170
+ floorId: string;
4171
+ };
3796
4172
  };
4173
+ export type TBlueDotState = 'hidden' | 'active' | 'inactive' | 'disabled';
4174
+ export type TBlueDotAction = 'timeout' | 'error' | 'position-received' | 'enable' | 'disable';
3797
4175
  export class BlueDot extends PubSub<TBlueDotEvents> {
3798
- #private;
3799
- constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
3800
- enable(options?: TBlueDotOptions): void;
3801
- disable(): void;
4176
+ #private;
4177
+ state: TBlueDotState;
4178
+ /**
4179
+ * The direction the user is facing in degrees from north.
4180
+ */
4181
+ get heading(): GeolocationPosition['coords']['heading'] | undefined;
4182
+ /**
4183
+ * The accuracy of the current position in metres.
4184
+ */
4185
+ get accuracy(): GeolocationPosition['coords']['accuracy'] | undefined;
4186
+ /**
4187
+ * The coordinate of the current position.
4188
+ */
4189
+ get coordinate(): Coordinate | undefined;
4190
+ /**
4191
+ * The floor the Blue Dot is currently on. If undefined, the Blue Dot will appear on every floor.
4192
+ */
4193
+ get floor(): Floor | undefined;
4194
+ /**
4195
+ * @internal
4196
+ */
4197
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
4198
+ /**
4199
+ * Enable the Blue Dot. It will be hidden until a position is received either from the browser or by calling {@link BlueDot.update}.
4200
+ * @param options - The options to setup the Blue Dot.
4201
+ */
4202
+ enable(options?: TBlueDotOptions): void;
4203
+ /**
4204
+ * Disable the Blue Dot. It will be hidden and no longer update.
4205
+ */
4206
+ disable(): void;
4207
+ /**
4208
+ * Enable or disable the devices's geolocation listener to automatically position the Blue Dot.
4209
+ * If enabled, the device will request permission to access the user's precise location.
4210
+ * @param watch - Whether to enable or disable the listener.
4211
+ */
4212
+ watchDevicePosition(watch: boolean): void;
4213
+ /**
4214
+ * Manually override some position properties of the Blue Dot.
4215
+ * Accepts a full GeolocationPosition object or a partial {@link TBlueDotPositionUpdate} object.
4216
+ * @example Manually set the accuracy and heading
4217
+ * ```ts
4218
+ * api.BlueDot.update({ accuracy: 10, heading: 90 });
4219
+ * ```
4220
+ * @example Reset accuracy and heading to device values
4221
+ * ```ts
4222
+ * api.BlueDot.update({ accuracy: 'device', heading: 'device' });
4223
+ * ```
4224
+ */
4225
+ update(position: (GeolocationPosition & {
4226
+ coords: GeolocationPosition['coords'] & {
4227
+ readonly floorLevel?: number;
4228
+ };
4229
+ }) | TBlueDotPositionUpdate | undefined): void;
3802
4230
  }
4231
+ type TStateTransitions = {
4232
+ [Action in TBlueDotAction]?: TBlueDotState;
4233
+ };
4234
+ type TStateMachine = {
4235
+ [State in TBlueDotState]: {
4236
+ actions: TStateTransitions;
4237
+ };
4238
+ };
4239
+ export const stateMachine: TStateMachine;
4240
+ export {};
3803
4241
  }
3804
4242
 
3805
4243
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
@@ -4012,9 +4450,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
4012
4450
 
4013
4451
  declare module '@mappedin/react-sdk/geojson/src/components/path' {
4014
4452
  import { Vector3 } from 'three';
4015
- import type { Mesh, ShaderMaterial, BufferGeometry } from 'three';
4453
+ import type { Mesh, BufferGeometry } from 'three';
4016
4454
  import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
4017
- import { Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4455
+ import type { PathMaterial, PatMeshContainer } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4018
4456
  import type { FeatureCollection, Point } from 'geojson';
4019
4457
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
4020
4458
  export type PathProperties = {
@@ -4023,6 +4461,11 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4023
4461
  */
4024
4462
  parentId?: EntityId<GroupContainerState> | string | null;
4025
4463
  };
4464
+ /**
4465
+ * Updatable path state
4466
+ * @interface
4467
+ */
4468
+ export type PathUpdateState = Omit<Partial<PathState>, 'id' | 'type'>;
4026
4469
  /**
4027
4470
  * State representing a Path
4028
4471
  */
@@ -4051,6 +4494,30 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4051
4494
  * Note: use values between 0 and 1.
4052
4495
  */
4053
4496
  completeFraction: number;
4497
+ /**
4498
+ * The color of the path.
4499
+ */
4500
+ color: string;
4501
+ /**
4502
+ * The accent color of the path. When arrows are visible, it is applied to them
4503
+ */
4504
+ accentColor: string;
4505
+ /**
4506
+ * Display Arrows on Path to indicate direction
4507
+ */
4508
+ displayArrowsOnPath: boolean;
4509
+ /**
4510
+ * Arrows on path should animate to indicate direction
4511
+ */
4512
+ animateArrowsOnPath: boolean;
4513
+ /**
4514
+ * The radius of the path when zoomed in
4515
+ */
4516
+ nearRadius: number;
4517
+ /**
4518
+ * The radius of the path when zoomed out
4519
+ */
4520
+ farRadius: number;
4054
4521
  };
4055
4522
  export type AddPathOptions = {
4056
4523
  /**
@@ -4090,16 +4557,16 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4090
4557
  export class PathComponent {
4091
4558
  #private;
4092
4559
  readonly type = "path";
4093
- mesh: Geometry3DObject3D;
4094
- material?: ShaderMaterial;
4560
+ mesh: PatMeshContainer;
4561
+ material?: PathMaterial;
4095
4562
  geometry?: BufferGeometry;
4096
4563
  outline?: Mesh;
4097
4564
  feature: FeatureCollection<Point, PathProperties>;
4098
4565
  options: AddPathOptions;
4099
4566
  nearRadius: number;
4100
4567
  farRadius: number;
4101
- color: string;
4102
4568
  accentColor: string;
4569
+ completeFraction: number;
4103
4570
  altitudeAdjustment: number;
4104
4571
  displayArrowsOnPath: boolean;
4105
4572
  animateArrowsOnPath: boolean;
@@ -4108,11 +4575,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4108
4575
  */
4109
4576
  isVertical: boolean;
4110
4577
  dirty: boolean;
4578
+ materialDirty: boolean;
4111
4579
  constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
4112
4580
  setColor(): void;
4113
4581
  setOpacity(): void;
4114
- set completeFraction(value: number);
4115
- get completeFraction(): number;
4116
4582
  set visible(visible: boolean);
4117
4583
  get visible(): boolean;
4118
4584
  position: Vector3;
@@ -4928,6 +5394,10 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
4928
5394
  * The coordinate of the interaction.
4929
5395
  */
4930
5396
  coordinate: Position;
5397
+ /**
5398
+ * An array of path IDs which the user interaction passed through. Will be empty if no paths were interacted with.
5399
+ */
5400
+ paths: (string | number)[] | [];
4931
5401
  /**
4932
5402
  * An array of marker IDs which the user interaction passed through. Will be empty if no markers were interacted with.
4933
5403
  */
@@ -5049,6 +5519,9 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
5049
5519
  center?: Position;
5050
5520
  insetsPadding: InsetPadding;
5051
5521
  shouldMeasureCanvas: boolean;
5522
+ /**
5523
+ * Current clamped pixel ratio of the renderer, based on maplibre's clamping logic (when in interleaved mode)
5524
+ */
5052
5525
  pixelRatio: number;
5053
5526
  canvasWidth: number;
5054
5527
  canvasHeight: number;
@@ -5505,7 +5978,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
5505
5978
  import { TwoDVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/2d-visibility/system';
5506
5979
  import { RenderSystem } from '@mappedin/react-sdk/geojson/src/systems/render/system';
5507
5980
  import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
5508
- import type { AddPathOptions, PathProperties, PathState } from '@mappedin/react-sdk/geojson/src/components/path';
5981
+ import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
5509
5982
  import { StackSystem } from '@mappedin/react-sdk/geojson/src/systems/stack/system';
5510
5983
  import { CameraSystem } from '@mappedin/react-sdk/geojson/src/systems/camera';
5511
5984
  import { DOMDrawSystem } from '@mappedin/react-sdk/geojson/src/systems/dom-draw/system';
@@ -5680,9 +6153,9 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
5680
6153
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
5681
6154
  */
5682
6155
  getState(): MapViewState;
5683
- getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? ShapeState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
6156
+ getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? PathState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
5684
6157
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
5685
- getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? ShapeState : T extends ShapeState ? PathState : T extends ImageState ? ImageState : EntityState;
6158
+ getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? PathState : T extends ShapeState ? ShapeState : T extends ImageState ? ImageState : EntityState;
5686
6159
  /**
5687
6160
  * Set the state of the map view or any entity that was added, regardless of whether it is visible in the scene.
5688
6161
  */
@@ -5693,7 +6166,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
5693
6166
  setState<T extends EntityId<GroupContainerState>>(object: T | T['id'], state: Partial<GroupContainerState>): void;
5694
6167
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
5695
6168
  setState<T extends EntityId<ShapeState>>(object: T | T['id'], state: Partial<ShapeState>): void;
5696
- setState<T extends EntityId<PathState>>(object: T | T['id'], state: Partial<PathState>): void;
6169
+ setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
5697
6170
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
5698
6171
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
5699
6172
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
@@ -6111,7 +6584,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
6111
6584
  export { getPixelRatio } from '@mappedin/react-sdk/geojson/src/utils/get-pixel-ratio';
6112
6585
  export { debounce } from '@mappedin/react-sdk/geojson/src/utils/async';
6113
6586
  export { shouldDisableOffscreenCanvas } from '@mappedin/react-sdk/geojson/src/utils/browser';
6114
- export { noop } from '@mappedin/react-sdk/geojson/src/utils/fp';
6587
+ export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils/fp';
6115
6588
  export { transformRequest } from '@mappedin/react-sdk/geojson/src/utils/tranform-request';
6116
6589
  }
6117
6590
 
@@ -6538,7 +7011,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
6538
7011
  floorId: string;
6539
7012
  };
6540
7013
  }> {
7014
+ /** Floors sorted in order of elevation */
6541
7015
  floors: FloorObject[];
7016
+ /** Map of floors by elevation. Floor elevation does not always match index or is not always contiguous. */
7017
+ floorsByElevation: Map<number, FloorObject>;
6542
7018
  currentFloorId: string;
6543
7019
  id: string;
6544
7020
  renderer: RendererCore;
@@ -6609,9 +7085,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
6609
7085
  import type { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
6610
7086
  import { Label, Marker, type Model, type Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
6611
7087
  import { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
6612
- import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState } from '@mappedin/react-sdk/mappedin-js/src/types';
7088
+ import type { TGetState, TUpdateState } from '@mappedin/react-sdk/mappedin-js/src/types';
6613
7089
  import { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera';
6614
- import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
6615
7090
  import { Exporter } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/exporter';
6616
7091
  import { Labels } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels';
6617
7092
  import { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
@@ -6665,7 +7140,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
6665
7140
  getState<T extends Space | MapObject | Label | Marker | Model | Image | string>(target: T): TGetState<T> | undefined;
6666
7141
  setHoverColor(c: string): void;
6667
7142
  getHoverColor(): string | undefined;
6668
- getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], opt?: TGetDirectionsOptions) => Directions | undefined;
6669
7143
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
6670
7144
  createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
6671
7145
  isInView(target: Space | MapObject | Label | Marker | string): boolean;
@@ -6679,6 +7153,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
6679
7153
  }
6680
7154
  }
6681
7155
 
7156
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot' {
7157
+ export { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
7158
+ export type { TBlueDotEvents } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
7159
+ }
7160
+
6682
7161
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
6683
7162
  import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
6684
7163
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
@@ -6690,6 +7169,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
6690
7169
  */
6691
7170
  constructor(rendererCore: RendererCore);
6692
7171
  setScreenOffsets(padding: InsetPadding): void;
7172
+ get screenOffsets(): InsetPadding;
6693
7173
  /**
6694
7174
  * Focuses the camera on a specific target or array of targets.
6695
7175
  *
@@ -6795,7 +7275,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
6795
7275
  import { Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
6796
7276
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
6797
7277
  import type { PointOfInterest, MapObject } from '@mappedin/react-sdk/mappedin-js/src';
6798
- import type { Space, Door, Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7278
+ import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
6799
7279
  export class Labels {
6800
7280
  #private;
6801
7281
  /**
@@ -6826,7 +7306,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
6826
7306
  *
6827
7307
  * map.Labels.add(space, 'Welcome', { appearance: { color: 'blue' } });
6828
7308
  */
6829
- add(target: Space | Door | Coordinate | PointOfInterest | MapObject, text: string, options?: TAddLabelOptions | undefined): Label;
7309
+ add(target: Space | Door | Coordinate | PointOfInterest | MapObject | Node, text: string, options?: TAddLabelOptions | undefined): Label;
6830
7310
  /**
6831
7311
  * Automatically adds all the labels ({@link Label}) to the map.
6832
7312
  *
@@ -6861,7 +7341,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
6861
7341
  import type { TAddMarkerOptions, TAnimationOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
6862
7342
  import { Marker } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
6863
7343
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
6864
- import type { Space, Door, Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7344
+ import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
6865
7345
  export class Markers {
6866
7346
  #private;
6867
7347
  /**
@@ -6892,7 +7372,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
6892
7372
  * // Add an interactive {@link Marker} to the map with custom HTML content.
6893
7373
  * map.Markers.add(coordinate, '<div>Marker Content</div>', { interactive: true });
6894
7374
  */
6895
- add(target: Space | Door | Coordinate, html: string, options?: TAddMarkerOptions): Marker;
7375
+ add(target: Space | Door | Coordinate | Node, html: string, options?: TAddMarkerOptions): Marker;
6896
7376
  /**
6897
7377
  * Removes a marker from the map.
6898
7378
  *
@@ -6916,7 +7396,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
6916
7396
  * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
6917
7397
  * mapView.Markers.setPosition(marker, newCoordinate);
6918
7398
  */
6919
- setPosition(marker: Marker, target: Space | Door | Coordinate): void;
7399
+ setPosition(marker: Marker, target: Space | Door | Coordinate | Node): void;
6920
7400
  /**
6921
7401
  * Update the position of a marker with an animation.
6922
7402
  * @param marker The {@link Marker} which should be updated.
@@ -6927,7 +7407,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
6927
7407
  * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
6928
7408
  * mapView.Markers.animateTo(marker, newCoordinate, { duration: 1000 });
6929
7409
  */
6930
- animateTo(marker: Marker, target: Space | Door | Coordinate, options?: TAnimationOptions): Promise<void>;
7410
+ animateTo(marker: Marker, target: Space | Door | Coordinate | Node, options?: TAnimationOptions): Promise<void>;
6931
7411
  }
6932
7412
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
6933
7413
  export {};
@@ -7071,76 +7551,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/exporter' {
7071
7551
  export {};
7072
7552
  }
7073
7553
 
7074
- declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
7075
- import type { ParsedMVF } from '@mappedin/mvf';
7076
- import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
7077
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7078
- import { Connection, Coordinate } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7079
- import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/react-sdk/mappedin-js/src/types';
7080
- /**
7081
- * Represents a set of directions between two points.
7082
- *
7083
- * Directions are used to represent the path between two points on the map,
7084
- * as well as the instructions to follow the path.
7085
- */
7086
- export class Directions {
7087
- #private;
7088
- /**
7089
- * @internal
7090
- */
7091
- constructor(directions: DirectionsCollection, mapData: MapDataInternal);
7092
- /**
7093
- * All the coordinates ({@link Coordinate}) of the directions.
7094
- */
7095
- get coordinates(): Coordinate[];
7096
- /**
7097
- * The total distance of the path in meters.
7098
- */
7099
- get distance(): number;
7100
- /**
7101
- * The array of instructions ({@link TDirectionInstruction}).
7102
- */
7103
- get instructions(): TDirectionInstruction[];
7104
- lastConnectionAction?: 'take' | 'exit';
7105
- lastConnection?: Connection;
7106
- }
7107
- export class DirectionsInternal {
7108
- /**
7109
- * @hidden
7110
- */
7111
- constructor({ nodes, geojsonCollection, connections, groupBy, }: {
7112
- nodes: ParsedMVF['node.geojson'];
7113
- geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
7114
- connections: ParsedMVF['connection.json'];
7115
- groupBy?: string;
7116
- });
7117
- /**
7118
- * Get directions between two navigation targets.
7119
- *
7120
- * @hidden
7121
- * @param from
7122
- * @param to
7123
- * @param options
7124
- * @param mapData
7125
- */
7126
- getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
7127
- accessible: boolean;
7128
- smoothing: {
7129
- enabled: boolean;
7130
- radius: number;
7131
- };
7132
- zones: TDirectionZone[];
7133
- }, mapData: MapDataInternal) => Directions | undefined;
7134
- /**
7135
- * Get the node IDs that should be excluded from the navigation graph.
7136
- *
7137
- * @hidden
7138
- * @param accessible {boolean}
7139
- */
7140
- getExcludedNodeIds: (accessible: boolean) => string[];
7141
- }
7142
- }
7143
-
7144
7554
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/style' {
7145
7555
  import type { StyleCollection } from '@mappedin/mvf';
7146
7556
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
@@ -7195,9 +7605,15 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
7195
7605
  show(): void;
7196
7606
  /**
7197
7607
  * Hide the outdoor view.
7198
- * @param excludedStyleLayerIds {string[]} E
7608
+ * @param excludedStyleLayerIds {string[]}
7199
7609
  */
7200
7610
  hide(excludedStyleLayerIds?: string[]): void;
7611
+ /**
7612
+ * Set outdoor view opacity
7613
+ * @param targetOpacity {number | 'initial'}
7614
+ * @param excludedStyleLayerIds {string[]}
7615
+ */
7616
+ setOpacity(targetOpacity: number | 'initial', excludedStyleLayerIds?: string[]): void;
7201
7617
  }
7202
7618
  }
7203
7619
 
@@ -7259,7 +7675,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/images' {
7259
7675
 
7260
7676
  declare module '@mappedin/react-sdk/mappedin-js/src/search/internal' {
7261
7677
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
7262
- import type { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7678
+ import { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7263
7679
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
7264
7680
  import { z } from 'zod';
7265
7681
  export class InternalSearch {
@@ -7718,7 +8134,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/analytics/customer' {
7718
8134
  latitude: number;
7719
8135
  longitude: number;
7720
8136
  floorLevel?: number;
7721
- accuracy: number;
8137
+ accuracy?: number;
7722
8138
  };
7723
8139
  type AnalyticsAuth = {
7724
8140
  /** The API key for authentication. */
@@ -7795,6 +8211,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metada
7795
8211
 
7796
8212
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
7797
8213
  import { Object3D } from 'three';
8214
+ import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
7798
8215
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
7799
8216
  import type { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
7800
8217
  import type { ModelComponent } from '@mappedin/react-sdk/geojson/src/components/model';
@@ -7815,15 +8232,104 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
7815
8232
  type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
7816
8233
  };
7817
8234
  }
8235
+ export type PathMaterial = ShaderMaterial & {
8236
+ uniforms: PathUniforms;
8237
+ };
8238
+ export type PathMesh = Mesh<TubeGeometry, PathMaterial, Object3DEventMap>;
8239
+ export class PatMeshContainer extends Geometry3DObject3D {
8240
+ children: [PathMesh, PathMesh];
8241
+ }
7818
8242
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
7819
8243
  export class Geometry3D {
7820
8244
  id: string | number;
7821
8245
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
7822
- get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
8246
+ get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
7823
8247
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
7824
8248
  get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
7825
8249
  constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
7826
8250
  }
8251
+ export interface PathUniforms {
8252
+ vertexes: {
8253
+ type: 'f';
8254
+ value: number;
8255
+ };
8256
+ resolution: {
8257
+ type: 'v2';
8258
+ value: Vector2;
8259
+ };
8260
+ cameraParameters: {
8261
+ type: 'v2';
8262
+ value: Vector2;
8263
+ };
8264
+ complete: {
8265
+ type: 'f';
8266
+ value: number;
8267
+ };
8268
+ color: {
8269
+ type: 'c';
8270
+ value: Color;
8271
+ };
8272
+ pathLength: {
8273
+ type: 'f';
8274
+ value: number;
8275
+ };
8276
+ nearRadius: {
8277
+ type: 'f';
8278
+ value: number;
8279
+ };
8280
+ farRadius: {
8281
+ type: 'f';
8282
+ value: number;
8283
+ };
8284
+ nearZoom: {
8285
+ type: 'f';
8286
+ value: number;
8287
+ };
8288
+ farZoom: {
8289
+ type: 'f';
8290
+ value: number;
8291
+ };
8292
+ pulseColor: {
8293
+ type: 'c';
8294
+ value: Color;
8295
+ };
8296
+ pulse: {
8297
+ type: 'f';
8298
+ value: number;
8299
+ };
8300
+ pulseLength: {
8301
+ type: 'f';
8302
+ value: number;
8303
+ };
8304
+ pathIsVertical: {
8305
+ type: 'b';
8306
+ value: boolean;
8307
+ };
8308
+ arrowAnimationTimer: {
8309
+ type: 'f';
8310
+ value: number;
8311
+ };
8312
+ arrowTexture: {
8313
+ type: 't';
8314
+ value: Texture;
8315
+ };
8316
+ displayArrowsOnPath: {
8317
+ type: 'b';
8318
+ value: boolean;
8319
+ };
8320
+ flattenFactor: {
8321
+ type: 'f';
8322
+ value: number;
8323
+ };
8324
+ showPulse: {
8325
+ type: 'b';
8326
+ value: boolean;
8327
+ };
8328
+ opacityMultiplier: {
8329
+ type: 'f';
8330
+ value: number;
8331
+ };
8332
+ }
7827
8333
  }
7828
8334
 
7829
8335
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
@@ -8035,7 +8541,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
8035
8541
  declare module '@mappedin/react-sdk/geojson/src/entities' {
8036
8542
  export { updateInteractivity } from '@mappedin/react-sdk/geojson/src/entities/utils';
8037
8543
  export { Geometry2D, Geometry2DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
8038
- export { Geometry3D, Geometry3DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8544
+ export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8039
8545
  }
8040
8546
 
8041
8547
  declare module '@mappedin/react-sdk/geojson/src/types/options' {
@@ -8645,13 +9151,14 @@ declare module '@mappedin/react-sdk/geojson/src/systems/pan-bounds/system' {
8645
9151
  }
8646
9152
 
8647
9153
  declare module '@mappedin/react-sdk/geojson/src/systems/custom-geometry/system' {
9154
+ import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
8648
9155
  import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8649
9156
  /**
8650
9157
  * System that renders and updates custom geometry entities. For every custom geometry entity, this calls the builder's
8651
9158
  * setup method once (when it is visible) and then the update method every frame.
8652
9159
  */
8653
9160
  export class CustomGeometrySystem {
8654
- constructor(state: RendererState);
9161
+ constructor(state: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8655
9162
  update(): void;
8656
9163
  }
8657
9164
  }
@@ -8840,6 +9347,23 @@ declare module '@mappedin/react-sdk/geojson/src/utils/browser' {
8840
9347
 
8841
9348
  declare module '@mappedin/react-sdk/geojson/src/utils/fp' {
8842
9349
  export function noop(): void;
9350
+ export type KeysOfUnion<T> = T extends T ? keyof T : never;
9351
+ /**
9352
+ * Given an object and a number of properties as strings, return version
9353
+ * of that object with only those properties.
9354
+ *
9355
+ * @param src - the object
9356
+ * @param properties - an array of property names chosen
9357
+ * to appear on the resulting object.
9358
+ * @returns object with limited properties.
9359
+ * @example
9360
+ * ```ts
9361
+ * let foo = { name: 'Charlie', age: 10 };
9362
+ * let justName = pick(foo, ['name']); // justName = { name: 'Charlie' }
9363
+ * ```
9364
+ */
9365
+ export function pick<T extends object>(src: T, properties: KeysOfUnion<T>[]): Partial<T>;
9366
+ export function isEmpty(obj: Record<string, any>): boolean;
8843
9367
  }
8844
9368
 
8845
9369
  declare module '@mappedin/react-sdk/geojson/src/utils/tranform-request' {
@@ -8985,8 +9509,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/style' {
8985
9509
  }
8986
9510
 
8987
9511
  declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
8988
- import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/react-sdk/geojson/src';
9512
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
8989
9513
  import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
9514
+ import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
8990
9515
  import type { Geometry3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8991
9516
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
8992
9517
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
@@ -9003,7 +9528,6 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9003
9528
  export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
9004
9529
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
9005
9530
  export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
9006
- export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
9007
9531
  export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
9008
9532
  export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
9009
9533
  export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
@@ -9016,6 +9540,8 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9016
9540
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9017
9541
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
9018
9542
  export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
9543
+ export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
9544
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
9019
9545
  }
9020
9546
 
9021
9547
  declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-processor' {
@@ -9133,7 +9659,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/interactions/system' {
9133
9659
 
9134
9660
  declare module '@mappedin/react-sdk/geojson/src/systems/camera/system' {
9135
9661
  import type { PerspectiveCamera, Scene, WebGLRenderer } from 'three';
9136
- import { Vector2, Vector3 } from 'three';
9662
+ import { Object3D, Vector2, Vector3 } from 'three';
9137
9663
  import { PubSub } from '@mappedin/react-sdk/packages/common/pubsub';
9138
9664
  import * as CAMERA_CONSTANTS from '@mappedin/react-sdk/geojson/src/systems/camera/constants';
9139
9665
  import type { AnimateCameraTarget, CameraControlsOptions, CameraFocusOnOptions } from '@mappedin/react-sdk/geojson/src/systems/camera/types';
@@ -9579,6 +10105,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/camera/system' {
9579
10105
  position: Vector3;
9580
10106
  zoom: number;
9581
10107
  };
10108
+ debugContainer: Object3D<import("three").Object3DEventMap>;
9582
10109
  focusOn(pointCloud: Vector3[], { insetsPadding }: any, options?: CameraFocusOnOptions): void;
9583
10110
  resize(canvasWidth: number, canvasHeight: number): void;
9584
10111
  }