@mappedin/mappedin-js 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.
@@ -8,6 +8,7 @@
8
8
  // ../mappedin-js/@packages/internal/common
9
9
  // ../mappedin-js/@mappedin/core-sdk
10
10
  // ../mappedin-js/@mappedin/core-sdk/src/camera
11
+ // ../mappedin-js/@packages/internal/geojson-navigator
11
12
  // ../mappedin-js/@tweenjs/tween.js
12
13
  // ../mappedin-js/@mappedin/mvf/dist/locale
13
14
  // ../mappedin-js/three
@@ -16,7 +17,6 @@
16
17
  // ../mappedin-js/@turf/turf
17
18
  // ../mappedin-js/@packages/internal/quad-tree
18
19
  // ../mappedin-js/@packages/internal/outdoor-context-v4
19
- // ../mappedin-js/@packages/internal/geojson-navigator
20
20
  // ../mappedin-js/minisearch
21
21
  // ../mappedin-js/three/addons/loaders/GLTFLoader.js
22
22
  // ../mappedin-js/@mapbox/point-geometry
@@ -35,7 +35,7 @@ declare module '@mappedin/mappedin-js' {
35
35
  import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
36
36
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
37
37
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
38
- import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
38
+ import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack } from '@mappedin/mvf';
39
39
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
40
40
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
41
41
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
@@ -288,6 +288,7 @@ declare module '@mappedin/mappedin-js' {
288
288
  };
289
289
  /**
290
290
  * @internal
291
+ * @deprecated Use {@link hydrateMapData} instead.
291
292
  *
292
293
  * Returns a {@link MapData} instance from a parsed MVF object.
293
294
  */
@@ -299,6 +300,37 @@ declare module '@mappedin/mappedin-js' {
299
300
  * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
300
301
  */
301
302
  export function setUseEnterpriseAPI(value: boolean): void;
303
+ export type THydrateMapDataBundle = {
304
+ type: 'binary';
305
+ options?: {
306
+ enterprise?: boolean;
307
+ };
308
+ languagePacks?: {
309
+ language: {
310
+ code: string;
311
+ name: string;
312
+ };
313
+ localePack: Uint8Array;
314
+ }[];
315
+ main: Uint8Array;
316
+ } | {
317
+ type: 'json';
318
+ options?: {
319
+ enterprise?: boolean;
320
+ };
321
+ languagePacks?: {
322
+ language: {
323
+ code: string;
324
+ name: string;
325
+ };
326
+ localePack: ParsedMVFLocalePack;
327
+ }[];
328
+ main: TMVF;
329
+ };
330
+ /**
331
+ * Load a MapData instance from a backup including language packs. Pass in userOptions to ensure outdoor view is available.
332
+ */
333
+ export const hydrateMapData: (backup: THydrateMapDataBundle | TMVF, userOptions?: TGetMapDataOptions) => Promise<MapData>;
302
334
  /**
303
335
  * Asynchronously retrieves map data ({@link MapData}) based on user-provided options.
304
336
  *
@@ -324,13 +356,13 @@ declare module '@mappedin/mappedin-js' {
324
356
  export { parseMVF, unzipMVF, enableTestMode };
325
357
  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, };
326
358
  export type * from 'geojson';
327
- 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/mappedin-js/mappedin-js/src/types';
359
+ 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/mappedin-js/mappedin-js/src/types';
328
360
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
329
361
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
330
362
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
331
363
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
332
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
333
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
364
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
365
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
334
366
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
335
367
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
336
368
  }
@@ -339,11 +371,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
339
371
  import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
340
372
  import { PubSub } from '@packages/internal/common';
341
373
  import type { TSearchOptions } from '@packages/internal/mvf-utils';
342
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
374
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
343
375
  import type EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
344
376
  import type EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
345
377
  import type EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
346
378
  import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
379
+ import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
380
+ import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
347
381
  /**
348
382
  * A WeakMap to associate {@link MapData} instances with their internal representation.
349
383
  * We need a way to get the internal data object from the API
@@ -470,6 +504,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
470
504
  * const annotations = mapData.getByType('annotation');
471
505
  */
472
506
  getByType(type: 'annotation'): Annotation[];
507
+ /**
508
+ * @returns The nodes ({@link Node}) on the map.
509
+ * @example
510
+ * const nodes = mapData.getByType('node');
511
+ */
512
+ getByType(type: 'node'): Node[];
473
513
  /**
474
514
  * @returns The enterprise locations ({@link EnterpriseLocation}) on the map.
475
515
  * @example
@@ -487,7 +527,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
487
527
  * @example
488
528
  * const enterpriseVenue = mapData.getByType('enterprise-venue');
489
529
  */
490
- getByType(type: 'enterprise-venue'): EnterpriseVenue;
530
+ getByType(type: 'enterprise-venue'): EnterpriseVenue | undefined;
491
531
  /**
492
532
  * Retrieves a specific map feature by its type and ID.
493
533
  *
@@ -497,16 +537,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
497
537
  * @example
498
538
  * const space = mapData.getById('space', 'space-id');
499
539
  */
500
- getById(type: 'space', id: string): Space | undefined;
501
- getById(type: 'door', id: string): Door | undefined;
502
- getById(type: 'floor', id: string): Floor | undefined;
503
- getById(type: 'floor-stack', id: string): FloorStack | undefined;
504
- getById(type: 'connection', id: string): Connection | undefined;
505
- getById(type: 'object', id: string): MapObject | undefined;
506
- getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
507
- getById(type: 'annotation', id: string): Annotation | undefined;
508
- getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
509
- getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
540
+ 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;
510
541
  getById(type: string, id: string): object | undefined;
511
542
  /**
512
543
  * Changes the language of the map data.
@@ -527,6 +558,46 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
527
558
  * @internal
528
559
  */
529
560
  get currentLanguage(): import("@mappedin/mvf").Language | undefined;
561
+ /**
562
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to another on the map.
563
+ *
564
+ * @param from The starting point for navigation.
565
+ * @param to The destination point.
566
+ * @param options Optional parameters for getting directions.
567
+ * @returns Directions from the start to the destination point.
568
+ * @example
569
+ * const directions = await map.getDirections(space1, space2);
570
+ */
571
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
572
+ /**
573
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
574
+ *
575
+ * @param from The starting point for navigation.
576
+ * @param to The destination points.
577
+ * @param options Optional parameters for getting directions.
578
+ * @returns Directions from the start to the destination points.
579
+ * @example
580
+ * const directions = await map.getDirections(space1, [space2, space3]);
581
+ */
582
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
583
+ /**
584
+ * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
585
+ *
586
+ * @param from The starting point.
587
+ * @param to The destination point.
588
+ * @returns The distance between the start and destination points in meters.
589
+ */
590
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
591
+ /**
592
+ * Creates a backup of the map data including language packs.
593
+ * @internal
594
+ */
595
+ toBinaryBundle({ downloadLanguagePacks }?: {
596
+ downloadLanguagePacks?: boolean;
597
+ }): Promise<void | import(".").THydrateMapDataBundle>;
598
+ toJSONBundle({ downloadLanguagePacks }?: {
599
+ downloadLanguagePacks?: boolean;
600
+ }): Promise<import(".").THydrateMapDataBundle>;
530
601
  }
531
602
  export default MapData;
532
603
  /**
@@ -539,7 +610,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
539
610
  import type { ClickPayload } from '@mappedin/core-sdk';
540
611
  import type { TStackedMapsEvents } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
541
612
  import type { Coordinate, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
542
- import type { Label, Marker, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
613
+ import type { Label, Marker, Model, Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
543
614
  import type { CameraTransform } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
544
615
  export type TFloorChangeReason = '' | 'blue-dot-floor-change' | 'elevation-change';
545
616
  export type TClickPayload = {
@@ -547,6 +618,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
547
618
  * The coordinate of the interaction.
548
619
  */
549
620
  coordinate: Coordinate;
621
+ /**
622
+ * The interactive paths which the user interaction passed through.
623
+ */
624
+ paths: Path[];
550
625
  /**
551
626
  * The interactive spaces which the user interaction passed through.
552
627
  */
@@ -645,7 +720,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
645
720
  }
646
721
 
647
722
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
648
- import type Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
723
+ import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
649
724
  import Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
650
725
  import Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
651
726
  import Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
@@ -664,9 +739,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
664
739
  import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
665
740
  import EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
666
741
  import { PubSub } from '@packages/internal/common';
667
- import type { LanguagePack, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
742
+ import type { LanguagePack, Places, TMapDataInternalOptions } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
668
743
  import { type LocalePackUrls } from '@packages/internal/mvf-utils';
669
- import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
744
+ import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
745
+ import { type Directions, DirectionsInternal } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
746
+ import { type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src';
670
747
  /**
671
748
  * Internal class representing detailed map data.
672
749
  *
@@ -701,6 +778,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
701
778
  */
702
779
  readonly obstructionIdByEntranceId: Record<string, string>;
703
780
  readonly venue?: EnterpriseVenue;
781
+ directions: DirectionsInternal;
704
782
  enterpriseMode: boolean;
705
783
  nodesById: MapDataRecords['nodesById'];
706
784
  spacesById: MapDataRecords['spacesById'];
@@ -715,6 +793,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
715
793
  categoriesById: MapDataRecords['categoriesById'];
716
794
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
717
795
  locationsBySpaceId: MapDataRecords['mvfLocationsBySpaceId'];
796
+ locationIdsByNodeId: MapDataRecords['locationIdsByNodeId'];
718
797
  mvfAnnotationsById: MapDataRecords['mvfAnnotationsById'];
719
798
  mvfConnectionsById: MapDataRecords['mvfConnectionsById'];
720
799
  mvfConnectionsByNodeId: MapDataRecords['mvfConnectionsByNodeId'];
@@ -732,15 +811,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
732
811
  languagePacks: {
733
812
  [languageCode: string]: LanguagePack;
734
813
  };
814
+ binaryBundle?: Uint8Array;
735
815
  /**
736
816
  * @internal
737
817
  */
738
- constructor(mvf: ParsedMVF, { outdoorViewToken, localePacksUrls: localePacks, enterprise, languagePacks, }?: {
739
- enterprise?: boolean;
740
- outdoorViewToken?: string;
741
- localePacksUrls?: LocalePackUrls;
742
- languagePacks?: LanguagePackHydrationItem[];
743
- });
818
+ constructor(mvf: ParsedMVF, options: TMapDataInternalOptions);
744
819
  /**
745
820
  * Retrieves the map name.
746
821
  *
@@ -842,6 +917,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
842
917
  * change the langauge of the data objects in mapdata
843
918
  */
844
919
  changeLanguage(languageCode: string): Promise<void>;
920
+ getDirectionsMultiDestination: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
921
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions & {
922
+ multiSegment?: true;
923
+ }) => Directions | Directions[] | undefined;
924
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
925
+ toJSONBundle({ downloadLanguagePacks, }?: {
926
+ downloadLanguagePacks?: boolean;
927
+ }): Promise<THydrateMapDataBundle>;
928
+ toBinaryBundle({ downloadLanguagePacks, }?: {
929
+ downloadLanguagePacks?: boolean;
930
+ }): Promise<THydrateMapDataBundle | void>;
845
931
  /**
846
932
  * Cleans up resources used by the instance.
847
933
  *
@@ -849,7 +935,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
849
935
  */
850
936
  destroy(): void;
851
937
  }
852
- export { MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
938
+ export { Node, MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
853
939
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
854
940
  export type { Places };
855
941
  }
@@ -862,7 +948,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
862
948
  import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
863
949
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
864
950
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
865
- import type { Door, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
951
+ import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
866
952
  import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
867
953
  import type { Label, Marker, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
868
954
  import type { TEventPayload } from '@mappedin/mappedin-js/mappedin-js/src/events';
@@ -994,6 +1080,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
994
1080
  getState<T extends Space | MapObject | Label | Marker | Image | string>(target: T): TGetState<T> | undefined;
995
1081
  setHoverColor(c: string): void;
996
1082
  getHoverColor(): string | undefined;
1083
+ /**
1084
+ * @internal
1085
+ */
1086
+ convertAltitudeToMercatorZoomLevel(altitude: number): number;
1087
+ /**
1088
+ * @internal
1089
+ */
1090
+ convertMercatorZoomLevelToAltitude(zoomLevel: number): number;
997
1091
  /**
998
1092
  * Determines if a given target is within the viewport.
999
1093
  *
@@ -1016,6 +1110,23 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1016
1110
  * const directions = await map.getDirections(space1, space2);
1017
1111
  */
1018
1112
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
1113
+ /**
1114
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
1115
+ *
1116
+ * @param from The starting point for navigation.
1117
+ * @param to The destination points.
1118
+ * @param options Optional parameters for getting directions.
1119
+ * @returns Directions from the start to the destination points.
1120
+ */
1121
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
1122
+ /**
1123
+ * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
1124
+ *
1125
+ * @param from The starting point.
1126
+ * @param to The destination point.
1127
+ * @returns The distance between the start and destination points in meters.
1128
+ */
1129
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number | undefined;
1019
1130
  /**
1020
1131
  * Creates a {@link Coordinate} on the map.
1021
1132
  *
@@ -1027,8 +1138,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1027
1138
  * // Create a coordinate at the CN Tower.
1028
1139
  * const coord = map.createCoordinate(43.642567, -79.387054);
1029
1140
  */
1030
- createCoordinate(latitude: number, longitude: number, floor?: Floor): import(".").Coordinate;
1031
- createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): import(".").Coordinate | undefined;
1141
+ createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
1142
+ createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
1032
1143
  /**
1033
1144
  * @hidden
1034
1145
  * @experimental
@@ -1156,13 +1267,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
1156
1267
 
1157
1268
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1158
1269
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1159
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1270
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1160
1271
  import type { Label, Marker, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1161
1272
  import type { EasingCurve } from '@mappedin/core-sdk/src/camera';
1162
1273
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1163
1274
  export type DeepRequired<T> = Required<{
1164
1275
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1165
1276
  }>;
1277
+ export type DeepPartial<T> = Partial<{
1278
+ [K in keyof T]: T[K] extends Partial<T[K]> ? DeepPartial<T[K]> : T[K];
1279
+ }>;
1166
1280
  export type CancellablePromise<T> = {
1167
1281
  promise: Promise<T>;
1168
1282
  cancel: () => void;
@@ -1228,6 +1342,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1228
1342
  * The {@link Coordinate} at which this instruction applies.
1229
1343
  */
1230
1344
  coordinate: Coordinate;
1345
+ /**
1346
+ * @internal
1347
+ */
1348
+ node: Node;
1231
1349
  };
1232
1350
  /**
1233
1351
  * Defines the state for a label when its appearance is updated.
@@ -1485,10 +1603,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1485
1603
  left: number;
1486
1604
  };
1487
1605
  };
1606
+ export type TCameraFocusOnTargets = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node;
1488
1607
  /**
1489
1608
  * Defines the target for the {@link Camera} focus operation.
1609
+ * @interface
1490
1610
  */
1491
- export type TCameraFocusOnTarget = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | (Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door)[];
1611
+ export type TCameraFocusOnTarget = TCameraFocusOnTargets | TCameraFocusOnTargets[];
1492
1612
  /**
1493
1613
  * Defines the target for camera operations.
1494
1614
  */
@@ -1515,7 +1635,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1515
1635
  /**
1516
1636
  * Defines the target for navigation operations.
1517
1637
  */
1518
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation;
1638
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node;
1519
1639
  /**
1520
1640
  * Defines the special zone for navigation operations.
1521
1641
  */
@@ -1973,26 +2093,100 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1973
2093
  id?: string;
1974
2094
  };
1975
2095
  export type TBlueDotOptions = {
1976
- /** The radius of the BlueDot in pixels. The BlueDot will maintain this size clamped to a minimum of 0.35 metres. */
2096
+ /**
2097
+ * The radius of the BlueDot in pixels. The BlueDot will maintain this size clamped to a minimum of 0.35 metres.
2098
+ * @default 10
2099
+ */
1977
2100
  radius?: number;
1978
- /** The color of the BlueDot core element. */
2101
+ /**
2102
+ * The color of the BlueDot core element.
2103
+ * @default #2266ff
2104
+ */
1979
2105
  color?: string;
1980
- /** Options for the accuracy ring around the BlueDot. */
2106
+ /**
2107
+ * The color of the BlueDot when it has timed out and gone inactive.
2108
+ * @default #808080
2109
+ */
2110
+ inactiveColor?: string;
2111
+ /**
2112
+ * Options for the accuracy ring around the BlueDot.
2113
+ */
1981
2114
  accuracyRing?: {
1982
- /** The color of the accuracy ring. */
2115
+ /**
2116
+ * The color of the accuracy ring.
2117
+ * @default #2266ff
2118
+ */
1983
2119
  color?: string;
1984
- /** The opacity of the accuracy ring. */
2120
+ /**
2121
+ * The opacity of the accuracy ring.
2122
+ * @default 0.3
2123
+ */
1985
2124
  opacity?: number;
1986
2125
  };
1987
2126
  /**
1988
- * Options for the bearing directional indicator.
2127
+ * Options for the heading directional indicator.
1989
2128
  */
1990
- bearing?: {
1991
- /** The color of the bearing cone. */
2129
+ heading?: {
2130
+ /**
2131
+ * The color of the heading cone.
2132
+ * @default #2266ff
2133
+ */
1992
2134
  color?: string;
1993
- /** The opacity of the bearing cone. */
2135
+ /**
2136
+ * The opacity of the heading cone.
2137
+ * @default 0.7
2138
+ */
1994
2139
  opacity?: number;
1995
2140
  };
2141
+ /**
2142
+ * The duration of the timeout in milliseconds.
2143
+ * If the BlueDot does not receive a position update within this time, it will grey out until a position is received.
2144
+ * @default 30000
2145
+ */
2146
+ timeout?: number;
2147
+ /**
2148
+ * Whether to watch the browser's position.
2149
+ * @default true
2150
+ */
2151
+ watchBrowserPosition?: boolean;
2152
+ /**
2153
+ * Whether to log debug messages.
2154
+ * @default false
2155
+ */
2156
+ debug?: boolean;
2157
+ };
2158
+ /**
2159
+ * Position update options for the {@link BlueDot.update} method.
2160
+ */
2161
+ export type TBlueDotPositionUpdate = {
2162
+ /**
2163
+ * Latitude to override.
2164
+ * Set to `'device'` to reset to the device's latitude.
2165
+ */
2166
+ latitude?: GeolocationPosition['coords']['latitude'] | 'device' | undefined;
2167
+ /**
2168
+ * Longitude to override.
2169
+ * Set to `'device'` to reset to the device's longitude.
2170
+ */
2171
+ longitude?: GeolocationPosition['coords']['longitude'] | 'device' | undefined;
2172
+ /**
2173
+ * Accuracy to override.
2174
+ * Set to `'device'` to reset to the device's accuracy.
2175
+ * Set to `undefined` to disable the accuracy ring.
2176
+ */
2177
+ accuracy?: GeolocationPosition['coords']['accuracy'] | 'device' | undefined;
2178
+ /**
2179
+ * Heading to override.
2180
+ * Set to `'device'` to reset to the device's heading.
2181
+ * Set to `undefined` to disable the heading indicator.
2182
+ */
2183
+ heading?: GeolocationPosition['coords']['heading'] | 'device' | undefined;
2184
+ /**
2185
+ * Floor level to override.
2186
+ * Set to `'device'` to reset to the device's floor level.
2187
+ * Set to `undefined` to disable floor level and show the BlueDot on all floors.
2188
+ */
2189
+ floor?: Floor | 'device' | undefined;
1996
2190
  };
1997
2191
  export type LanguagePackHydrationItem = {
1998
2192
  language: Language;
@@ -2011,8 +2205,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
2011
2205
  }
2012
2206
 
2013
2207
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2208
+ import { type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
2014
2209
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
2015
2210
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
2211
+ import { Path, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
2016
2212
  import type { RendererCore } from '@mappedin/core-sdk';
2017
2213
  /**
2018
2214
  * Options for navigation.
@@ -2047,6 +2243,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2047
2243
  * @default '#40A9FF'
2048
2244
  */
2049
2245
  color?: string;
2246
+ /**
2247
+ * Whether the path should be clickable.
2248
+ *
2249
+ * @defaultValue false
2250
+ */
2251
+ interactive?: boolean;
2050
2252
  /**
2051
2253
  * The accent color of the path. This is applied to arrows if they are displayed
2052
2254
  * @default 'blue'
@@ -2095,16 +2297,34 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2095
2297
  * @internal
2096
2298
  */
2097
2299
  get currentMap(): GeojsonApiMapObject;
2300
+ /**
2301
+ * Returns true if the navigation is for a multi-floor path.
2302
+ */
2303
+ get isMultiFloor(): boolean;
2098
2304
  /**
2099
2305
  * @internal
2100
2306
  */
2101
2307
  constructor(core: RendererCore, currentMapGetter: CurrentMapGetter);
2308
+ /**
2309
+ * @internal
2310
+ */
2311
+ getPathById(id: string): {
2312
+ path: Path;
2313
+ entityIds: string[];
2314
+ } | undefined;
2315
+ /**
2316
+ * @internal
2317
+ */
2318
+ getMarkerById(id: string): {
2319
+ instruction: TDirectionInstruction;
2320
+ marker: Marker;
2321
+ } | undefined;
2102
2322
  /**
2103
2323
  * Draws the specified directions on the map.
2104
2324
  * @param directions The directions to be drawn.
2105
2325
  * @param options Optional additional options for the navigation.
2106
2326
  */
2107
- draw: (directions: Directions, options?: TNavigationOptions) => Promise<unknown>;
2327
+ draw: (directions: Directions | Directions[], options?: TNavigationOptions) => Promise<unknown>;
2108
2328
  /**
2109
2329
  * Clears any drawn navigation paths or directions from the map.
2110
2330
  */
@@ -2116,6 +2336,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2116
2336
 
2117
2337
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
2118
2338
  export { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
2339
+ export { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot';
2119
2340
  export { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
2120
2341
  export { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
2121
2342
  export { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
@@ -2201,7 +2422,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category'
2201
2422
 
2202
2423
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location' {
2203
2424
  import type { EnterpriseLocation as MVFEnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
2204
- import type { Coordinate, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2425
+ import type { Coordinate, EnterpriseCategory, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2205
2426
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2206
2427
  import type Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
2207
2428
  /**
@@ -2262,7 +2483,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location'
2262
2483
  */
2263
2484
  constructor(data: MapDataInternal, options: {
2264
2485
  mvfData: MVFEnterpriseLocation;
2486
+ categoryIds: string[];
2265
2487
  });
2488
+ get categories(): EnterpriseCategory[];
2266
2489
  get coordinates(): Coordinate[];
2267
2490
  get nodes(): Node[];
2268
2491
  get spaces(): Space[];
@@ -2353,6 +2576,77 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
2353
2576
  export default EnterpriseVenue;
2354
2577
  }
2355
2578
 
2579
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions' {
2580
+ import type { ParsedMVF } from '@mappedin/mvf';
2581
+ import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
2582
+ import { Coordinate, Node, type MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2583
+ import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
2584
+ /**
2585
+ * Represents a set of directions between two points.
2586
+ *
2587
+ * Directions are used to represent the path between two points on the map,
2588
+ * as well as the instructions to follow the path.
2589
+ */
2590
+ export class Directions {
2591
+ #private;
2592
+ /**
2593
+ * @internal
2594
+ */
2595
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal);
2596
+ /**
2597
+ * @internal
2598
+ */
2599
+ get path(): Node[];
2600
+ /**
2601
+ * All the coordinates ({@link Coordinate}) of the directions.
2602
+ */
2603
+ get coordinates(): Coordinate[];
2604
+ /**
2605
+ * The total distance of the path in meters.
2606
+ */
2607
+ get distance(): number;
2608
+ /**
2609
+ * The array of instructions ({@link TDirectionInstruction}).
2610
+ */
2611
+ get instructions(): TDirectionInstruction[];
2612
+ }
2613
+ export class DirectionsInternal {
2614
+ /**
2615
+ * @hidden
2616
+ */
2617
+ constructor({ nodes, geojsonCollection, connections, groupBy, }: {
2618
+ nodes: ParsedMVF['node.geojson'];
2619
+ geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
2620
+ connections: ParsedMVF['connection.json'];
2621
+ groupBy?: string;
2622
+ });
2623
+ /**
2624
+ * Get directions between two navigation targets.
2625
+ *
2626
+ * @hidden
2627
+ * @param from
2628
+ * @param to
2629
+ * @param options
2630
+ * @param mapData
2631
+ */
2632
+ getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
2633
+ accessible: boolean;
2634
+ smoothing: {
2635
+ enabled: boolean;
2636
+ radius: number;
2637
+ };
2638
+ zones: TDirectionZone[];
2639
+ }, mapData: MapDataInternal) => Directions | undefined;
2640
+ /**
2641
+ * Get the node IDs that should be excluded from the navigation graph.
2642
+ *
2643
+ * @hidden
2644
+ * @param accessible {boolean}
2645
+ */
2646
+ getExcludedNodeIds: (accessible: boolean) => string[];
2647
+ }
2648
+ }
2649
+
2356
2650
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps' {
2357
2651
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
2358
2652
  import type { RendererCore } from '@mappedin/core-sdk';
@@ -2433,7 +2727,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-tr
2433
2727
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
2434
2728
  import type { NodeCollection } from '@mappedin/mvf';
2435
2729
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
2436
- import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2730
+ import type { EnterpriseLocation, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2437
2731
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
2438
2732
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2439
2733
  /**
@@ -2467,6 +2761,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
2467
2761
  floorId: string;
2468
2762
  mvfData: NodeCollection['features'][number];
2469
2763
  });
2764
+ get locations(): EnterpriseLocation[];
2470
2765
  /**
2471
2766
  * Gets the {@link Floor} associated with the node.
2472
2767
  *
@@ -2480,6 +2775,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
2480
2775
  * @returns {Coordinate} The node's coordinate.
2481
2776
  */
2482
2777
  get coordinate(): Coordinate;
2778
+ /**
2779
+ * Gets the external ID of the node.
2780
+ *
2781
+ * @returns {string} The external ID of the node.
2782
+ */
2783
+ get externalId(): string;
2483
2784
  /**
2484
2785
  * Gets the neighboring nodes of this node.
2485
2786
  *
@@ -2552,6 +2853,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
2552
2853
  * @returns {string} The name of the door.
2553
2854
  */
2554
2855
  get name(): string;
2856
+ /**
2857
+ * Gets the external ID of the door.
2858
+ *
2859
+ * @returns {string} The external ID of the door.
2860
+ */
2861
+ get externalId(): string;
2555
2862
  get description(): string;
2556
2863
  get images(): Image[];
2557
2864
  /**
@@ -2655,8 +2962,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2655
2962
  * @returns {TSpaceType} The type of the space.
2656
2963
  */
2657
2964
  get type(): TSpaceType;
2965
+ /**
2966
+ * Gets the description of the space.
2967
+ *
2968
+ * @returns {string} The description of the space, or an empty string if no description exists.
2969
+ */
2658
2970
  get description(): string;
2971
+ /**
2972
+ * Gets the array of images associated with the space.
2973
+ *
2974
+ * @returns {Image[]} An array of Image objects, or an empty array if no images exist.
2975
+ */
2659
2976
  get images(): Image[];
2977
+ /**
2978
+ * Gets the external identifier of the space.
2979
+ *
2980
+ * @returns {string} The external ID of the space, or an empty string if no external ID exists.
2981
+ */
2982
+ get externalId(): string;
2660
2983
  /**
2661
2984
  * @internal
2662
2985
  */
@@ -2749,6 +3072,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor' {
2749
3072
  * @returns {string} The name of the floor.
2750
3073
  */
2751
3074
  get name(): string;
3075
+ /**
3076
+ * Gets the external ID of the floor.
3077
+ *
3078
+ * @returns {string} The external ID of the floor.
3079
+ */
3080
+ get externalId(): string;
2752
3081
  /**
2753
3082
  * Gets the elevation of the floor.
2754
3083
  *
@@ -2824,7 +3153,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor' {
2824
3153
  }
2825
3154
 
2826
3155
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connection' {
2827
- import type { FeatureCollection, Image, Point, SpaceProperties } from '@mappedin/mvf';
3156
+ import type { Feature, FeatureCollection, Image, Point, SpaceProperties, Connection as MVFConnection } from '@mappedin/mvf';
2828
3157
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
2829
3158
  import type { Floor, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2830
3159
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
@@ -2854,7 +3183,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connectio
2854
3183
  * @internal
2855
3184
  */
2856
3185
  constructor(data: MapDataInternal, options: {
2857
- mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]>;
3186
+ mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]> | Record<string, Feature<Point, MVFConnection>>;
3187
+ accessible?: boolean;
2858
3188
  });
2859
3189
  /**
2860
3190
  * Gets the name of the connection.
@@ -2864,6 +3194,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connectio
2864
3194
  get name(): string;
2865
3195
  get description(): string;
2866
3196
  get images(): Image[];
3197
+ get accessible(): boolean;
3198
+ /**
3199
+ * Gets the external ID of the connection.
3200
+ *
3201
+ * @returns {string} The external ID of the connection.
3202
+ */
2867
3203
  get externalId(): string;
2868
3204
  /**
2869
3205
  /**
@@ -2952,6 +3288,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object' {
2952
3288
  * @returns {string} The name of the object.
2953
3289
  */
2954
3290
  get name(): string;
3291
+ /**
3292
+ * Gets the external ID of the MapObject.
3293
+ *
3294
+ * @returns {string} The external ID of the object.
3295
+ */
3296
+ get externalId(): string;
3297
+ /**
3298
+ * Gets the description of the MapObject.
3299
+ *
3300
+ * @returns {string} The description of the object.
3301
+ */
2955
3302
  get description(): string;
2956
3303
  get images(): Image[];
2957
3304
  /**
@@ -3137,6 +3484,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi' {
3137
3484
  * @returns {Coordinate} The POI's coordinate.
3138
3485
  */
3139
3486
  get coordinate(): Coordinate;
3487
+ /**
3488
+ * Gets the external ID of the POI.
3489
+ *
3490
+ * @returns {string} The external ID of the POI.
3491
+ */
3492
+ get externalId(): string;
3140
3493
  /**
3141
3494
  * Serializes the POI data to JSON.
3142
3495
  *
@@ -3209,6 +3562,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotatio
3209
3562
  * @returns {string} The annotation type.
3210
3563
  */
3211
3564
  get type(): string;
3565
+ /**
3566
+ * Gets the external ID of the annotation.
3567
+ *
3568
+ * @returns {string} The external ID of the annotation.
3569
+ */
3570
+ get externalId(): string;
3212
3571
  /**
3213
3572
  * Gets the center {@link Coordinate} of the annotation.
3214
3573
  *
@@ -3341,6 +3700,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
3341
3700
  * @returns {string | undefined } The name of the image.
3342
3701
  */
3343
3702
  get name(): string | undefined;
3703
+ /**
3344
3704
  /**
3345
3705
  * Serializes the image data to JSON.
3346
3706
  *
@@ -3403,6 +3763,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
3403
3763
  * @returns {string} The name of the FloorStack.
3404
3764
  */
3405
3765
  get name(): string;
3766
+ /**
3767
+ * Gets the externalId of FloorStack
3768
+ */
3769
+ get externalId(): string;
3406
3770
  /**
3407
3771
  * Gets the floors ({@link Floor}) included in this FloorStack.
3408
3772
  *
@@ -3451,6 +3815,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
3451
3815
  annotationsById: Record<string, Annotation>;
3452
3816
  locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
3453
3817
  categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
3818
+ locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
3454
3819
  venue: MVFEnterpriseVenue;
3455
3820
  spaceIdsByDestinationNodeId: Record<string, string[]>;
3456
3821
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
@@ -3475,6 +3840,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
3475
3840
  * @internal
3476
3841
  */
3477
3842
  export const createEnterpriseDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
3843
+ locationIdsByNodeId: Record<string, string[]>;
3478
3844
  locationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
3479
3845
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
3480
3846
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
@@ -3526,6 +3892,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
3526
3892
  import type MapObject from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object';
3527
3893
  import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack } from '@mappedin/mvf';
3528
3894
  import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3895
+ import { LocalePackUrls } from '@packages/internal/mvf-utils';
3896
+ import { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
3529
3897
  /**
3530
3898
  * Places are the main objects that can be searched for.
3531
3899
  */
@@ -3546,6 +3914,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
3546
3914
  categories: Record<string, MvfEnterpriseCategory>;
3547
3915
  };
3548
3916
  };
3917
+ export type TMapDataInternalOptions = {
3918
+ enterprise?: boolean;
3919
+ outdoorViewToken?: string;
3920
+ localePacksUrls?: LocalePackUrls;
3921
+ languagePacks?: LanguagePackHydrationItem[];
3922
+ binaryBundle?: Uint8Array;
3923
+ };
3549
3924
  }
3550
3925
 
3551
3926
  declare module '@mappedin/mappedin-js/mappedin-js/src' {
@@ -3554,7 +3929,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3554
3929
  import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
3555
3930
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
3556
3931
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3557
- import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
3932
+ import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack } from '@mappedin/mvf';
3558
3933
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
3559
3934
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
3560
3935
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
@@ -3807,6 +4182,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3807
4182
  };
3808
4183
  /**
3809
4184
  * @internal
4185
+ * @deprecated Use {@link hydrateMapData} instead.
3810
4186
  *
3811
4187
  * Returns a {@link MapData} instance from a parsed MVF object.
3812
4188
  */
@@ -3818,6 +4194,37 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3818
4194
  * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
3819
4195
  */
3820
4196
  export function setUseEnterpriseAPI(value: boolean): void;
4197
+ export type THydrateMapDataBundle = {
4198
+ type: 'binary';
4199
+ options?: {
4200
+ enterprise?: boolean;
4201
+ };
4202
+ languagePacks?: {
4203
+ language: {
4204
+ code: string;
4205
+ name: string;
4206
+ };
4207
+ localePack: Uint8Array;
4208
+ }[];
4209
+ main: Uint8Array;
4210
+ } | {
4211
+ type: 'json';
4212
+ options?: {
4213
+ enterprise?: boolean;
4214
+ };
4215
+ languagePacks?: {
4216
+ language: {
4217
+ code: string;
4218
+ name: string;
4219
+ };
4220
+ localePack: ParsedMVFLocalePack;
4221
+ }[];
4222
+ main: TMVF;
4223
+ };
4224
+ /**
4225
+ * Load a MapData instance from a backup including language packs. Pass in userOptions to ensure outdoor view is available.
4226
+ */
4227
+ export const hydrateMapData: (backup: THydrateMapDataBundle | TMVF, userOptions?: TGetMapDataOptions) => Promise<MapData>;
3821
4228
  /**
3822
4229
  * Asynchronously retrieves map data ({@link MapData}) based on user-provided options.
3823
4230
  *
@@ -3843,13 +4250,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3843
4250
  export { parseMVF, unzipMVF, enableTestMode };
3844
4251
  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, };
3845
4252
  export type * from 'geojson';
3846
- 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/mappedin-js/mappedin-js/src/types';
4253
+ 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/mappedin-js/mappedin-js/src/types';
3847
4254
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3848
4255
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3849
4256
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3850
4257
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3851
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3852
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
4258
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4259
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3853
4260
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3854
4261
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3855
4262
  }
@@ -3858,19 +4265,82 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-
3858
4265
  import type { RendererCore } from '@mappedin/core-sdk';
3859
4266
  import { PubSub } from '@packages/internal/common';
3860
4267
  import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
3861
- import type { TBlueDotOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
4268
+ import type { TBlueDotOptions, TBlueDotPositionUpdate } from '@mappedin/mappedin-js/mappedin-js/src/types';
4269
+ import { Coordinate, type Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3862
4270
  export type TBlueDotEvents = {
3863
- 'floor-change': {
3864
- reason: 'blue-dot-floor-change';
3865
- floorId: string;
3866
- };
4271
+ 'floor-change': {
4272
+ reason: 'blue-dot-floor-change';
4273
+ floorId: string;
4274
+ };
3867
4275
  };
4276
+ export type TBlueDotState = 'hidden' | 'active' | 'inactive' | 'disabled';
4277
+ export type TBlueDotAction = 'timeout' | 'error' | 'position-received' | 'enable' | 'disable';
3868
4278
  export class BlueDot extends PubSub<TBlueDotEvents> {
3869
- #private;
3870
- constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
3871
- enable(options?: TBlueDotOptions): void;
3872
- disable(): void;
4279
+ #private;
4280
+ state: TBlueDotState;
4281
+ /**
4282
+ * The direction the user is facing in degrees from north.
4283
+ */
4284
+ get heading(): GeolocationPosition['coords']['heading'] | undefined;
4285
+ /**
4286
+ * The accuracy of the current position in metres.
4287
+ */
4288
+ get accuracy(): GeolocationPosition['coords']['accuracy'] | undefined;
4289
+ /**
4290
+ * The coordinate of the current position.
4291
+ */
4292
+ get coordinate(): Coordinate | undefined;
4293
+ /**
4294
+ * The floor the Blue Dot is currently on. If undefined, the Blue Dot will appear on every floor.
4295
+ */
4296
+ get floor(): Floor | undefined;
4297
+ /**
4298
+ * @internal
4299
+ */
4300
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
4301
+ /**
4302
+ * Enable the Blue Dot. It will be hidden until a position is received either from the browser or by calling {@link BlueDot.update}.
4303
+ * @param options - The options to setup the Blue Dot.
4304
+ */
4305
+ enable(options?: TBlueDotOptions): void;
4306
+ /**
4307
+ * Disable the Blue Dot. It will be hidden and no longer update.
4308
+ */
4309
+ disable(): void;
4310
+ /**
4311
+ * Enable or disable the devices's geolocation listener to automatically position the Blue Dot.
4312
+ * If enabled, the device will request permission to access the user's precise location.
4313
+ * @param watch - Whether to enable or disable the listener.
4314
+ */
4315
+ watchDevicePosition(watch: boolean): void;
4316
+ /**
4317
+ * Manually override some position properties of the Blue Dot.
4318
+ * Accepts a full GeolocationPosition object or a partial {@link TBlueDotPositionUpdate} object.
4319
+ * @example Manually set the accuracy and heading
4320
+ * ```ts
4321
+ * api.BlueDot.update({ accuracy: 10, heading: 90 });
4322
+ * ```
4323
+ * @example Reset accuracy and heading to device values
4324
+ * ```ts
4325
+ * api.BlueDot.update({ accuracy: 'device', heading: 'device' });
4326
+ * ```
4327
+ */
4328
+ update(position: (GeolocationPosition & {
4329
+ coords: GeolocationPosition['coords'] & {
4330
+ readonly floorLevel?: number;
4331
+ };
4332
+ }) | TBlueDotPositionUpdate | undefined): void;
3873
4333
  }
4334
+ type TStateTransitions = {
4335
+ [Action in TBlueDotAction]?: TBlueDotState;
4336
+ };
4337
+ type TStateMachine = {
4338
+ [State in TBlueDotState]: {
4339
+ actions: TStateTransitions;
4340
+ };
4341
+ };
4342
+ export const stateMachine: TStateMachine;
4343
+ export {};
3874
4344
  }
3875
4345
 
3876
4346
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes' {
@@ -4083,9 +4553,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
4083
4553
 
4084
4554
  declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4085
4555
  import { Vector3 } from 'three';
4086
- import type { Mesh, ShaderMaterial, BufferGeometry } from 'three';
4556
+ import type { Mesh, BufferGeometry } from 'three';
4087
4557
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
4088
- import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
4558
+ import type { PathMaterial, PatMeshContainer } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
4089
4559
  import type { FeatureCollection, Point } from 'geojson';
4090
4560
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
4091
4561
  export type PathProperties = {
@@ -4094,6 +4564,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4094
4564
  */
4095
4565
  parentId?: EntityId<GroupContainerState> | string | null;
4096
4566
  };
4567
+ /**
4568
+ * Updatable path state
4569
+ * @interface
4570
+ */
4571
+ export type PathUpdateState = Omit<Partial<PathState>, 'id' | 'type'>;
4097
4572
  /**
4098
4573
  * State representing a Path
4099
4574
  */
@@ -4122,6 +4597,30 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4122
4597
  * Note: use values between 0 and 1.
4123
4598
  */
4124
4599
  completeFraction: number;
4600
+ /**
4601
+ * The color of the path.
4602
+ */
4603
+ color: string;
4604
+ /**
4605
+ * The accent color of the path. When arrows are visible, it is applied to them
4606
+ */
4607
+ accentColor: string;
4608
+ /**
4609
+ * Display Arrows on Path to indicate direction
4610
+ */
4611
+ displayArrowsOnPath: boolean;
4612
+ /**
4613
+ * Arrows on path should animate to indicate direction
4614
+ */
4615
+ animateArrowsOnPath: boolean;
4616
+ /**
4617
+ * The radius of the path when zoomed in
4618
+ */
4619
+ nearRadius: number;
4620
+ /**
4621
+ * The radius of the path when zoomed out
4622
+ */
4623
+ farRadius: number;
4125
4624
  };
4126
4625
  export type AddPathOptions = {
4127
4626
  /**
@@ -4161,16 +4660,16 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4161
4660
  export class PathComponent {
4162
4661
  #private;
4163
4662
  readonly type = "path";
4164
- mesh: Geometry3DObject3D;
4165
- material?: ShaderMaterial;
4663
+ mesh: PatMeshContainer;
4664
+ material?: PathMaterial;
4166
4665
  geometry?: BufferGeometry;
4167
4666
  outline?: Mesh;
4168
4667
  feature: FeatureCollection<Point, PathProperties>;
4169
4668
  options: AddPathOptions;
4170
4669
  nearRadius: number;
4171
4670
  farRadius: number;
4172
- color: string;
4173
4671
  accentColor: string;
4672
+ completeFraction: number;
4174
4673
  altitudeAdjustment: number;
4175
4674
  displayArrowsOnPath: boolean;
4176
4675
  animateArrowsOnPath: boolean;
@@ -4179,11 +4678,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4179
4678
  */
4180
4679
  isVertical: boolean;
4181
4680
  dirty: boolean;
4681
+ materialDirty: boolean;
4182
4682
  constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
4183
4683
  setColor(): void;
4184
4684
  setOpacity(): void;
4185
- set completeFraction(value: number);
4186
- get completeFraction(): number;
4187
4685
  set visible(visible: boolean);
4188
4686
  get visible(): boolean;
4189
4687
  position: Vector3;
@@ -4999,6 +5497,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
4999
5497
  * The coordinate of the interaction.
5000
5498
  */
5001
5499
  coordinate: Position;
5500
+ /**
5501
+ * An array of path IDs which the user interaction passed through. Will be empty if no paths were interacted with.
5502
+ */
5503
+ paths: (string | number)[] | [];
5002
5504
  /**
5003
5505
  * An array of marker IDs which the user interaction passed through. Will be empty if no markers were interacted with.
5004
5506
  */
@@ -5120,6 +5622,9 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
5120
5622
  center?: Position;
5121
5623
  insetsPadding: InsetPadding;
5122
5624
  shouldMeasureCanvas: boolean;
5625
+ /**
5626
+ * Current clamped pixel ratio of the renderer, based on maplibre's clamping logic (when in interleaved mode)
5627
+ */
5123
5628
  pixelRatio: number;
5124
5629
  canvasWidth: number;
5125
5630
  canvasHeight: number;
@@ -5576,7 +6081,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
5576
6081
  import { TwoDVisibilitySystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-visibility/system';
5577
6082
  import { RenderSystem } from '@mappedin/mappedin-js/geojson/src/systems/render/system';
5578
6083
  import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
5579
- import type { AddPathOptions, PathProperties, PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
6084
+ import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
5580
6085
  import { StackSystem } from '@mappedin/mappedin-js/geojson/src/systems/stack/system';
5581
6086
  import { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
5582
6087
  import { DOMDrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-draw/system';
@@ -5751,9 +6256,9 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
5751
6256
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
5752
6257
  */
5753
6258
  getState(): MapViewState;
5754
- 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;
6259
+ 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;
5755
6260
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
5756
- 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;
6261
+ 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;
5757
6262
  /**
5758
6263
  * Set the state of the map view or any entity that was added, regardless of whether it is visible in the scene.
5759
6264
  */
@@ -5764,7 +6269,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
5764
6269
  setState<T extends EntityId<GroupContainerState>>(object: T | T['id'], state: Partial<GroupContainerState>): void;
5765
6270
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
5766
6271
  setState<T extends EntityId<ShapeState>>(object: T | T['id'], state: Partial<ShapeState>): void;
5767
- setState<T extends EntityId<PathState>>(object: T | T['id'], state: Partial<PathState>): void;
6272
+ setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
5768
6273
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
5769
6274
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
5770
6275
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
@@ -6182,7 +6687,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
6182
6687
  export { getPixelRatio } from '@mappedin/mappedin-js/geojson/src/utils/get-pixel-ratio';
6183
6688
  export { debounce } from '@mappedin/mappedin-js/geojson/src/utils/async';
6184
6689
  export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/geojson/src/utils/browser';
6185
- export { noop } from '@mappedin/mappedin-js/geojson/src/utils/fp';
6690
+ export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/mappedin-js/geojson/src/utils/fp';
6186
6691
  export { transformRequest } from '@mappedin/mappedin-js/geojson/src/utils/tranform-request';
6187
6692
  }
6188
6693
 
@@ -6609,7 +7114,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
6609
7114
  floorId: string;
6610
7115
  };
6611
7116
  }> {
7117
+ /** Floors sorted in order of elevation */
6612
7118
  floors: FloorObject[];
7119
+ /** Map of floors by elevation. Floor elevation does not always match index or is not always contiguous. */
7120
+ floorsByElevation: Map<number, FloorObject>;
6613
7121
  currentFloorId: string;
6614
7122
  id: string;
6615
7123
  renderer: RendererCore;
@@ -6680,9 +7188,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
6680
7188
  import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
6681
7189
  import { Label, Marker, type Model, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6682
7190
  import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
6683
- import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
7191
+ import type { TGetState, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
6684
7192
  import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
6685
- import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
6686
7193
  import { Exporter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter';
6687
7194
  import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
6688
7195
  import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
@@ -6736,7 +7243,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
6736
7243
  getState<T extends Space | MapObject | Label | Marker | Model | Image | string>(target: T): TGetState<T> | undefined;
6737
7244
  setHoverColor(c: string): void;
6738
7245
  getHoverColor(): string | undefined;
6739
- getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], opt?: TGetDirectionsOptions) => Directions | undefined;
6740
7246
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
6741
7247
  createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
6742
7248
  isInView(target: Space | MapObject | Label | Marker | string): boolean;
@@ -6750,6 +7256,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
6750
7256
  }
6751
7257
  }
6752
7258
 
7259
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot' {
7260
+ export { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
7261
+ export type { TBlueDotEvents } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
7262
+ }
7263
+
6753
7264
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera' {
6754
7265
  import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
6755
7266
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
@@ -6761,6 +7272,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera' {
6761
7272
  */
6762
7273
  constructor(rendererCore: RendererCore);
6763
7274
  setScreenOffsets(padding: InsetPadding): void;
7275
+ get screenOffsets(): InsetPadding;
6764
7276
  /**
6765
7277
  * Focuses the camera on a specific target or array of targets.
6766
7278
  *
@@ -6866,7 +7378,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels' {
6866
7378
  import { Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6867
7379
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
6868
7380
  import type { PointOfInterest, MapObject } from '@mappedin/mappedin-js/mappedin-js/src';
6869
- import type { Space, Door, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7381
+ import type { Space, Door, Coordinate, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6870
7382
  export class Labels {
6871
7383
  #private;
6872
7384
  /**
@@ -6897,7 +7409,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels' {
6897
7409
  *
6898
7410
  * map.Labels.add(space, 'Welcome', { appearance: { color: 'blue' } });
6899
7411
  */
6900
- add(target: Space | Door | Coordinate | PointOfInterest | MapObject, text: string, options?: TAddLabelOptions | undefined): Label;
7412
+ add(target: Space | Door | Coordinate | PointOfInterest | MapObject | Node, text: string, options?: TAddLabelOptions | undefined): Label;
6901
7413
  /**
6902
7414
  * Automatically adds all the labels ({@link Label}) to the map.
6903
7415
  *
@@ -6932,7 +7444,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
6932
7444
  import type { TAddMarkerOptions, TAnimationOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
6933
7445
  import { Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6934
7446
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
6935
- import type { Space, Door, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7447
+ import type { Space, Door, Coordinate, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6936
7448
  export class Markers {
6937
7449
  #private;
6938
7450
  /**
@@ -6963,7 +7475,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
6963
7475
  * // Add an interactive {@link Marker} to the map with custom HTML content.
6964
7476
  * map.Markers.add(coordinate, '<div>Marker Content</div>', { interactive: true });
6965
7477
  */
6966
- add(target: Space | Door | Coordinate, html: string, options?: TAddMarkerOptions): Marker;
7478
+ add(target: Space | Door | Coordinate | Node, html: string, options?: TAddMarkerOptions): Marker;
6967
7479
  /**
6968
7480
  * Removes a marker from the map.
6969
7481
  *
@@ -6987,7 +7499,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
6987
7499
  * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
6988
7500
  * mapView.Markers.setPosition(marker, newCoordinate);
6989
7501
  */
6990
- setPosition(marker: Marker, target: Space | Door | Coordinate): void;
7502
+ setPosition(marker: Marker, target: Space | Door | Coordinate | Node): void;
6991
7503
  /**
6992
7504
  * Update the position of a marker with an animation.
6993
7505
  * @param marker The {@link Marker} which should be updated.
@@ -6998,7 +7510,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
6998
7510
  * const marker = map.Markers.add(coordinate, '<div>Marker Content</div>');
6999
7511
  * mapView.Markers.animateTo(marker, newCoordinate, { duration: 1000 });
7000
7512
  */
7001
- animateTo(marker: Marker, target: Space | Door | Coordinate, options?: TAnimationOptions): Promise<void>;
7513
+ animateTo(marker: Marker, target: Space | Door | Coordinate | Node, options?: TAnimationOptions): Promise<void>;
7002
7514
  }
7003
7515
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
7004
7516
  export {};
@@ -7142,76 +7654,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter' {
7142
7654
  export {};
7143
7655
  }
7144
7656
 
7145
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions' {
7146
- import type { ParsedMVF } from '@mappedin/mvf';
7147
- import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
7148
- import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7149
- import { Connection, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7150
- import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
7151
- /**
7152
- * Represents a set of directions between two points.
7153
- *
7154
- * Directions are used to represent the path between two points on the map,
7155
- * as well as the instructions to follow the path.
7156
- */
7157
- export class Directions {
7158
- #private;
7159
- /**
7160
- * @internal
7161
- */
7162
- constructor(directions: DirectionsCollection, mapData: MapDataInternal);
7163
- /**
7164
- * All the coordinates ({@link Coordinate}) of the directions.
7165
- */
7166
- get coordinates(): Coordinate[];
7167
- /**
7168
- * The total distance of the path in meters.
7169
- */
7170
- get distance(): number;
7171
- /**
7172
- * The array of instructions ({@link TDirectionInstruction}).
7173
- */
7174
- get instructions(): TDirectionInstruction[];
7175
- lastConnectionAction?: 'take' | 'exit';
7176
- lastConnection?: Connection;
7177
- }
7178
- export class DirectionsInternal {
7179
- /**
7180
- * @hidden
7181
- */
7182
- constructor({ nodes, geojsonCollection, connections, groupBy, }: {
7183
- nodes: ParsedMVF['node.geojson'];
7184
- geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
7185
- connections: ParsedMVF['connection.json'];
7186
- groupBy?: string;
7187
- });
7188
- /**
7189
- * Get directions between two navigation targets.
7190
- *
7191
- * @hidden
7192
- * @param from
7193
- * @param to
7194
- * @param options
7195
- * @param mapData
7196
- */
7197
- getDirections: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
7198
- accessible: boolean;
7199
- smoothing: {
7200
- enabled: boolean;
7201
- radius: number;
7202
- };
7203
- zones: TDirectionZone[];
7204
- }, mapData: MapDataInternal) => Directions | undefined;
7205
- /**
7206
- * Get the node IDs that should be excluded from the navigation graph.
7207
- *
7208
- * @hidden
7209
- * @param accessible {boolean}
7210
- */
7211
- getExcludedNodeIds: (accessible: boolean) => string[];
7212
- }
7213
- }
7214
-
7215
7657
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style' {
7216
7658
  import type { StyleCollection } from '@mappedin/mvf';
7217
7659
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
@@ -7266,9 +7708,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
7266
7708
  show(): void;
7267
7709
  /**
7268
7710
  * Hide the outdoor view.
7269
- * @param excludedStyleLayerIds {string[]} E
7711
+ * @param excludedStyleLayerIds {string[]}
7270
7712
  */
7271
7713
  hide(excludedStyleLayerIds?: string[]): void;
7714
+ /**
7715
+ * Set outdoor view opacity
7716
+ * @param targetOpacity {number | 'initial'}
7717
+ * @param excludedStyleLayerIds {string[]}
7718
+ */
7719
+ setOpacity(targetOpacity: number | 'initial', excludedStyleLayerIds?: string[]): void;
7272
7720
  }
7273
7721
  }
7274
7722
 
@@ -7330,7 +7778,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
7330
7778
 
7331
7779
  declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
7332
7780
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
7333
- import type { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7781
+ import { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7334
7782
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
7335
7783
  import { z } from 'zod';
7336
7784
  export class InternalSearch {
@@ -7789,7 +8237,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
7789
8237
  latitude: number;
7790
8238
  longitude: number;
7791
8239
  floorLevel?: number;
7792
- accuracy: number;
8240
+ accuracy?: number;
7793
8241
  };
7794
8242
  type AnalyticsAuth = {
7795
8243
  /** The API key for authentication. */
@@ -7866,6 +8314,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-meta
7866
8314
 
7867
8315
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
7868
8316
  import { Object3D } from 'three';
8317
+ import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
7869
8318
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
7870
8319
  import type { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
7871
8320
  import type { ModelComponent } from '@mappedin/mappedin-js/geojson/src/components/model';
@@ -7886,15 +8335,104 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
7886
8335
  type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
7887
8336
  };
7888
8337
  }
8338
+ export type PathMaterial = ShaderMaterial & {
8339
+ uniforms: PathUniforms;
8340
+ };
8341
+ export type PathMesh = Mesh<TubeGeometry, PathMaterial, Object3DEventMap>;
8342
+ export class PatMeshContainer extends Geometry3DObject3D {
8343
+ children: [PathMesh, PathMesh];
8344
+ }
7889
8345
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
7890
8346
  export class Geometry3D {
7891
8347
  id: string | number;
7892
8348
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
7893
- get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
8349
+ get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
7894
8350
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
7895
8351
  get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
7896
8352
  constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
7897
8353
  }
8354
+ export interface PathUniforms {
8355
+ vertexes: {
8356
+ type: 'f';
8357
+ value: number;
8358
+ };
8359
+ resolution: {
8360
+ type: 'v2';
8361
+ value: Vector2;
8362
+ };
8363
+ cameraParameters: {
8364
+ type: 'v2';
8365
+ value: Vector2;
8366
+ };
8367
+ complete: {
8368
+ type: 'f';
8369
+ value: number;
8370
+ };
8371
+ color: {
8372
+ type: 'c';
8373
+ value: Color;
8374
+ };
8375
+ pathLength: {
8376
+ type: 'f';
8377
+ value: number;
8378
+ };
8379
+ nearRadius: {
8380
+ type: 'f';
8381
+ value: number;
8382
+ };
8383
+ farRadius: {
8384
+ type: 'f';
8385
+ value: number;
8386
+ };
8387
+ nearZoom: {
8388
+ type: 'f';
8389
+ value: number;
8390
+ };
8391
+ farZoom: {
8392
+ type: 'f';
8393
+ value: number;
8394
+ };
8395
+ pulseColor: {
8396
+ type: 'c';
8397
+ value: Color;
8398
+ };
8399
+ pulse: {
8400
+ type: 'f';
8401
+ value: number;
8402
+ };
8403
+ pulseLength: {
8404
+ type: 'f';
8405
+ value: number;
8406
+ };
8407
+ pathIsVertical: {
8408
+ type: 'b';
8409
+ value: boolean;
8410
+ };
8411
+ arrowAnimationTimer: {
8412
+ type: 'f';
8413
+ value: number;
8414
+ };
8415
+ arrowTexture: {
8416
+ type: 't';
8417
+ value: Texture;
8418
+ };
8419
+ displayArrowsOnPath: {
8420
+ type: 'b';
8421
+ value: boolean;
8422
+ };
8423
+ flattenFactor: {
8424
+ type: 'f';
8425
+ value: number;
8426
+ };
8427
+ showPulse: {
8428
+ type: 'b';
8429
+ value: boolean;
8430
+ };
8431
+ opacityMultiplier: {
8432
+ type: 'f';
8433
+ value: number;
8434
+ };
8435
+ }
7898
8436
  }
7899
8437
 
7900
8438
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
@@ -8106,7 +8644,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
8106
8644
  declare module '@mappedin/mappedin-js/geojson/src/entities' {
8107
8645
  export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
8108
8646
  export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8109
- export { Geometry3D, Geometry3DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8647
+ export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8110
8648
  }
8111
8649
 
8112
8650
  declare module '@mappedin/mappedin-js/geojson/src/types/options' {
@@ -8716,13 +9254,14 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/pan-bounds/system' {
8716
9254
  }
8717
9255
 
8718
9256
  declare module '@mappedin/mappedin-js/geojson/src/systems/custom-geometry/system' {
9257
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
8719
9258
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8720
9259
  /**
8721
9260
  * System that renders and updates custom geometry entities. For every custom geometry entity, this calls the builder's
8722
9261
  * setup method once (when it is visible) and then the update method every frame.
8723
9262
  */
8724
9263
  export class CustomGeometrySystem {
8725
- constructor(state: RendererState);
9264
+ constructor(state: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8726
9265
  update(): void;
8727
9266
  }
8728
9267
  }
@@ -8911,6 +9450,23 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/browser' {
8911
9450
 
8912
9451
  declare module '@mappedin/mappedin-js/geojson/src/utils/fp' {
8913
9452
  export function noop(): void;
9453
+ export type KeysOfUnion<T> = T extends T ? keyof T : never;
9454
+ /**
9455
+ * Given an object and a number of properties as strings, return version
9456
+ * of that object with only those properties.
9457
+ *
9458
+ * @param src - the object
9459
+ * @param properties - an array of property names chosen
9460
+ * to appear on the resulting object.
9461
+ * @returns object with limited properties.
9462
+ * @example
9463
+ * ```ts
9464
+ * let foo = { name: 'Charlie', age: 10 };
9465
+ * let justName = pick(foo, ['name']); // justName = { name: 'Charlie' }
9466
+ * ```
9467
+ */
9468
+ export function pick<T extends object>(src: T, properties: KeysOfUnion<T>[]): Partial<T>;
9469
+ export function isEmpty(obj: Record<string, any>): boolean;
8914
9470
  }
8915
9471
 
8916
9472
  declare module '@mappedin/mappedin-js/geojson/src/utils/tranform-request' {
@@ -9056,8 +9612,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
9056
9612
  }
9057
9613
 
9058
9614
  declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
9059
- import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
9615
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
9060
9616
  import { type MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
9617
+ import type { PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
9061
9618
  import type { Geometry3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
9062
9619
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
9063
9620
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
@@ -9074,7 +9631,6 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
9074
9631
  export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
9075
9632
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
9076
9633
  export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
9077
- export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
9078
9634
  export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
9079
9635
  export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
9080
9636
  export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
@@ -9087,6 +9643,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
9087
9643
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9088
9644
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
9089
9645
  export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
9646
+ export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
9647
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
9090
9648
  }
9091
9649
 
9092
9650
  declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
@@ -9204,7 +9762,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
9204
9762
 
9205
9763
  declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
9206
9764
  import type { PerspectiveCamera, Scene, WebGLRenderer } from 'three';
9207
- import { Vector2, Vector3 } from 'three';
9765
+ import { Object3D, Vector2, Vector3 } from 'three';
9208
9766
  import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
9209
9767
  import * as CAMERA_CONSTANTS from '@mappedin/mappedin-js/geojson/src/systems/camera/constants';
9210
9768
  import type { AnimateCameraTarget, CameraControlsOptions, CameraFocusOnOptions } from '@mappedin/mappedin-js/geojson/src/systems/camera/types';
@@ -9650,6 +10208,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
9650
10208
  position: Vector3;
9651
10209
  zoom: number;
9652
10210
  };
10211
+ debugContainer: Object3D<import("three").Object3DEventMap>;
9653
10212
  focusOn(pointCloud: Vector3[], { insetsPadding }: any, options?: CameraFocusOnOptions): void;
9654
10213
  resize(canvasWidth: number, canvasHeight: number): void;
9655
10214
  }