@mappedin/mappedin-js 6.0.1-beta.42 → 6.0.1-beta.44

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.
Files changed (36) hide show
  1. package/README.md +74 -0
  2. package/THIRD_PARTY_LICENSES.txt +5675 -2451
  3. package/lib/esm/{GLTFExporter-YKSUDH7B.js → GLTFExporter-4THLS4PM.js} +1 -1
  4. package/lib/esm/{GLTFLoader-EHCGUUZ7.js → GLTFLoader-KOQIUT25.js} +1 -1
  5. package/lib/esm/{browser-WIIM7TQK.js → browser-LGW6JLJT.js} +1 -1
  6. package/lib/esm/{chunk-4CCSRLCA.js → chunk-5SY5TZBS.js} +1 -1
  7. package/lib/esm/chunk-A5SAO63E.js +1 -0
  8. package/lib/esm/chunk-KNDTFHOY.js +1 -0
  9. package/lib/esm/chunk-M46A4YQ5.js +1 -0
  10. package/lib/esm/chunk-Q2KR5YO7.js +1 -0
  11. package/lib/esm/{chunk-ECHMMCCK.js → chunk-QO7JQA7V.js} +1 -1
  12. package/lib/esm/chunk-XGYIT3MM.js +1 -0
  13. package/lib/esm/index.css +1 -1
  14. package/lib/esm/index.d.ts +2081 -832
  15. package/lib/esm/index.js +1 -1
  16. package/lib/esm/inspector-GOK26VAV.css +1 -0
  17. package/lib/esm/{inspector-ZDG5OPVJ.js → inspector-KJE2KP6V.js} +1 -1
  18. package/lib/esm/internal-7A3UJNAV.css +1 -0
  19. package/lib/esm/{internal-ZMA7M4I6.js → internal-RS3PVAR3.js} +1 -1
  20. package/lib/esm/outdoor-context-v4-6CUOE2HW.js +1 -0
  21. package/lib/esm/{roboto-regular-E2V4PXOH.js → roboto-regular-PKVZDOB2.js} +1 -1
  22. package/lib/esm/text3d-QIM5QGO6.js +1 -0
  23. package/lib/esm/workers/collision-worker.csp.js +1 -0
  24. package/lib/esm/workers/maplibre-worker.csp.js +1 -0
  25. package/lib/index.css +1 -1
  26. package/package.json +2 -2
  27. package/lib/esm/chunk-DDM2BPE5.js +0 -1
  28. package/lib/esm/chunk-GQSDOUZP.js +0 -1
  29. package/lib/esm/chunk-HALSTKAB.js +0 -1
  30. package/lib/esm/chunk-LDGPSNHO.js +0 -1
  31. package/lib/esm/chunk-OZP63OFH.js +0 -1
  32. package/lib/esm/inspector-D2RCHDOY.css +0 -1
  33. package/lib/esm/internal-55777EMI.css +0 -1
  34. package/lib/esm/outdoor-context-v4-HKUDARND.js +0 -1
  35. package/lib/esm/text3d-4TF6HI7P.js +0 -1
  36. package/lib/esm/text3d-Q7FFP3YS.css +0 -1
@@ -3,18 +3,19 @@
3
3
  // ../mappedin-js/@packages/internal/mvf-utils
4
4
  // ../mappedin-js/@mappedin/mvf
5
5
  // ../mappedin-js/@packages/internal/common/pubsub
6
- // ../mappedin-js/@packages/internal/mvf-utils/mvf-utils
7
6
  // ../mappedin-js/@packages/internal/common/Mappedin.Logger
8
7
  // ../mappedin-js/geojson
9
8
  // ../mappedin-js/@packages/internal/common
10
9
  // ../mappedin-js/@mappedin/core-sdk
10
+ // ../mappedin-js/@packages/internal/mvf-utils/mvf-utils
11
+ // ../mappedin-js/@packages/internal/mvf-utils/tokens/token-manager
12
+ // ../mappedin-js/@tweenjs/tween.js
11
13
  // ../mappedin-js/@packages/internal/outdoor-context-v4
12
14
  // ../mappedin-js/@packages/internal/geojson-navigator
13
15
  // ../mappedin-js/@mappedin/mvf-core
14
16
  // ../mappedin-js/three
15
17
  // ../mappedin-js/zod
16
18
  // ../mappedin-js/@packages/internal/shave-text/shave-text
17
- // ../mappedin-js/@tweenjs/tween.js
18
19
  // ../mappedin-js/@turf/turf
19
20
  // ../mappedin-js/troika-three-text
20
21
  // ../mappedin-js/@packages/internal/quad-tree
@@ -34,12 +35,13 @@
34
35
  declare module '@mappedin/mappedin-js' {
35
36
  import MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
36
37
  import type { TEvents, TEventPayload, TClickPayload, THoverPayload, TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
37
- import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
38
+ import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, Environment } from '@mappedin/mappedin-js/packages/mvf-utils';
38
39
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
39
40
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
40
41
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf';
41
42
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
42
43
  export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
44
+ export { disableText3DWorker } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
43
45
  import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, EnvMapOptions, MapViewState, UpdateModelState, InitializeModelState, WatermarkUpdateOptions } from '@mappedin/mappedin-js/geojson/src';
44
46
  import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
45
47
  export type { PubSub } from '@packages/internal/common/pubsub';
@@ -47,7 +49,6 @@ declare module '@mappedin/mappedin-js' {
47
49
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
48
50
  import type { LanguagePackHydrationItem, TImagePlacementOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
49
51
  import { MAPPEDIN_COLORS } from '@mappedin/mappedin-js/mappedin-js/src/constants';
50
- import { type Environment } from '@packages/internal/mvf-utils/mvf-utils';
51
52
  import type { TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TFollowMode, TFollowCameraOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
52
53
  import type { TExpandOptions, TStackedMapsEvents, TStackedMapsState } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
53
54
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
@@ -240,12 +241,6 @@ declare module '@mappedin/mappedin-js' {
240
241
  floorHeight?: number;
241
242
  updateCameraElevationOnFloorChange?: boolean;
242
243
  };
243
- /**
244
- * @experimental
245
- * @internal
246
- * @default false
247
- */
248
- keepOutdoorGeometryVisible?: boolean;
249
244
  /**
250
245
  * @experimental
251
246
  *
@@ -318,6 +313,7 @@ declare module '@mappedin/mappedin-js' {
318
313
  export type THydrateMapDataBundle = {
319
314
  type: 'binary';
320
315
  options?: {
316
+ version?: '2.0.0' | '3.0.0';
321
317
  enterprise?: boolean;
322
318
  };
323
319
  languagePacks?: {
@@ -331,6 +327,7 @@ declare module '@mappedin/mappedin-js' {
331
327
  } | {
332
328
  type: 'json';
333
329
  options?: {
330
+ version?: '2.0.0' | '3.0.0';
334
331
  enterprise?: boolean;
335
332
  };
336
333
  languagePacks?: {
@@ -381,14 +378,15 @@ declare module '@mappedin/mappedin-js' {
381
378
  export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS };
382
379
  export type { MapView, MapData, MapViewState, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, UpdateModelState, InitializeModelState, };
383
380
  export type * from 'geojson';
384
- export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TFloorState, TFacadeState, } from '@mappedin/mappedin-js/mappedin-js/src/types';
381
+ export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TFloorState, TFacadeState, TSetFloorOptions, } from '@mappedin/mappedin-js/mappedin-js/src/types';
385
382
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
386
383
  export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
387
384
  export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
388
385
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
389
386
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
390
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
391
- export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, DynamicFocus, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
387
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
388
+ export { setWorkersUrl } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
389
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
392
390
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
393
391
  export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
394
392
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
@@ -468,13 +466,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
468
466
  *
469
467
  * @returns {string} The current access token
470
468
  */
471
- getAccessToken(): Promise<string | undefined>;
472
- /**
473
- * Get a SAS token for fetching images on non-public maps.
474
- *
475
- * @returns {string} The SAS token
476
- */
477
- getSasToken(): Promise<string | undefined>;
469
+ getAccessToken(): string | undefined;
478
470
  /**
479
471
  * The name of the map.
480
472
  *
@@ -713,7 +705,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
713
705
  import type { TBlueDotEvents } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot';
714
706
  import type { TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src/types';
715
707
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src';
716
- export type TFloorChangeReason = '' | 'blue-dot-floor-change' | 'stacked-maps-elevation-change' | 'navigation-connection-click' | 'dynamic-focus';
708
+ export type TFloorChangeReason = 'blue-dot-floor-change' | 'stacked-maps-elevation-change' | 'navigation-connection-click' | string;
717
709
  export type TClickPayload = {
718
710
  /**
719
711
  * The coordinate of the interaction.
@@ -801,14 +793,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
801
793
  */
802
794
  'floor-change': TFloorChangePayload;
803
795
  /**
804
- * Only emitted when dynamic focus is enabled. Emitted when a different facade recieves
805
- * focus due to the camera moving. This always occurs when the active floor changes to
806
- * a different floor stack, but may also occur when the camera moves without the active
807
- * floor changing.
796
+ *
797
+ * Emitted when a different facade recieves focus due to the camera moving.
798
+ * This always occurs when the active floor changes to a different floor stack,
799
+ * but may also occur when the camera moves without the active floor changing.
808
800
  *
809
801
  * @property {Facade[]} facades - The facades that are in focus.
802
+ *
810
803
  */
811
- 'dynamic-focus-change': {
804
+ 'facades-in-view-change': {
812
805
  facades: Facade[];
813
806
  };
814
807
  /**
@@ -887,6 +880,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
887
880
  };
888
881
  }
889
882
 
883
+ declare module '@mappedin/mappedin-js/packages/mvf-utils' {
884
+ export * from '@mappedin/mappedin-js/packages/mvf-utils/api-types';
885
+ export * from '@mappedin/mappedin-js/packages/mvf-utils/mvf-types';
886
+ export type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TGetVenueOptions, TSearchOptions, TGetVenueBundleOptions, LocalePackUrls, Environment, } from '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils';
887
+ export { downloadVenueBundleMVF, downloadVenueBundleMVFAPIGateway, downloadMVF, parseOptions, getAccessToken, parseMVF, unzipMVF, parseMVFv1, unzipMVFv1, createEnvControl, getSasToken, parseLanguagePack, } from '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils';
888
+ export { findAndSplitObstructionByAllEntrances as splitObstructionByAllEntrances } from '@mappedin/mappedin-js/packages/mvf-utils/geometry';
889
+ }
890
+
890
891
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
891
892
  import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
892
893
  import Area from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area';
@@ -899,7 +900,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
899
900
  import PointOfInterest from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi';
900
901
  import Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
901
902
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
902
- import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
903
+ import ImageMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
903
904
  import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
904
905
  import Facade from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade';
905
906
  import type { MapDataRecords, EnterpriseMapDataRecords } from '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation';
@@ -918,6 +919,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
918
919
  import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
919
920
  import LocationProfile from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-profile';
920
921
  import LocationCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-category';
922
+ import type { TokenManager } from '@packages/internal/mvf-utils/tokens/token-manager';
921
923
  /**
922
924
  * Internal class representing detailed map data.
923
925
  *
@@ -953,7 +955,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
953
955
  */
954
956
  readonly obstructionIdByEntranceId: Record<string, string>;
955
957
  readonly venue?: EnterpriseVenue;
956
- readonly sasToken?: string;
958
+ readonly tokenManager?: TokenManager;
957
959
  directions: DirectionsInternal;
958
960
  enterpriseMode: boolean;
959
961
  nodesById: MapDataRecords['nodesById'];
@@ -1100,8 +1102,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1100
1102
  get locationCategories(): LocationCategory[];
1101
1103
  get mvfFloors(): MVFFloor[];
1102
1104
  get mvfFloorStacks(): MVFFloorStack[];
1103
- getAccessToken(): Promise<string | undefined>;
1104
- getSasToken(): Promise<string | undefined>;
1105
1105
  getByType(type: string): object[];
1106
1106
  getByType(type: 'location-profile'): LocationProfile[];
1107
1107
  getByType(type: 'location-category'): LocationCategory[];
@@ -1178,23 +1178,23 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1178
1178
  */
1179
1179
  destroy(): void;
1180
1180
  }
1181
- export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile, };
1181
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, ImageMetaData, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile, };
1182
1182
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
1183
1183
  export type { Places };
1184
1184
  }
1185
1185
 
1186
1186
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1187
- import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/mappedin-js/geojson/src';
1187
+ import { type EasingCurve, type RendererCore, type WatermarkUpdateOptions } from '@mappedin/mappedin-js/geojson/src';
1188
1188
  import { PubSub } from '@packages/internal/common';
1189
1189
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
1190
1190
  import type { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
1191
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images, DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1191
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1192
1192
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1193
1193
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
1194
1194
  import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1195
1195
  import type { Annotation, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1196
1196
  import type { TCoordinateParams } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
1197
- import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates, GlobalState, UpdateGlobalState } from '@mappedin/mappedin-js/mappedin-js/src/types';
1197
+ import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates, GlobalState, UpdateGlobalState, TSetFloorOptions, DeepPartial } from '@mappedin/mappedin-js/mappedin-js/src/types';
1198
1198
  import type { Label, Marker, Image, Shape, Text3D as Text3DView, Model, Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1199
1199
  import type { TEventPayload } from '@mappedin/mappedin-js/mappedin-js/src/events';
1200
1200
  import type { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
@@ -1203,6 +1203,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1203
1203
  import { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
1204
1204
  import type { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
1205
1205
  import type { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
1206
+ import type { ExtractDeep } from '@mappedin/mappedin-js/mappedin-js/src/utils/types';
1207
+ import { Tween } from '@tweenjs/tween.js';
1206
1208
  /**
1207
1209
  * The MapView class is the main class for rendering and interacting with the map.
1208
1210
  *
@@ -1271,11 +1273,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1271
1273
  * Controls for Stacked Maps.
1272
1274
  */
1273
1275
  get StackedMaps(): StackedMaps;
1274
- /**
1275
- * @internal
1276
- * @experimental
1277
- */
1278
- get DynamicFocus(): DynamicFocus;
1279
1276
  /**
1280
1277
  * @internal
1281
1278
  */
@@ -1309,6 +1306,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1309
1306
  */
1310
1307
  updateState<T extends Space | Text3DView | MapObject | Label | Marker | Shape | Door | Facade | Floor | WALLS | DOORS | Model | Path | PathSegment>(target: T, state: TUpdateState<T>): any;
1311
1308
  updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
1309
+ /**
1310
+ * Animate the state of a given target on the map from the current state to a new state. Only numeric properties and
1311
+ * colors can be animated.
1312
+ */
1313
+ animateState<T extends Space | Model | Text3DView | MapObject | Label | Marker | Shape | Path | PathSegment | Floor>(target: T, state: DeepPartial<ExtractDeep<TGetState<T>, number | string | undefined>>, options?: {
1314
+ duration?: number;
1315
+ easing?: EasingCurve;
1316
+ }): Promise<void> & {
1317
+ cancel: () => void;
1318
+ };
1312
1319
  /**
1313
1320
  * Update global state of the MapView
1314
1321
  */
@@ -1354,12 +1361,27 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1354
1361
  * Sets the current floor ({@link Floor}) of the map.
1355
1362
  * @param floor The floor or floor ID to set.
1356
1363
  */
1357
- setFloor(floor: Floor | string): void;
1364
+ setFloor(floor: Floor | string, options?: TSetFloorOptions): void;
1358
1365
  /**
1359
1366
  * Sets the current floor stack ({@link FloorStack}) of the map. The default floor of the stack will be set as the current floor.
1360
1367
  * @param floorStack The floor stack or floor stack ID to set.
1361
1368
  */
1362
- setFloorStack(floorStack: FloorStack | string): void;
1369
+ setFloorStack(floorStack: FloorStack | string, options?: TSetFloorOptions): void;
1370
+ /**
1371
+ * Create a tween object that will be updated on every render frame.
1372
+ * See https://tweenjs.github.io/tween.js/docs/user_guide.html for more information.
1373
+ *
1374
+ * When creating a large number of tween objects, it may be important to call {@link removeTween} to prevent memory leaks.
1375
+ *
1376
+ * @param object The data to be tweened.
1377
+ * @returns The tween object.
1378
+ */
1379
+ tween<T extends Record<string, unknown>>(object: T): Tween<T>;
1380
+ /**
1381
+ * Remove a tween created with {@link tween}.
1382
+ * @param tween The tween to remove.
1383
+ */
1384
+ removeTween(tween: Tween<any>): void;
1363
1385
  /**
1364
1386
  * The current floor stack ({@link FloorStack}) of the map.
1365
1387
  */
@@ -1375,7 +1397,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1375
1397
  * @hidden
1376
1398
  */
1377
1399
  updateWatermark(options: WatermarkUpdateOptions): void;
1378
- getState<T extends Space | Model | Text3DView | MapObject | Label | Marker | Image | Shape | Path | PathSegment | Floor | string>(target: T): TGetState<T>;
1400
+ getState<T extends Space | Model | Text3DView | MapObject | Label | Marker | Image | Shape | Path | PathSegment | Floor | Facade | string>(target: T): TGetState<T>;
1379
1401
  setHoverColor(c: string): void;
1380
1402
  getHoverColor(): string | undefined;
1381
1403
  /**
@@ -1556,6 +1578,18 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1556
1578
  * @experimental
1557
1579
  */
1558
1580
  takeScreenshot(): Promise<string>;
1581
+ /**
1582
+ * @internal
1583
+ * @hidden
1584
+ * Whether the floor visibility is being self managed or automatically handled by the SDK.
1585
+ */
1586
+ get manualFloorVisibility(): boolean;
1587
+ /**
1588
+ * @internal
1589
+ * @hidden
1590
+ * Disables the default behavior of the SDK to automatically hide floors on setFloor.
1591
+ */
1592
+ set manualFloorVisibility(value: boolean);
1559
1593
  }
1560
1594
  }
1561
1595
 
@@ -1564,6 +1598,29 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d' {
1564
1598
  import type { TAddText3DOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
1565
1599
  import type { CurrentMapGetter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types';
1566
1600
  import { Text3D as Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1601
+ /**
1602
+ * Disables the Text3D web worker and falls back to processing on the main thread.
1603
+ *
1604
+ * This function should be called when using Text3D features in environments
1605
+ * with strict Content Security Policy (CSP) that blocks web workers from
1606
+ * being created using blob: URLs or unsafe-eval directives.
1607
+ *
1608
+ * While disabling the worker may slightly impact performance for complex text
1609
+ * rendering, it enables Text3D functionality in CSP-restricted environments.
1610
+ *
1611
+ * Ensure calling this before calling preloadFont
1612
+ *
1613
+ * @example
1614
+ * ```typescript
1615
+ * import {disableText3DWorker} from '@mappedin/mappedin-js';
1616
+ * // Disable Text3D worker for CSP compatibility
1617
+ * disableText3DWorker();
1618
+ *
1619
+ * // Then use Text3D features as normal
1620
+ * mapView.Text3D.labelAll();
1621
+ * ```
1622
+ */
1623
+ export function disableText3DWorker(): void;
1567
1624
  export class Text3D {
1568
1625
  #private;
1569
1626
  /**
@@ -1667,7 +1724,8 @@ declare module '@mappedin/mappedin-js/geojson/src' {
1667
1724
  export type { EntityId, EntityState, LineStyle, PaintStyle, ModelProperties, Shading, ImagePlacementOptions, } from '@mappedin/mappedin-js/geojson/src/types';
1668
1725
  export type * from 'geojson';
1669
1726
  export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
1670
- export { preloadFont } from '@mappedin/mappedin-js/geojson/src/systems/text3d/system';
1727
+ export { preloadFont, configureWorker } from '@mappedin/mappedin-js/geojson/src/systems/text3d/system';
1728
+ export { setWorkerUrl as setCollisionWorkerUrl } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
1671
1729
  export type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
1672
1730
  export type { AttributionControlOptions, AttributionPosition } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
1673
1731
  export type { Text3DStyle, ModelStyle } from '@mappedin/mappedin-js/geojson/src/components/styles';
@@ -1757,6 +1815,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1757
1815
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1758
1816
  import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions, EnvMapOptions, InitializeModelState, ModelState, UpdateModelState as GeoJsonUpdateModelState, ImagePlacementOptions, LabelAppearance } from '@mappedin/mappedin-js/geojson/src';
1759
1817
  import type { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
1818
+ import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
1760
1819
  export type UpdateModelState = Omit<GeoJsonUpdateModelState, 'position' | 'scale'> & {
1761
1820
  position?: Coordinate;
1762
1821
  scale?: number | [number, number, number];
@@ -1946,6 +2005,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1946
2005
  * The color of the path.
1947
2006
  */
1948
2007
  color: string;
2008
+ /**
2009
+ * The complete fraction of the path.
2010
+ */
2011
+ completeFraction: number;
2012
+ /**
2013
+ * The near radius of the path.
2014
+ */
2015
+ nearRadius: number;
2016
+ /**
2017
+ * The far radius of the path.
2018
+ */
2019
+ farRadius: number;
2020
+ /**
2021
+ * Whether the path is visible.
2022
+ */
2023
+ visible: boolean;
1949
2024
  };
1950
2025
  /**
1951
2026
  * Represents the state of a shape.
@@ -1983,6 +2058,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1983
2058
  * The opacity of the facade.
1984
2059
  */
1985
2060
  opacity: number;
2061
+ /**
2062
+ * Whether the facade is visible.
2063
+ */
2064
+ visible: boolean;
1986
2065
  };
1987
2066
  /**
1988
2067
  * Defines the state for geometry elements like {@link Space} when updated.
@@ -2041,7 +2120,68 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2041
2120
  * Opacity of the floor geometry.
2042
2121
  */
2043
2122
  opacity: number;
2123
+ /**
2124
+ * Visibility of floor geometry.
2125
+ */
2126
+ visible: boolean;
2127
+ };
2128
+ labels: {
2129
+ /**
2130
+ * Whether the labels are enabled to be shown when the floor is visible.
2131
+ */
2132
+ enabled: boolean;
2133
+ };
2134
+ markers: {
2135
+ /**
2136
+ * Whether the markers are enabled to be shown when the floor is visible.
2137
+ */
2138
+ enabled: boolean;
2139
+ };
2140
+ footprint: {
2141
+ /**
2142
+ * Altitude of the footprint relative to the floor.
2143
+ */
2144
+ altitude: number;
2145
+ /**
2146
+ * Whether the footprint is visible.
2147
+ */
2148
+ visible: boolean;
2149
+ /**
2150
+ * Height of the footprint relative to altitude.
2151
+ */
2152
+ height: number;
2153
+ /**
2154
+ * Opacity of the footprint.
2155
+ */
2156
+ opacity: number;
2157
+ /**
2158
+ * Material side of the footprint.
2159
+ * @internal
2160
+ */
2161
+ side: 'double' | 'front' | 'back';
2162
+ /**
2163
+ * Color of the footprint.
2164
+ */
2165
+ color: string;
2166
+ };
2167
+ /**
2168
+ * @internal
2169
+ */
2170
+ occlusion: {
2171
+ /**
2172
+ * @internal
2173
+ * Whether this floor should occlude labels and markers on other floors
2174
+ */
2175
+ enabled: boolean;
2044
2176
  };
2177
+ /**
2178
+ * The visibility of the floor, including the geometry, labels, and markers.
2179
+ */
2180
+ visible: boolean;
2181
+ /**
2182
+ * The altitude of the floor.
2183
+ */
2184
+ altitude: number;
2045
2185
  };
2046
2186
  export enum WALLS {
2047
2187
  Exterior = "exterior-walls",
@@ -2054,7 +2194,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2054
2194
  /**
2055
2195
  * The type for updating the state of map elements (colors, texts, etc.).
2056
2196
  */
2057
- export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS | Door ? Partial<TDoorsState> : T extends Model ? Partial<UpdateModelState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Floor ? Partial<TFloorState> : T extends Facade ? Partial<TFacadeState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Text3D ? UpdatableText3DState : T extends Path ? Partial<TPathState> : T extends PathSegment ? Partial<TPathState> : T extends string ? Record<string, any> : never;
2197
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS | Door ? Partial<TDoorsState> : T extends Model ? Partial<UpdateModelState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Floor ? DeepPartial<TFloorState> : T extends Facade ? Partial<TFacadeState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Text3D ? UpdatableText3DState : T extends Path ? Partial<TPathState> : T extends PathSegment ? Partial<TPathState> : T extends string ? Record<string, any> : never;
2058
2198
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState> | Partial<TPathState>;
2059
2199
  export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Text3D ? Text3DState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends Floor ? TFloorState | undefined : T extends Facade ? TFacadeState | undefined : T extends Path ? TPathState | undefined : T extends PathSegment ? TPathState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | TPathState | undefined : never;
2060
2200
  /**
@@ -2522,6 +2662,28 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2522
2662
  * sorting of markers and show certain markers always in front
2523
2663
  */
2524
2664
  zIndex?: number;
2665
+ /**
2666
+ * Configuration for the low priority pin fallback strategy.
2667
+ * When enabled, shows a smaller pin version of the marker when all anchor positions have collisions.
2668
+ * @default { enabled: true, size: 2, color: '#666' }
2669
+ */
2670
+ lowPriorityPin?: {
2671
+ /**
2672
+ * Whether to enable low priority pin strategy when all anchor positions have collisions.
2673
+ * @default true
2674
+ */
2675
+ enabled?: boolean;
2676
+ /**
2677
+ * Size of the low priority pin in pixels.
2678
+ * @default 2
2679
+ */
2680
+ size?: number;
2681
+ /**
2682
+ * Color of the low priority pin.
2683
+ * @default '#666'
2684
+ */
2685
+ color?: string;
2686
+ };
2525
2687
  };
2526
2688
  /**
2527
2689
  * Options for creating a new {@link Label} with {@link Labels.add}.
@@ -2738,6 +2900,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2738
2900
  */
2739
2901
  bearingAndPitch?: boolean;
2740
2902
  };
2903
+ export type TSetFloorOptions = {
2904
+ /**
2905
+ * Optionally provide the context for the floor change which will be published as the `reason` for the `floor-change` event.
2906
+ */
2907
+ context?: TFloorChangeReason;
2908
+ };
2741
2909
  }
2742
2910
 
2743
2911
  declare module '@mappedin/mappedin-js/mappedin-js/src/constants' {
@@ -3128,7 +3296,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
3128
3296
  }
3129
3297
 
3130
3298
  declare module '@mappedin/mappedin-js/mappedin-js/src/debug' {
3131
- import type { RendererCore } from '@mappedin/core-sdk';
3299
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
3132
3300
  export class Debug {
3133
3301
  state: RendererCore['Debug']['state'];
3134
3302
  constructor(core: RendererCore);
@@ -3231,6 +3399,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
3231
3399
  */
3232
3400
  animateArrowsOnPath?: boolean;
3233
3401
  };
3402
+ /**
3403
+ * Controls whether the path drawing is animated across floors.
3404
+ * @default true
3405
+ */
3406
+ animatePathDrawing?: boolean;
3234
3407
  /**
3235
3408
  * Options for the path.
3236
3409
  */
@@ -3391,6 +3564,141 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
3391
3564
  export {};
3392
3565
  }
3393
3566
 
3567
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
3568
+ import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
3569
+ import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
3570
+ import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3571
+ import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
3572
+ import type { FloorStack, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3573
+ import { Facade, Coordinate, MapObject, Space, Floor, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3574
+ import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
3575
+ import { Label, Marker, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3576
+ import { Text3D as Text3DView, Model, Path, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3577
+ import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3578
+ import type { TGetState, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
3579
+ import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
3580
+ import { Exporter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter';
3581
+ import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
3582
+ import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
3583
+ import { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
3584
+ import { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
3585
+ import { Models } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models';
3586
+ import { Paths } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths';
3587
+ import { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3588
+ import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
3589
+ import { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
3590
+ import { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
3591
+ import Outdoor from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
3592
+ import { type BBox } from 'geojson';
3593
+ import { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
3594
+ import { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
3595
+ import { Tween } from '@tweenjs/tween.js';
3596
+ export class GeoJsonApi {
3597
+ core: RendererCore;
3598
+ mapObjects: GeojsonApiMapObject[];
3599
+ id: string;
3600
+ mapDataExternal: {
3601
+ [key in string]: MapData;
3602
+ };
3603
+ mapData?: MapData;
3604
+ currentMap: GeojsonApiMapObject;
3605
+ hiddenOutdoorGeometries: [
3606
+ BBox,
3607
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
3608
+ layers: string[]
3609
+ ][];
3610
+ manualFloorVisibility: boolean;
3611
+ mapView: MapView;
3612
+ Camera: Camera;
3613
+ Labels: Labels;
3614
+ Text3D: Text3D;
3615
+ Markers: Markers;
3616
+ Models: Models;
3617
+ Paths: Paths;
3618
+ Exporter: Exporter;
3619
+ Navigation: Navigation;
3620
+ Outdoor: Outdoor;
3621
+ BlueDot: BlueDot;
3622
+ Shapes: Shapes;
3623
+ Style: Style;
3624
+ Images: Images;
3625
+ get StackedMaps(): import("..").StackedMaps;
3626
+ constructor(rendererCore: RendererCore, mapView: MapView);
3627
+ updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Model | Door | Facade | Floor | WALLS | DOORS | Path | PathSegment | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
3628
+ update: () => void;
3629
+ getMapDataInternal(): MapDataInternal | undefined;
3630
+ getMapData(): MapData | undefined;
3631
+ addMap(mapData: MapData, options?: TShow3DMapOptions): Promise<MapData>;
3632
+ setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
3633
+ setFloorStack(floorStack: FloorStack | string, reason?: TFloorChangeReason): void;
3634
+ updateWatermark(options: WatermarkUpdateOptions): void;
3635
+ get currentFloorStack(): FloorStack;
3636
+ get currentFloor(): Floor;
3637
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | Model | Path | PathSegment | Floor | Facade | string>(target: T): TGetState<T>;
3638
+ setHoverColor(c: string): void;
3639
+ getHoverColor(): string | undefined;
3640
+ /**
3641
+ * Create a coordinate from a screen coordinate
3642
+ * @param x - The x coordinate of the screen
3643
+ * @param y - The y coordinate of the screen
3644
+ * @param floor - The floor to use for the coordinate
3645
+ * @returns The coordinate
3646
+ */
3647
+ createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
3648
+ getScreenCoordinateFromCoordinate(coordinate: Coordinate): {
3649
+ x: number;
3650
+ y: number;
3651
+ };
3652
+ isInView(target: Space | MapObject | Label | Marker | string): boolean;
3653
+ auto(): {
3654
+ labels: Label[];
3655
+ };
3656
+ tween<T extends Record<string, unknown>>(object: T): Tween<T>;
3657
+ removeTween(tween: Tween<any>): void;
3658
+ /**
3659
+ * @internal
3660
+ */
3661
+ get __core(): RendererCore;
3662
+ clear(): void;
3663
+ destroy(): void;
3664
+ }
3665
+ /**
3666
+ * Sets the base URL directory where worker scripts are hosted for CSP compatibility.
3667
+ *
3668
+ * This function configures both the MapLibre and collision system workers to load from
3669
+ * external URLs instead of using inline blob URLs. The SDK expects two specific worker
3670
+ * files to be available in the provided directory:
3671
+ * - `maplibre-worker.csp.js` - For MapLibre map rendering
3672
+ * - `collision-worker.csp.js` - For the collision detection system
3673
+ *
3674
+ * Using this approach enables compatibility with strict Content Security Policies
3675
+ * that block unsafe-eval and blob: URLs.
3676
+ *
3677
+ * @param baseUrl - Base URL directory where worker scripts are hosted (without trailing slash)
3678
+ * Example: "https://cdn.example.com/workers"
3679
+ *
3680
+ * @example
3681
+ * ```typescript
3682
+ * import { setWorkersUrl } from '@mappedin/mappedin-js';
3683
+ *
3684
+ * // Call before initializing any maps
3685
+ * setWorkersUrl('https://cdn.example.com/workers');
3686
+ * // This will load:
3687
+ * // - https://cdn.example.com/workers/maplibre-worker.csp.js
3688
+ * // - https://cdn.example.com/workers/collision-worker.csp.js
3689
+ * ```
3690
+ *
3691
+ * @remarks
3692
+ * - The worker files can be found in the published package at:
3693
+ * `node_modules/@mappedin/mappedin-js/lib/esm/workers/`
3694
+ * - For deployment, copy these files to your web server or CDN
3695
+ * - A better approach is to add these files to your build process to ensure
3696
+ * they're always in sync with your application
3697
+ * - Call this function before creating any map instances
3698
+ */
3699
+ export function setWorkersUrl(baseUrl: string): void;
3700
+ }
3701
+
3394
3702
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
3395
3703
  export { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
3396
3704
  export { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot';
@@ -3407,7 +3715,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
3407
3715
  export { default as Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
3408
3716
  export { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
3409
3717
  export { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
3410
- export { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
3411
3718
  }
3412
3719
 
3413
3720
  declare module '@mappedin/mappedin-js/mappedin-js/src/search' {
@@ -3540,6 +3847,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
3540
3847
  import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3541
3848
  import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
3542
3849
  import type { EnvControl, TGetMapDataOptions } from '@packages/internal/mvf-utils/mvf-utils';
3850
+ import { TokenManager } from '@packages/internal/mvf-utils/tokens/token-manager';
3543
3851
  /**
3544
3852
  * Places are the main objects that can be searched for.
3545
3853
  */
@@ -3569,7 +3877,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
3569
3877
  localePacksUrls?: LocalePackUrls;
3570
3878
  languagePacks?: LanguagePackHydrationItem[];
3571
3879
  binaryBundle?: Uint8Array;
3572
- sasToken?: string;
3880
+ tokenManager?: TokenManager;
3573
3881
  getMapDataOptions?: TGetMapDataOptions;
3574
3882
  };
3575
3883
  /**
@@ -3629,12 +3937,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot' {
3629
3937
  declare module '@mappedin/mappedin-js/mappedin-js/src' {
3630
3938
  import MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
3631
3939
  import type { TEvents, TEventPayload, TClickPayload, THoverPayload, TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
3632
- import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
3940
+ import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, Environment } from '@mappedin/mappedin-js/packages/mvf-utils';
3633
3941
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
3634
3942
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3635
3943
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf';
3636
3944
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
3637
3945
  export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
3946
+ export { disableText3DWorker } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
3638
3947
  import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, EnvMapOptions, MapViewState, UpdateModelState, InitializeModelState, WatermarkUpdateOptions } from '@mappedin/mappedin-js/geojson/src';
3639
3948
  import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
3640
3949
  export type { PubSub } from '@packages/internal/common/pubsub';
@@ -3642,7 +3951,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3642
3951
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
3643
3952
  import type { LanguagePackHydrationItem, TImagePlacementOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
3644
3953
  import { MAPPEDIN_COLORS } from '@mappedin/mappedin-js/mappedin-js/src/constants';
3645
- import { type Environment } from '@packages/internal/mvf-utils/mvf-utils';
3646
3954
  import type { TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TFollowMode, TFollowCameraOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
3647
3955
  import type { TExpandOptions, TStackedMapsEvents, TStackedMapsState } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
3648
3956
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
@@ -3835,12 +4143,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3835
4143
  floorHeight?: number;
3836
4144
  updateCameraElevationOnFloorChange?: boolean;
3837
4145
  };
3838
- /**
3839
- * @experimental
3840
- * @internal
3841
- * @default false
3842
- */
3843
- keepOutdoorGeometryVisible?: boolean;
3844
4146
  /**
3845
4147
  * @experimental
3846
4148
  *
@@ -3913,6 +4215,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3913
4215
  export type THydrateMapDataBundle = {
3914
4216
  type: 'binary';
3915
4217
  options?: {
4218
+ version?: '2.0.0' | '3.0.0';
3916
4219
  enterprise?: boolean;
3917
4220
  };
3918
4221
  languagePacks?: {
@@ -3926,6 +4229,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3926
4229
  } | {
3927
4230
  type: 'json';
3928
4231
  options?: {
4232
+ version?: '2.0.0' | '3.0.0';
3929
4233
  enterprise?: boolean;
3930
4234
  };
3931
4235
  languagePacks?: {
@@ -3976,38 +4280,831 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3976
4280
  export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS };
3977
4281
  export type { MapView, MapData, MapViewState, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, UpdateModelState, InitializeModelState, };
3978
4282
  export type * from 'geojson';
3979
- export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TFloorState, TFacadeState, } from '@mappedin/mappedin-js/mappedin-js/src/types';
4283
+ export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TFloorState, TFacadeState, TSetFloorOptions, } from '@mappedin/mappedin-js/mappedin-js/src/types';
3980
4284
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3981
4285
  export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3982
4286
  export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
3983
4287
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3984
4288
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3985
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3986
- export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, DynamicFocus, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
4289
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4290
+ export { setWorkersUrl } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
4291
+ export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3987
4292
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3988
4293
  export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
3989
4294
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3990
4295
  }
3991
4296
 
3992
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
3993
- import type { NodeCollection } from '@mappedin/mvf';
3994
- import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
3995
- import type { EnterpriseLocation, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3996
- import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
3997
- import BaseMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object';
3998
- import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
3999
- import type { IAnchorable, IFocusable } from '@mappedin/mappedin-js/mappedin-js/src/types';
4297
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/api-types' {
4000
4298
  /**
4001
- * A class representing {@link Path} node data within the map.
4002
- *
4003
- * Nodes are used to define points in the map's pathfinding graph.
4004
- *
4005
- */
4006
- class Node extends BaseMetaData implements IGeoJSONData, IFocusable, IAnchorable {
4007
- #private;
4008
- /**
4009
- * @internal
4010
- */
4299
+ * This file contains the API types for MappedinSDK - before they get turned into Classes
4300
+ */
4301
+ export type TLocationType = 'amenities' | 'tenant';
4302
+ export type TNode = {
4303
+ id: string;
4304
+ x: number;
4305
+ y: number;
4306
+ map: string;
4307
+ externalId?: string;
4308
+ paths: {
4309
+ node: string;
4310
+ map: string;
4311
+ weight?: number;
4312
+ }[];
4313
+ [propName: string]: any;
4314
+ };
4315
+ export type TImage = {
4316
+ original?: string;
4317
+ large?: string;
4318
+ '140x140'?: string;
4319
+ xxlarge?: string;
4320
+ xsmall?: string;
4321
+ '66x66'?: string;
4322
+ xlarge?: string;
4323
+ medium?: string;
4324
+ xxsmall?: string;
4325
+ small?: string;
4326
+ };
4327
+ export type TLogo = TImage;
4328
+ export type TGalleryImage = {
4329
+ image: TImage;
4330
+ caption?: string;
4331
+ };
4332
+ export type TPhone = {
4333
+ number?: string;
4334
+ };
4335
+ export type TSocial = {
4336
+ website?: string;
4337
+ twitter?: string;
4338
+ facebook?: string;
4339
+ instagram?: string;
4340
+ };
4341
+ export type TColor = {
4342
+ hex: string;
4343
+ opacity: number;
4344
+ rgba: string;
4345
+ };
4346
+ export type TVortex = {
4347
+ id: string;
4348
+ name: string;
4349
+ type: string;
4350
+ weight: number;
4351
+ multiplier: number;
4352
+ [propName: string]: any;
4353
+ };
4354
+ export type TPicture = {
4355
+ original?: string;
4356
+ };
4357
+ export type TOpeningHours = {
4358
+ '@type': string;
4359
+ opens: string;
4360
+ closes: string;
4361
+ dayOfWeek: string[];
4362
+ validFrom?: string;
4363
+ validThrough?: string;
4364
+ };
4365
+ export type TSiblingGroup = {
4366
+ label: string;
4367
+ siblings: string[];
4368
+ };
4369
+ export type TState = {
4370
+ type: string;
4371
+ start?: string;
4372
+ end?: string;
4373
+ };
4374
+ export type TCategory = {
4375
+ name?: string;
4376
+ externalId?: string;
4377
+ parents?: string[];
4378
+ id?: string;
4379
+ icon?: TPicture;
4380
+ };
4381
+ export type TEvent = {
4382
+ id: string;
4383
+ type: string;
4384
+ name: string;
4385
+ location?: string;
4386
+ description?: string;
4387
+ image?: TImage;
4388
+ startDate?: number;
4389
+ endDate?: number;
4390
+ showDate?: number;
4391
+ };
4392
+ export interface TGeoReference {
4393
+ target: {
4394
+ x: number;
4395
+ y: number;
4396
+ };
4397
+ control: {
4398
+ x: number;
4399
+ y: number;
4400
+ };
4401
+ }
4402
+ export interface TMap {
4403
+ id: string;
4404
+ name: string;
4405
+ shortName: string;
4406
+ elevation?: number;
4407
+ scale?: number;
4408
+ x_scale?: number;
4409
+ georeference?: TGeoReference[];
4410
+ [propName: string]: any;
4411
+ }
4412
+ export type TMapGroup = {
4413
+ name: string;
4414
+ id: string;
4415
+ };
4416
+ export type TBuilding = TLocation & {
4417
+ groupId: string;
4418
+ };
4419
+ export type TLocation = {
4420
+ id: string;
4421
+ name: string;
4422
+ type: string;
4423
+ nodes: {
4424
+ map: TMap['id'];
4425
+ node: TNode['id'];
4426
+ }[];
4427
+ polygons: {
4428
+ map: TMap['id'];
4429
+ id: TPolygon['id'];
4430
+ }[];
4431
+ categories: string[];
4432
+ description?: string;
4433
+ sortOrder?: number;
4434
+ logo?: TLogo;
4435
+ phone?: TPhone;
4436
+ social?: TSocial;
4437
+ color?: TColor;
4438
+ shortName?: string;
4439
+ detailsUrl?: string;
4440
+ parent?: string | null;
4441
+ tags?: string[];
4442
+ externalId?: string;
4443
+ picture?: TPicture;
4444
+ states?: TState[];
4445
+ operationHours?: TOpeningHours[] | undefined;
4446
+ siblingGroups?: TSiblingGroup[] | undefined;
4447
+ gallery?: TGalleryImage[] | undefined;
4448
+ [propName: string]: any;
4449
+ };
4450
+ export type TPolygon = {
4451
+ id: string;
4452
+ map: string;
4453
+ layer?: string;
4454
+ layerId?: string;
4455
+ externalId?: string;
4456
+ name?: string;
4457
+ entrances: {
4458
+ map: TMap['id'];
4459
+ id: TNode['id'];
4460
+ }[];
4461
+ };
4462
+ export type TPolygonRanking = {
4463
+ polygonId: string;
4464
+ entranceNodeId: string;
4465
+ score: number;
4466
+ };
4467
+ export type TLocationState = {
4468
+ id: string;
4469
+ name: string;
4470
+ value: string;
4471
+ };
4472
+ export type TVenue = {
4473
+ address?: string;
4474
+ city?: string;
4475
+ countrycode?: string;
4476
+ defaultMap?: string;
4477
+ externalId?: string;
4478
+ id?: string;
4479
+ latitude?: number;
4480
+ logo?: TLogo;
4481
+ longitude?: number;
4482
+ metadata?: any;
4483
+ name?: string;
4484
+ operationHours?: TOpeningHours[];
4485
+ postal?: string;
4486
+ slug?: string;
4487
+ state?: string;
4488
+ telephone?: string;
4489
+ tzid?: string;
4490
+ tzidOverride?: string;
4491
+ utcOffset?: string;
4492
+ website?: string;
4493
+ };
4494
+ export type TMappedinAPI = {
4495
+ nodes: TNode[];
4496
+ locations: TLocation[];
4497
+ categories: TCategory[];
4498
+ mapGroups: TMapGroup[];
4499
+ polygons: TPolygon[];
4500
+ maps: TMap[];
4501
+ themes: any;
4502
+ venue: TVenue;
4503
+ vortexes: TVortex[];
4504
+ locationStates?: TLocationState[];
4505
+ imageBinaries?: Map<string, Uint8Array>;
4506
+ };
4507
+ }
4508
+
4509
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-types' {
4510
+ import type { MapId, Style, Feature, LineString, ObstructionProperties, EntranceProperties, SpaceProperties, ObstructionCollection, EntranceCollection, SpaceCollection, FloorImageProperties, BaseTextAreaProperties, EnterpriseTexture } from '@mappedin/mvf';
4511
+ import type { FeatureCollection, MultiPolygon, Point, Polygon } from 'geojson';
4512
+ import type { TImage, TMap, TNode, TOpeningHours, TPhone, TSiblingGroup, TSocial } from '@mappedin/mappedin-js/packages/mvf-utils/api-types';
4513
+ export type WithIDs<T> = Map<string, T>;
4514
+ type ManifestFile = {
4515
+ type: 'file';
4516
+ name: string;
4517
+ };
4518
+ type ManifestFolder = {
4519
+ type: 'folder';
4520
+ name: string;
4521
+ children: ManifestFile[];
4522
+ };
4523
+ export type MVFStyle = Style & {
4524
+ type: string;
4525
+ width?: number;
4526
+ };
4527
+ export type MVFObstructionFeature = ObstructionCollection['features'][number];
4528
+ export type MVFEntranceFeature = EntranceCollection['features'][number];
4529
+ export type MVFSpaceFeature = SpaceCollection['features'][number];
4530
+ export type WithPolygonImage<T extends SpaceProperties | ObstructionProperties> = T & {
4531
+ image?: FloorImageProperties;
4532
+ };
4533
+ export type WithTextArea<T extends SpaceProperties | ObstructionProperties> = T & {
4534
+ textArea?: BaseTextAreaProperties;
4535
+ };
4536
+ export type WithEntepriseStyle<T extends SpaceProperties | ObstructionProperties> = T & {
4537
+ style?: {
4538
+ styleId: string;
4539
+ edgeOffset?: number;
4540
+ };
4541
+ };
4542
+ export type WithTextures<T extends SpaceProperties | ObstructionProperties> = T & {
4543
+ textures?: EnterpriseTexture[];
4544
+ };
4545
+ export type PolygonFeatureProperties<T extends SpaceProperties | ObstructionProperties> = WithEntepriseStyle<T> | WithPolygonImage<T> | WithTextures<T>;
4546
+ export type MVFv1PolygonLikeProperties = {
4547
+ id: string;
4548
+ altitude?: number;
4549
+ color?: string;
4550
+ externalId?: string | null;
4551
+ height?: number;
4552
+ opacity?: number;
4553
+ layer?: string;
4554
+ level: string;
4555
+ parent?: string | null;
4556
+ };
4557
+ export type MVFv1SpaceProperties = MVFv1PolygonLikeProperties & {
4558
+ entrances: {
4559
+ level: TMap['id'];
4560
+ id: TNode['id'];
4561
+ }[];
4562
+ };
4563
+ export type MVFv1ObstructionProperties = MVFv1PolygonLikeProperties;
4564
+ export type MVFv1ConnectionProperties = {
4565
+ id: string;
4566
+ /**
4567
+ * Indicates that a connection is accessible
4568
+ */
4569
+ accessible: boolean;
4570
+ /**
4571
+ * Array of node ids that this Connection connects with.
4572
+ */
4573
+ destinations: string[];
4574
+ level: string;
4575
+ multiplier: number;
4576
+ name: string;
4577
+ /**
4578
+ * Type of the connection such as `escalator` or `elevator`
4579
+ */
4580
+ type: string;
4581
+ weight: number;
4582
+ };
4583
+ export type MVFv1NodeProperties = {
4584
+ id: string;
4585
+ /**
4586
+ * Indicates that a node is accessible
4587
+ */
4588
+ accessible: boolean;
4589
+ /**
4590
+ * External id of a node is used to sync and connect to external systems to Mappedin data
4591
+ */
4592
+ externalId: string | null;
4593
+ level: string;
4594
+ multiplier: number;
4595
+ neighbors: string[];
4596
+ weight: number;
4597
+ };
4598
+ export type MVFv1LevelProperties = {
4599
+ id: string;
4600
+ abbreviation?: string;
4601
+ building?: string;
4602
+ elevation?: number;
4603
+ name: string;
4604
+ };
4605
+ export type MVFv1ManifestProperties = {
4606
+ /**
4607
+ * Name of the venue
4608
+ */
4609
+ name: string;
4610
+ folder_struct: (ManifestFolder | ManifestFile)[];
4611
+ /**
4612
+ * Mappedin Venue Format version number of the MVF bundle
4613
+ */
4614
+ version: string;
4615
+ /**
4616
+ * Timestamp when the MVF bundle was generated. E.g. `2022-02-25T16:26:09.908Z`
4617
+ */
4618
+ time: string;
4619
+ };
4620
+ export type MVFv1BuildingProperties = {
4621
+ id: string;
4622
+ name: string;
4623
+ venue: string;
4624
+ };
4625
+ export type MVFv1CategoryProperties = {
4626
+ id: string;
4627
+ name: string;
4628
+ picture?: TImage;
4629
+ };
4630
+ export type MVFv1LocationProperties = {
4631
+ id: string;
4632
+ address?: string | null;
4633
+ /**
4634
+ * Array of {@link MICategoryProperties | category} ids
4635
+ */
4636
+ categories: string[];
4637
+ /**
4638
+ * A text description of the location usually indicating what the location is used for
4639
+ */
4640
+ description?: string | null;
4641
+ /**
4642
+ * Email address to for contacting this location
4643
+ */
4644
+ email?: string | null;
4645
+ /**
4646
+ * External id used to connect Mappedin Location to an external system
4647
+ */
4648
+ externalId?: string | null;
4649
+ /**
4650
+ * Opening hours of the location
4651
+ */
4652
+ hours?: TOpeningHours[] | null;
4653
+ /**
4654
+ * Collection of links related to this location
4655
+ */
4656
+ links?: {
4657
+ label: string;
4658
+ url: string;
4659
+ }[] | null;
4660
+ logo?: TImage | null;
4661
+ /**
4662
+ * Name of the location. By default this is the string displayed in the location label
4663
+ */
4664
+ name: string;
4665
+ /**
4666
+ * Phone number for contacting this location
4667
+ */
4668
+ phone?: TPhone | null;
4669
+ picture?: TImage | null;
4670
+ services?: string | null;
4671
+ siblingGroups?: TSiblingGroup[] | null;
4672
+ /**
4673
+ * Social media links of the location
4674
+ */
4675
+ social?: TSocial | null;
4676
+ /**
4677
+ * Array of {@link MISpaceProperties | MVF Space} ids for this location
4678
+ */
4679
+ spaces?: {
4680
+ id: string;
4681
+ map: string;
4682
+ }[] | null;
4683
+ states?: {
4684
+ type: string;
4685
+ start?: string;
4686
+ end?: string;
4687
+ }[] | null;
4688
+ type: string;
4689
+ };
4690
+ export type MVFv1ObstructionCollection = FeatureCollection<Polygon, MVFv1ObstructionProperties>;
4691
+ export type MVFv1SpaceCollection = FeatureCollection<Polygon, MVFv1SpaceProperties>;
4692
+ export type MVFv1ConnectionCollection = FeatureCollection<Point, MVFv1ConnectionProperties>;
4693
+ export type MVFv1NodeCollection = FeatureCollection<Point, MVFv1NodeProperties>;
4694
+ export type MVFv1LevelCollection = FeatureCollection<Polygon | MultiPolygon, MVFv1LevelProperties>;
4695
+ export type MVFv1ManifestCollection = FeatureCollection<Point, MVFv1ManifestProperties>;
4696
+ export type MVFv1BuildingCollection = FeatureCollection<Polygon, MVFv1BuildingProperties>;
4697
+ export type MVFv1CategoryCollection = FeatureCollection<null, MVFv1CategoryProperties>;
4698
+ export type MVFv1LocationCollection = FeatureCollection<null, MVFv1LocationProperties>;
4699
+ export type ParsedMVFv1 = {
4700
+ /**
4701
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
4702
+ */
4703
+ space: {
4704
+ [mapId: MapId]: MVFv1SpaceCollection | undefined;
4705
+ };
4706
+ /**
4707
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
4708
+ */
4709
+ obstruction: {
4710
+ [mapId: MapId]: MVFv1ObstructionCollection | undefined;
4711
+ };
4712
+ /**
4713
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
4714
+ */
4715
+ level: {
4716
+ [mapId: MapId]: MVFv1LevelCollection | undefined;
4717
+ };
4718
+ /**
4719
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
4720
+ */
4721
+ node: {
4722
+ [mapId: MapId]: MVFv1NodeCollection | undefined;
4723
+ };
4724
+ /**
4725
+ * @propertyNames { "pattern": "^m_[0-9a-z]{16}$" }
4726
+ */
4727
+ connection: {
4728
+ [mapId: MapId]: MVFv1ConnectionCollection | undefined;
4729
+ };
4730
+ 'manifest.geojson': MVFv1ManifestCollection;
4731
+ 'building.geojson': MVFv1BuildingCollection;
4732
+ 'category.geojson': MVFv1CategoryCollection;
4733
+ 'location.geojson': MVFv1LocationCollection;
4734
+ };
4735
+ export type RawMVFv1 = {
4736
+ 'manifest.geojson': Uint8Array;
4737
+ 'building.geojson': Uint8Array;
4738
+ 'category.geojson': Uint8Array;
4739
+ 'location.geojson': Uint8Array;
4740
+ level: Partial<Record<MapId, Uint8Array>>;
4741
+ node: Partial<Record<MapId, Uint8Array>>;
4742
+ space: Partial<Record<MapId, Uint8Array>>;
4743
+ obstruction: Partial<Record<MapId, Uint8Array>>;
4744
+ connection: Partial<Record<MapId, Uint8Array>>;
4745
+ };
4746
+ export type ObstructionFeature = Feature<LineString | Polygon, ObstructionProperties>;
4747
+ export type ObstructionWallFeature = Feature<LineString, ObstructionProperties>;
4748
+ export type EntranceFeature = Feature<LineString, EntranceProperties>;
4749
+ export {};
4750
+ }
4751
+
4752
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
4753
+ import { type ParsedMVF, type ParsedMVFLocalePack, type RawMVF } from '@mappedin/mvf';
4754
+ import type { ParsedMVFv1, RawMVFv1 } from '@mappedin/mappedin-js/packages/mvf-utils/mvf-types';
4755
+ export * from '@mappedin/mappedin-js/packages/mvf-utils/tokens/access-token';
4756
+ export * from '@mappedin/mappedin-js/packages/mvf-utils/tokens/sas-token';
4757
+ /**
4758
+ * This is how we can avoid bundling in node-fetch (via isomorphic fetch),
4759
+ * which keeps popping up in security advisories
4760
+ * This is a pattern that most isomorphic libraries appear to use,
4761
+ * where when running in node, you can pass your own fetch function
4762
+ * as one is not provided by Node.js.
4763
+ *
4764
+ */
4765
+ export function isomorphicFetch(): Window['fetch'];
4766
+ /**
4767
+ * @internal
4768
+ * export for test mocking
4769
+ */
4770
+ export function __setFetchFn(fn: any): void;
4771
+ export type TGetVenueOptions = {
4772
+ accessToken?: string;
4773
+ clientId?: string;
4774
+ clientSecret?: string;
4775
+ baseUrl?: string;
4776
+ includeHidden?: boolean;
4777
+ noAuth?: boolean;
4778
+ perspective?: string;
4779
+ language?: string;
4780
+ headers?: {
4781
+ [key in string]: string;
4782
+ };
4783
+ venue: string;
4784
+ /**
4785
+ * An object specifying additional properties to fetch for each data item.
4786
+ * Each key represents a data item (e.g., 'locations', 'nodes'), and the value is an array of strings indicating extra properties to be included.
4787
+ * @example
4788
+ * For example:
4789
+ * ```
4790
+ * getVenue({
4791
+ * venue: 'some-venue',
4792
+ * things: { vortexes: [ 'material' ]
4793
+ * }})
4794
+ * ```
4795
+ */
4796
+ things?: any;
4797
+ useDraftData?: boolean;
4798
+ platformString?: string;
4799
+ secure?: boolean;
4800
+ preloadMapGeometry?: boolean;
4801
+ };
4802
+ export type TGetVenueBundleOptions = TGetVenueOptions & {
4803
+ baseUri?: string;
4804
+ version?: string;
4805
+ /**
4806
+ * Parse bundle and convert images to blobs. Disabled in React Native
4807
+ * @private
4808
+ */
4809
+ shouldPopulateBundledImagesAsBlobs?: boolean;
4810
+ };
4811
+ /** @internal */
4812
+ export type TGetVenueMVFOptions = TGetVenueBundleOptions & {
4813
+ onMVFParsed?: (mvf: ParsedMVF) => void;
4814
+ /**
4815
+ * Override initial MVF data
4816
+ */
4817
+ override?: Partial<Pick<ParsedMVF, 'styles.json'>>;
4818
+ };
4819
+ /**
4820
+ * Options for configuring search functionality.
4821
+ */
4822
+ export type TSearchOptions = {
4823
+ /**
4824
+ * Indicates whether search functionality is enabled.
4825
+ */
4826
+ enabled: boolean;
4827
+ };
4828
+ export type TGetMapDataSharedOptions = {
4829
+ /**
4830
+ * Mappedin map ID.
4831
+ */
4832
+ mapId: string;
4833
+ /**
4834
+ * Optionally provide a custom base URL for the Mappedin API request.
4835
+ * Use the {@link Environment | `environment`} setting to switch environments
4836
+ */
4837
+ baseUri?: string;
4838
+ /**
4839
+ * Optionally provide a custom URI for authentication when obtaining an access token.
4840
+ * Use the {@link Environment | `environment`} setting to switch environments.
4841
+ */
4842
+ baseAuthUri?: string;
4843
+ /**
4844
+ * Callback for when the Mappedin map data has been fetched and parsed as Mappedin Venue Format (MVF) data.
4845
+ * @param mvf Parsed MVF data.
4846
+ */
4847
+ onMVFParsed?: (mvf: ParsedMVF) => void;
4848
+ /**
4849
+ * Load different view of mvf data based on configId
4850
+ */
4851
+ viewId?: string;
4852
+ /**
4853
+ * set the target SDK environment
4854
+ * @default 'us'
4855
+ * @example
4856
+ * const mapData = getMapData({
4857
+ * key: '',
4858
+ * secret: '',
4859
+ * environment: 'eu'
4860
+ * })
4861
+ */
4862
+ environment?: ServiceEnvironment;
4863
+ /**
4864
+ * The language of the map data.
4865
+ * The ISO 639-1 language code to change to (e.g., 'en' for English, 'fr' for French). Check ({@link EnterpriseVenue.languages}) for available languages
4866
+ */
4867
+ language?: string;
4868
+ /**
4869
+ * Analytics configuration.
4870
+ */
4871
+ analytics?: {
4872
+ /**
4873
+ * Whether to log analytics events.
4874
+ * @default false
4875
+ */
4876
+ logEvents?: boolean;
4877
+ /**
4878
+ * Whether to send analytics events to the server.
4879
+ * @default false
4880
+ */
4881
+ sendEvents?: boolean;
4882
+ /**
4883
+ * Custom base URI for analytics requests. If not provided, the default analytics endpoint will be used.
4884
+ * Use the {@link Environment | `environment`} setting to switch environments.
4885
+ */
4886
+ baseUri?: string;
4887
+ /**
4888
+ * Context for analytics events.
4889
+ * @default 'websdk'
4890
+ * @internal
4891
+ */
4892
+ context?: string;
4893
+ };
4894
+ search?: TSearchOptions;
4895
+ /**
4896
+ * @hidden
4897
+ * @internal
4898
+ */
4899
+ layoutId?: 'draft';
4900
+ /**
4901
+ * @hidden
4902
+ * @internal
4903
+ */
4904
+ mvfVersion?: '2.0.0' | '3.0.0';
4905
+ };
4906
+ /**
4907
+ * @interface
4908
+ */
4909
+ export type TGetMapDataWithCredentialsOptions = {
4910
+ /**
4911
+ * Mappedin auth key.
4912
+ */
4913
+ key: string;
4914
+ /**
4915
+ * Mappedin auth secret.
4916
+ */
4917
+ secret: string;
4918
+ } & TGetMapDataSharedOptions;
4919
+ /**
4920
+ * @interface
4921
+ */
4922
+ export type TGetMapDataWithAccessTokenOptions = {
4923
+ /**
4924
+ * Mappedin access token.
4925
+ */
4926
+ accessToken: string;
4927
+ } & TGetMapDataSharedOptions;
4928
+ export type TGetMapDataOptions = TGetMapDataWithCredentialsOptions | TGetMapDataWithAccessTokenOptions;
4929
+ export type TProcessedMVFOptions = TGetMapDataOptions & {
4930
+ clientId: string;
4931
+ clientSecret: string;
4932
+ venue: string;
4933
+ accessToken: string;
4934
+ };
4935
+ export type TAllGetVenueOptions = TGetVenueOptions | TGetVenueMVFOptions | (TProcessedMVFOptions & {
4936
+ perspective?: string;
4937
+ });
4938
+ export type TGetVenueOptionsInternal<T extends TAllGetVenueOptions> = Omit<T & {
4939
+ baseUrl?: string;
4940
+ supplementaryUrl?: string;
4941
+ noAuth?: boolean;
4942
+ includeHidden?: boolean;
4943
+ apiGateway?: string;
4944
+ authorization?: string;
4945
+ headers?: any;
4946
+ }, 'things'> & {
4947
+ things?: any;
4948
+ };
4949
+ export const defaultOptions: TGetVenueOptionsInternal<TGetVenueOptions>;
4950
+ /**
4951
+ * @internal
4952
+ */
4953
+ export function parseOptions<T extends TAllGetVenueOptions>(options: T): TGetVenueOptionsInternal<T>;
4954
+ /**
4955
+ * Prepares the request and URL fields to pass into generateAPIRequest
4956
+ * @param options options from getVenue- baseUrl and supplementaryUrl are used
4957
+ * @param url string describing the url corresponding to the client's request
4958
+ * @param supplementary whether to use the supplementaryUrl when sending the request
4959
+ */
4960
+ export function constructParamsForRequest(options: TGetVenueOptionsInternal<TGetVenueOptions>, url: string, supplementary?: boolean): {
4961
+ req: {
4962
+ method: string;
4963
+ headers: any;
4964
+ };
4965
+ url: string;
4966
+ };
4967
+ export function generateAPIRequest(options: TGetVenueOptionsInternal<TGetVenueOptions>, url: string, supplementary?: boolean): Promise<any>;
4968
+ export const getPerspectivesFromResponse: (res: unknown) => Record<string, {
4969
+ url: string;
4970
+ locale_packs: LocalePackUrls;
4971
+ }> | null;
4972
+ /**
4973
+ * Get the bundle URL and updated_at time.
4974
+ * @internal
4975
+ */
4976
+ export function getVenueMVFURL(userOptions: TGetVenueBundleOptions, path?: string): Promise<{
4977
+ url: any;
4978
+ localePacks: any;
4979
+ updated_at: any;
4980
+ }>;
4981
+ export function getLanguagePackUnitArray(url: string, { signal }: {
4982
+ signal: AbortSignal;
4983
+ }): Promise<Uint8Array>;
4984
+ export function parseLanguagePack(data: Uint8Array): Promise<ParsedMVFLocalePack>;
4985
+ export function downloadLanguagePack(url: string, { signal }: {
4986
+ signal: AbortSignal;
4987
+ }): Promise<ParsedMVFLocalePack | undefined>;
4988
+ export function downloadVenueBundleMVFAPIGateway(options: TGetVenueBundleOptions): Promise<{
4989
+ compressed: Uint8Array;
4990
+ localePacks: LocalePackUrls;
4991
+ }>;
4992
+ export function downloadVenueBundleMVF(options: TGetVenueBundleOptions): Promise<Uint8Array>;
4993
+ export function parseMVFv1(raw: RawMVFv1): ParsedMVFv1;
4994
+ export function validateStaticMVFv1Files(data: unknown): boolean;
4995
+ export function unzipMVFv1(data: any): Promise<RawMVFv1>;
4996
+ export function downloadMVF(userOptions: TGetMapDataOptions, accessToken: string): Promise<Uint8Array>;
4997
+ export function getMakerBundleURL(userOptions: TGetMapDataOptions, token: string): Promise<{
4998
+ url: string;
4999
+ updated_at: string;
5000
+ }>;
5001
+ /**
5002
+ * @internal
5003
+ */
5004
+ export function parseMVF(raw: RawMVF & {
5005
+ options?: {
5006
+ outdoorViewToken?: string;
5007
+ };
5008
+ }): ParsedMVF;
5009
+ /**
5010
+ * Figure out if the MVF data at least has the static files we expect.
5011
+ */
5012
+ export function validateStaticMVFFiles(data: unknown): boolean;
5013
+ /**
5014
+ * @internal
5015
+ */
5016
+ export function unzipMVF(data: Uint8Array): Promise<RawMVF>;
5017
+ export type LocalePackUrls = {
5018
+ [key: string]: string;
5019
+ };
5020
+ /**
5021
+ * Represents the environment state configuration.
5022
+ * @example
5023
+ * const mapData = getMapData({
5024
+ * key: '',
5025
+ * secret: '',
5026
+ * environment: 'eu'
5027
+ * })
5028
+ */
5029
+ export type Environment = {
5030
+ /**
5031
+ * The base URI for the API.
5032
+ */
5033
+ baseUri: string;
5034
+ /**
5035
+ * The base URI for authentication.
5036
+ */
5037
+ baseAuthUri: string;
5038
+ /**
5039
+ * The base URI for analytics.
5040
+ */
5041
+ analyticsBaseUri: string;
5042
+ /**
5043
+ * The URI for the tile server.
5044
+ */
5045
+ tileServerUri: string;
5046
+ };
5047
+ type InternalServiceEnvironment = 'us' | 'eu' | 'us-staging-enterprise' | 'us-staging-self-serve';
5048
+ export type ServiceEnvironment = 'us' | 'eu';
5049
+ export function createEnvControl(): {
5050
+ /**
5051
+ * @internal
5052
+ */
5053
+ updateByUserOption(userOption: TGetMapDataOptions): void;
5054
+ /**
5055
+ * @internal
5056
+ */
5057
+ updateTileServerBaseUrl(url: string): void;
5058
+ /**
5059
+ * @internal
5060
+ */
5061
+ updateEnvironment(env: InternalServiceEnvironment): void;
5062
+ getBaseUri(enterprise: boolean): string;
5063
+ getBaseAuthUri(enterprise?: boolean): string;
5064
+ getAnalyticsBaseUri(): string;
5065
+ getTileServerUri(): string;
5066
+ reset(): void;
5067
+ /**
5068
+ * @internal
5069
+ */
5070
+ __getState: () => Environment;
5071
+ };
5072
+ export type EnvControl = ReturnType<typeof createEnvControl>;
5073
+ /**
5074
+ * Return IDs for all individual maps that are part of a multi-building MVF, not including the
5075
+ * outdoor map. If a map is not a multi-building map, an empty array is returned.
5076
+ */
5077
+ export const getBuildingIds: (mvf: ParsedMVF) => string[];
5078
+ export function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: '2.0.0' | '3.0.0'): Promise<ParsedMVF>;
5079
+ }
5080
+
5081
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/geometry' {
5082
+ import type { EntranceFeature, ObstructionWallFeature } from '@mappedin/mappedin-js/packages/mvf-utils/mvf-types';
5083
+ export function findAndSplitObstructionByAllEntrances(wall: ObstructionWallFeature, entrances: EntranceFeature[]): {
5084
+ entrances: EntranceFeature[];
5085
+ obstructions: ObstructionWallFeature[];
5086
+ };
5087
+ }
5088
+
5089
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
5090
+ import type { NodeCollection } from '@mappedin/mvf';
5091
+ import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
5092
+ import type { EnterpriseLocation, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5093
+ import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
5094
+ import BaseMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object';
5095
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
5096
+ import type { IAnchorable, IFocusable } from '@mappedin/mappedin-js/mappedin-js/src/types';
5097
+ /**
5098
+ * A class representing {@link Path} node data within the map.
5099
+ *
5100
+ * Nodes are used to define points in the map's pathfinding graph.
5101
+ *
5102
+ */
5103
+ class Node extends BaseMetaData implements IGeoJSONData, IFocusable, IAnchorable {
5104
+ #private;
5105
+ /**
5106
+ * @internal
5107
+ */
4011
5108
  static readonly __type = "node";
4012
5109
  /**
4013
5110
  * @internal
@@ -5120,10 +6217,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink
5120
6217
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
5121
6218
  import type { Image as MVFImage } from '@mappedin/mvf';
5122
6219
  import BaseMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object';
6220
+ import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5123
6221
  /**
5124
6222
  * A class representing image link data within the map.
5125
6223
  */
5126
- class Image extends BaseMetaData {
6224
+ class ImageMetaData extends BaseMetaData {
5127
6225
  #private;
5128
6226
  /**
5129
6227
  * @internal
@@ -5135,12 +6233,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
5135
6233
  * @param instance The instance to check.
5136
6234
  * @returns {boolean} True if the instance is a Image, false otherwise.
5137
6235
  */
5138
- static is(instance: object): instance is Image;
6236
+ static is(instance: object): instance is ImageMetaData;
5139
6237
  /**
5140
6238
  * @internal
5141
6239
  */
5142
6240
  constructor(options: {
5143
6241
  mvfData: MVFImage;
6242
+ mapData: MapDataInternal;
5144
6243
  });
5145
6244
  /**
5146
6245
  * Gets the url of the image.
@@ -5179,7 +6278,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
5179
6278
  */
5180
6279
  destroy(): void;
5181
6280
  }
5182
- export default Image;
6281
+ export default ImageMetaData;
5183
6282
  }
5184
6283
 
5185
6284
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack' {
@@ -5838,10 +6937,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-
5838
6937
  import type { TFocusTarget, TNavigationTarget, IFocusable, INavigatable } from '@mappedin/mappedin-js/mappedin-js/src/types';
5839
6938
  import { OpeningHours } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/opening-hours';
5840
6939
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
5841
- import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
5842
- type LocationData = Omit<MVFLocation, 'categories' | 'spaces' | 'obstructions' | 'entrances' | 'shapes' | 'connections' | 'annotations' | 'areas' | 'openingHoursSpecification' | 'links' | 'pictures' | 'website'> & {
6940
+ import ImageMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
6941
+ type LocationData = Omit<MVFLocation, 'categories' | 'spaces' | 'obstructions' | 'entrances' | 'shapes' | 'connections' | 'annotations' | 'areas' | 'openingHoursSpecification' | 'links' | 'pictures' | 'website' | 'icon'> & {
5843
6942
  links: Hyperlink[];
5844
- images: Image[];
6943
+ images: ImageMetaData[];
6944
+ icon?: ImageMetaData;
5845
6945
  };
5846
6946
  class LocationProfile extends BaseMetaData implements LocationData, IFocusable, INavigatable {
5847
6947
  #private;
@@ -5878,7 +6978,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-
5878
6978
  /**
5879
6979
  * The location's pictures
5880
6980
  */
5881
- images: Image[];
6981
+ images: ImageMetaData[];
5882
6982
  /**
5883
6983
  * Web links for the location
5884
6984
  */
@@ -5892,7 +6992,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-
5892
6992
  *
5893
6993
  * @format uri
5894
6994
  */
5895
- icon?: string;
6995
+ icon?: ImageMetaData;
5896
6996
  constructor(data: MapDataInternal, options: {
5897
6997
  mvfData: MVFLocation;
5898
6998
  });
@@ -6177,6 +7277,27 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path' {
6177
7277
  }
6178
7278
  }
6179
7279
 
7280
+ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/types' {
7281
+ /**
7282
+ * Utility type that extracts nested values matching a specific type
7283
+ * @example
7284
+ * type A = ExtractDeep<{ a: { b: string; c: number; }; d: string; e: number; }, number>;
7285
+ * // { a: { c: number; } e: number; }
7286
+ */
7287
+ export type ExtractDeep<T, U> = {
7288
+ [K in keyof T as T[K] extends U ? K : T[K] extends object | undefined ? ExtractDeep<NonNullable<T[K]>, U> extends never ? never : K : never]: T[K] extends object | undefined ? undefined extends T[K] ? ExtractDeep<NonNullable<T[K]>, U> | undefined : ExtractDeep<NonNullable<T[K]>, U> : T[K] extends U ? T[K] : never;
7289
+ };
7290
+ /**
7291
+ * Makes all properties in an object (including nested ones) optional
7292
+ * @example
7293
+ * type A = DeepPartial<{ a: { b: string; c: number; }; d: string; }>;
7294
+ * // { a?: { b?: string; c?: number; }; d?: string; }
7295
+ */
7296
+ export type DeepPartial<T> = T extends object ? {
7297
+ [P in keyof T]?: DeepPartial<T[P]>;
7298
+ } : T;
7299
+ }
7300
+
6180
7301
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types' {
6181
7302
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
6182
7303
  export type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
@@ -6190,6 +7311,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6190
7311
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
6191
7312
  import { z } from 'zod';
6192
7313
  import { type PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
7314
+ import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
6193
7315
  /**
6194
7316
  * State reprsenting a Marker
6195
7317
  */
@@ -6225,29 +7347,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6225
7347
  /**
6226
7348
  * The initial rank of the marker, which can be used to reset the rank of the marker to its initial value.
6227
7349
  */
6228
- initialRank: CollisionRankingTier | number;
6229
- options?: {
6230
- /**
6231
- * The rank of the marker, which determines its visibility in relation to other colliders.
6232
- */
6233
- rank?: CollisionRankingTier | number;
6234
- /**
6235
- * Whether the Marker should be clickable via the SDK's internal click event system.
6236
- *
6237
- * @example
6238
- * ```javascript
6239
- * renderer.on('click', ({ markers }) => {});
6240
- * ```
6241
- */
6242
- interactive?: boolean | 'pointer-events-auto';
6243
- /**
6244
- * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
6245
- */
6246
- zIndex?: number;
6247
- /**
6248
- * The vertical position of the marker relative to the floor.
6249
- */
6250
- verticalOffset?: number;
7350
+ initialRank: CollisionRankingTier | number;
7351
+ options: Omit<AddMarkerOptions, 'id'> & {
7352
+ lowPriorityPin: LowPriorityPinConfig;
6251
7353
  };
6252
7354
  /**
6253
7355
  * Anchor point for the marker. This will determine the position of the marker relative to the position. A list will place the marker in the first empty placement.
@@ -6258,6 +7360,29 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6258
7360
  */
6259
7361
  dynamicResize: boolean;
6260
7362
  };
7363
+ export type MarkerStateUpdate = Omit<MarkerState, 'type' | 'parent' | 'id' | 'options'> & {
7364
+ options?: Partial<Omit<AddMarkerOptions, 'id' | 'lowPriorityPin'>>;
7365
+ };
7366
+ /**
7367
+ * Configuration for the low priority pin fallback strategy
7368
+ */
7369
+ export type LowPriorityPinConfig = {
7370
+ /**
7371
+ * Whether to enable low priority pin strategy when all anchor positions have collisions.
7372
+ * @default true
7373
+ */
7374
+ enabled: boolean;
7375
+ /**
7376
+ * Size of the low priority pin in pixels.
7377
+ * @default 2
7378
+ */
7379
+ size: number;
7380
+ /**
7381
+ * Color of the low priority pin.
7382
+ * @default '#666'
7383
+ */
7384
+ color: string;
7385
+ };
6261
7386
  export const addMarkerOptionsSchema: z.ZodObject<{
6262
7387
  rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
6263
7388
  interactive: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"pointer-events-auto">]>>;
@@ -6265,6 +7390,19 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6265
7390
  anchor: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["top", "bottom", "left", "right", "center", "top-left", "top-right", "bottom-left", "bottom-right"]>, z.ZodArray<z.ZodEnum<["top", "bottom", "left", "right", "center", "top-left", "top-right", "bottom-left", "bottom-right"]>, "many">]>>;
6266
7391
  dynamicResize: z.ZodOptional<z.ZodBoolean>;
6267
7392
  zIndex: z.ZodOptional<z.ZodNumber>;
7393
+ lowPriorityPin: z.ZodOptional<z.ZodObject<{
7394
+ enabled: z.ZodOptional<z.ZodBoolean>;
7395
+ size: z.ZodOptional<z.ZodNumber>;
7396
+ color: z.ZodOptional<z.ZodString>;
7397
+ }, "strip", z.ZodTypeAny, {
7398
+ size?: number | undefined;
7399
+ color?: string | undefined;
7400
+ enabled?: boolean | undefined;
7401
+ }, {
7402
+ size?: number | undefined;
7403
+ color?: string | undefined;
7404
+ enabled?: boolean | undefined;
7405
+ }>>;
6268
7406
  }, "strip", z.ZodTypeAny, {
6269
7407
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
6270
7408
  id?: string | undefined;
@@ -6272,6 +7410,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6272
7410
  dynamicResize?: boolean | undefined;
6273
7411
  zIndex?: number | undefined;
6274
7412
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
7413
+ lowPriorityPin?: {
7414
+ size?: number | undefined;
7415
+ color?: string | undefined;
7416
+ enabled?: boolean | undefined;
7417
+ } | undefined;
6275
7418
  }, {
6276
7419
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
6277
7420
  id?: string | undefined;
@@ -6279,9 +7422,15 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6279
7422
  dynamicResize?: boolean | undefined;
6280
7423
  zIndex?: number | undefined;
6281
7424
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
7425
+ lowPriorityPin?: {
7426
+ size?: number | undefined;
7427
+ color?: string | undefined;
7428
+ enabled?: boolean | undefined;
7429
+ } | undefined;
6282
7430
  }>;
6283
7431
  export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
6284
7432
  export type MarkerAnchor = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
7433
+ type InternalMarkerAnchor = MarkerAnchor | 'low-priority-pin';
6285
7434
  /**
6286
7435
  * Options for creating a new Marker
6287
7436
  */
@@ -6324,6 +7473,16 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6324
7473
  * The vertical position of the marker relative to the floor.
6325
7474
  */
6326
7475
  verticalOffset?: number;
7476
+ /**
7477
+ * The entity to attach the marker to.
7478
+ */
7479
+ attachTo?: EntityId<GeometryState> | string | number | null;
7480
+ /**
7481
+ * Configuration for the low priority pin fallback strategy.
7482
+ * When enabled, shows a smaller pin version of the marker when all anchor positions have collisions.
7483
+ * @default { enabled: true, size: 2, color: '#666' }
7484
+ */
7485
+ lowPriorityPin?: Partial<LowPriorityPinConfig>;
6327
7486
  };
6328
7487
  export class MarkerComponent {
6329
7488
  id: string | number;
@@ -6331,9 +7490,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6331
7490
  static testId: number;
6332
7491
  rank: number;
6333
7492
  initialRank: number;
6334
- activeAnchor: MarkerAnchor;
7493
+ activeAnchor: InternalMarkerAnchor;
6335
7494
  pointerEvents: 'auto' | 'none';
6336
- options: Required<Omit<AddMarkerOptions, 'zIndex'>> & {
7495
+ options: Required<Omit<AddMarkerOptions, 'zIndex' | 'attachTo'> & {
7496
+ lowPriorityPin: Required<LowPriorityPinConfig>;
7497
+ }> & {
6337
7498
  zIndex?: number;
6338
7499
  };
6339
7500
  projection: Vector2;
@@ -6352,8 +7513,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6352
7513
  w: number;
6353
7514
  h: number;
6354
7515
  };
6355
- containerEl: Entity2DHTMLDivElement;
6356
- contentEl: HTMLDivElement | null;
7516
+ markerContainer: Entity2DHTMLDivElement;
7517
+ containerEl: HTMLElement;
7518
+ contentEl: HTMLElement | null;
6357
7519
  contentHtml: string;
6358
7520
  style: {
6359
7521
  top: string;
@@ -6361,7 +7523,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6361
7523
  };
6362
7524
  dirty: boolean;
6363
7525
  /** Flag used in 2d-projection system to determine if the parent has changed */
6364
- parentDirty: boolean;
7526
+ attachedDirty: boolean;
6365
7527
  collisionDirty: boolean;
6366
7528
  visibilityNeedsUpdate: 'show' | 'hide' | false;
6367
7529
  constructor(contentHtml: string, options?: AddMarkerOptions);
@@ -6370,7 +7532,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6370
7532
  currentStrategyIndex: number;
6371
7533
  onStrategySelected: (strategyIndex: number, force?: boolean) => void;
6372
7534
  get strategies(): {
6373
- name: MarkerAnchor;
7535
+ name: InternalMarkerAnchor;
6374
7536
  getBoundingBox: () => number[];
6375
7537
  }[];
6376
7538
  toPackedMessage(isPanning?: boolean): {
@@ -6382,8 +7544,13 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
6382
7544
  lockedToStrategyIndex: number;
6383
7545
  shouldCollideWithScreenEdges: boolean;
6384
7546
  };
7547
+ /**
7548
+ * Get the index of the low priority pin strategy
7549
+ */
7550
+ get lowPriorityPinStrategyIndex(): number;
6385
7551
  destroy(): void;
6386
7552
  }
7553
+ export {};
6387
7554
  }
6388
7555
 
6389
7556
  declare module '@mappedin/mappedin-js/geojson/src/components/path' {
@@ -6991,6 +8158,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
6991
8158
  * The vertical position of the label relative to the floor.
6992
8159
  */
6993
8160
  verticalOffset?: number;
8161
+ /**
8162
+ * The entity to attach the label to.
8163
+ */
8164
+ attachTo?: EntityId<GeometryState> | string | null;
6994
8165
  };
6995
8166
  type TStyle = {
6996
8167
  top?: number;
@@ -7133,7 +8304,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
7133
8304
  totalMarkerSize: number;
7134
8305
  dirty: boolean;
7135
8306
  /** Flag used in 2d-projection system to determine if the parent has changed */
7136
- parentDirty: boolean;
8307
+ attachedDirty: boolean;
7137
8308
  collisionDirty: boolean;
7138
8309
  lastTextAlign: any;
7139
8310
  imageHash?: number;
@@ -7178,9 +8349,11 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
7178
8349
  import type { BatchedText } from '@mappedin/mappedin-js/geojson/src/services/text3d/text3d';
7179
8350
  import type { EntityTypes } from '@mappedin/mappedin-js/geojson/src/renderer';
7180
8351
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
8352
+ import type { FocusableComponent } from '@mappedin/mappedin-js/geojson/src/components/focusable';
7181
8353
  export enum GroupContainerComponents {
7182
8354
  Stack = 0,
7183
- Interaction = 1
8355
+ Interaction = 1,
8356
+ Focusable = 2
7184
8357
  }
7185
8358
  /**
7186
8359
  * State representing a Group Container, which is a container for other Group Containers, Geometry Groups, Labels, Markers and Paths.
@@ -7221,7 +8394,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
7221
8394
  /** The effective opacity of the entity after all parent containers have been considered. */
7222
8395
  computedOpacity: number;
7223
8396
  };
7224
- components: [StackComponent?, InteractionComponent?];
8397
+ components: [StackComponent?, InteractionComponent?, FocusableComponent?];
7225
8398
  constructor(id: string);
7226
8399
  addOccluderFeature(feature: Feature<Polygon | MultiPolygon, any>, occluderId: number): void;
7227
8400
  addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
@@ -7240,6 +8413,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
7240
8413
  import { type GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
7241
8414
  import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
7242
8415
  import { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
8416
+ import type { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles';
7243
8417
  export enum GeometryGroupComponents {
7244
8418
  GeometryGroupStyle = 0
7245
8419
  }
@@ -7311,6 +8485,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
7311
8485
  * height of the geometry group
7312
8486
  */
7313
8487
  height?: number;
8488
+ /**
8489
+ * Material side of the geometry group
8490
+ */
8491
+ side?: MaterialSide;
7314
8492
  };
7315
8493
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
7316
8494
  export class GeometryGroupObject3D extends Object3D {
@@ -7323,7 +8501,6 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
7323
8501
  modelURL?: string;
7324
8502
  opacity: number;
7325
8503
  dirty: boolean;
7326
- outlineDirty: boolean;
7327
8504
  shadingDirty: boolean;
7328
8505
  };
7329
8506
  setVisible(visible: boolean): void;
@@ -7418,6 +8595,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
7418
8595
  showImage?: boolean;
7419
8596
  flipImageToFaceCamera?: boolean;
7420
8597
  side?: MaterialSide;
8598
+ renderOrder?: number;
7421
8599
  };
7422
8600
  export type Shading = {
7423
8601
  start?: number;
@@ -7437,6 +8615,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
7437
8615
  shading?: Shading;
7438
8616
  outline?: boolean;
7439
8617
  side?: MaterialSide;
8618
+ renderOrder?: number;
7440
8619
  };
7441
8620
  export type Layer = {
7442
8621
  id: string;
@@ -7730,7 +8909,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
7730
8909
  }
7731
8910
 
7732
8911
  declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
7733
- import type { Texture, BufferGeometry, LineSegments, Mesh } from 'three';
8912
+ import type { Texture, BufferGeometry, Mesh } from 'three';
7734
8913
  import { BatchedMesh, Color, Vector3 } from 'three';
7735
8914
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
7736
8915
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
@@ -7852,7 +9031,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
7852
9031
  #private;
7853
9032
  mesh?: EntityBatchedMesh;
7854
9033
  focusMesh?: Mesh;
7855
- outline?: LineSegments;
7856
9034
  imageMesh?: Mesh;
7857
9035
  /**
7858
9036
  * holds a pointer to space label text if the polygon has label active.
@@ -8274,7 +9452,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
8274
9452
  import { Renderer } from '@mappedin/mappedin-js/geojson/src/services/renderer';
8275
9453
  import { CollisionSystem } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
8276
9454
  import { InteractionSystem } from '@mappedin/mappedin-js/geojson/src/systems/interactions';
8277
- import type { AddMarkerOptions, MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
9455
+ import type { AddMarkerOptions, MarkerState, MarkerStateUpdate } from '@mappedin/mappedin-js/geojson/src/components/marker';
8278
9456
  import type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
8279
9457
  import { ExporterSystem } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
8280
9458
  import type { AddLabelOptions, LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
@@ -8398,6 +9576,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
8398
9576
  visible?: boolean;
8399
9577
  altitude?: number;
8400
9578
  interactive?: boolean;
9579
+ focusable?: boolean;
8401
9580
  }, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<GroupContainerState>;
8402
9581
  addStackContainer(id: string, style?: {
8403
9582
  visible?: true;
@@ -8510,7 +9689,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
8510
9689
  */
8511
9690
  setState(object: Partial<Omit<MapViewState, 'type'>>): void;
8512
9691
  setState<T extends EntityId<LabelState>>(object: T | T['id'], state: Partial<LabelState>): void;
8513
- setState<T extends EntityId<MarkerState>>(object: T | T['id'], state: Partial<MarkerState>): void;
9692
+ setState<T extends EntityId<MarkerState>>(object: T | T['id'], state: Partial<MarkerStateUpdate>): void;
8514
9693
  setState<T extends EntityId<GeometryGroupState>>(object: T | T['id'], state: Partial<GeometryGroupState>): void;
8515
9694
  setState<T extends EntityId<GroupContainerState>>(object: T | T['id'], state: Partial<GroupContainerState>): void;
8516
9695
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
@@ -9325,8 +10504,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
9325
10504
  export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
9326
10505
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9327
10506
  export function updateAltitude(entity: EntityTypes, update?: number): boolean;
9328
- export function updateOutline(entity: All3DTypes, update?: boolean): boolean;
9329
- export function updateFocusable(entity: Geometry3D, update?: boolean): boolean;
10507
+ export function updateOutline(entity: All3DTypes, state: RendererState, update?: boolean): boolean;
10508
+ export function updateFocusable(entity: Geometry3D | GroupContainerObject3D, update?: boolean): boolean;
9330
10509
  export function updateIndividualGeometryRenderOrder(entity: Geometry3D, update?: number): boolean;
9331
10510
  export function handlePathUpdate(geometry: Geometry3DTypes, state: RendererState, update: PathUpdateState): void;
9332
10511
  export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
@@ -9455,19 +10634,85 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
9455
10634
 
9456
10635
  declare module '@mappedin/mappedin-js/geojson/src/utils/debug' {
9457
10636
  import type Core from '@mappedin/mappedin-js/geojson/src/renderer';
10637
+ /**
10638
+ * Default debug state configuration with all debug features disabled by default.
10639
+ */
9458
10640
  const DEFAULT_DEBUG_STATE: {
9459
- showPolygonLabelTextAreaMesh: boolean;
9460
- showEnvMap: boolean;
10641
+ /** Shows the text area mesh used for polygon label rendering */
10642
+ showPolygonLabelTextAreaMesh: boolean;
10643
+ /** Enables the basic environment map for lighting and reflections */
10644
+ showEnvMap: boolean;
10645
+ /** Shows collision detection boxes for debugging spatial interactions */
10646
+ showCollisionBoxes: boolean;
9461
10647
  };
10648
+ /**
10649
+ * Type definition for the debug state configuration.
10650
+ * Represents all available debug options that can be toggled.
10651
+ */
9462
10652
  export type DebugState = typeof DEFAULT_DEBUG_STATE;
10653
+ /**
10654
+ * Debug utility class for toggling various debug visualization features.
10655
+ *
10656
+ * This class provides a centralized way to control debug features like:
10657
+ * - Text area mesh visualization for polygon labels
10658
+ * - Environment map rendering
10659
+ * - Collision box visualization
10660
+ *
10661
+ * @example
10662
+ * ```typescript
10663
+ * const debug = new Debug(core);
10664
+ *
10665
+ * // Enable collision boxes and environment map
10666
+ * debug.update({
10667
+ * showCollisionBoxes: true,
10668
+ * showEnvMap: true
10669
+ * });
10670
+ *
10671
+ * // Disable all debug features
10672
+ * debug.update({
10673
+ * showCollisionBoxes: false,
10674
+ * showEnvMap: false,
10675
+ * showPolygonLabelTextAreaMesh: false
10676
+ * });
10677
+ * ```
10678
+ */
9463
10679
  export class Debug {
9464
- state: {
9465
- showPolygonLabelTextAreaMesh: boolean;
9466
- showEnvMap: boolean;
9467
- };
9468
- core: Core;
9469
- constructor(core: Core);
9470
- update(updateState: Partial<DebugState>): void;
10680
+ /** Current debug state configuration */
10681
+ state: {
10682
+ /** Shows the text area mesh used for polygon label rendering */
10683
+ showPolygonLabelTextAreaMesh: boolean;
10684
+ /** Enables the basic environment map for lighting and reflections */
10685
+ showEnvMap: boolean;
10686
+ /** Shows collision detection boxes for debugging spatial interactions */
10687
+ showCollisionBoxes: boolean;
10688
+ };
10689
+ /** Reference to the core renderer instance */
10690
+ core: Core;
10691
+ /**
10692
+ * Creates a new Debug instance.
10693
+ *
10694
+ * @param core - The core renderer instance to control debug features for
10695
+ */
10696
+ constructor(core: Core);
10697
+ /**
10698
+ * Updates the debug state with new configuration options.
10699
+ * Only changed values will trigger updates to the corresponding systems.
10700
+ *
10701
+ * @param updateState - Partial debug state with the options to update
10702
+ *
10703
+ * @example
10704
+ * ```typescript
10705
+ * // Enable only collision boxes
10706
+ * debug.update({ showCollisionBoxes: true });
10707
+ *
10708
+ * // Enable multiple features at once
10709
+ * debug.update({
10710
+ * showEnvMap: true,
10711
+ * showPolygonLabelTextAreaMesh: true
10712
+ * });
10713
+ * ```
10714
+ */
10715
+ update(updateState: Partial<DebugState>): void;
9471
10716
  }
9472
10717
  export {};
9473
10718
  }
@@ -9587,9 +10832,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/text3d/system' {
9587
10832
  showTextAreaMesh(): void;
9588
10833
  hideTextAreaMesh(): void;
9589
10834
  }
10835
+ export function configureWorker(useWorker: boolean): void;
9590
10836
  /**
9591
10837
  * Preload fonts and optionally pre-generate the SDF textures for particular glyphs up front.
9592
10838
  * This is to avoid ondemand font generation can take long.
10839
+ *
10840
+ * If working in CSP-restricted environment, call `disableText3DWorker` before to avoid errors
10841
+ *
9593
10842
  * @param fontUrl - url of the font file served.
9594
10843
  * @returns A promise that resolves when the font is loaded
9595
10844
  *
@@ -9599,150 +10848,166 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/text3d/system' {
9599
10848
  export const DEFAULT_VERTICAL_OFFSET = 0.5;
9600
10849
  }
9601
10850
 
9602
- declare module '@mappedin/mappedin-js/geojson/src/systems/exporter' {
9603
- export { ExporterSystem, type GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter';
9604
- }
9605
-
9606
- declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system' {
9607
- import type { Map } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
9608
- import '../../styles/html-controls.scss';
9609
- /**
9610
- * All possible control anchor positions.
9611
- */
9612
- export const ATTRIBUTION_POSITIONS: readonly ["top-left", "top-right", "bottom-left", "bottom-right"];
9613
- export type AttributionPosition = (typeof ATTRIBUTION_POSITIONS)[number];
9614
- export type AttributionControlOptions = {
9615
- custom?: string[];
9616
- position?: AttributionPosition;
9617
- feedback?: boolean;
9618
- };
9619
- export class HTMLControlsSystem {
9620
- controlContainerEl: HTMLDivElement;
9621
- controlPositions: Record<AttributionPosition, HTMLDivElement>;
9622
- compact: boolean | undefined;
9623
- attribContainerEl?: HTMLDetailsElement;
9624
- attribInnerEl?: HTMLDivElement;
9625
- attribButtonEl?: HTMLElement;
9626
- feedbackLinkEl?: HTMLAnchorElement;
9627
- attribHTML: string;
9628
- customAttributions: string[];
9629
- constructor(container: HTMLElement);
9630
- addAttributionControl(options?: AttributionControlOptions): void;
9631
- toggleAttribution: (e: MouseEvent) => void;
9632
- destroyAttributionControl(): void;
9633
- resize(canvasWidth: number): void;
9634
- /**
9635
- * This should fire when Maplibre data changes.
9636
- */
9637
- updateData(map: Map): void;
9638
- destroy(): void;
9639
- }
9640
- }
9641
-
9642
- declare module '@mappedin/mappedin-js/geojson/src/components/styles' {
9643
- export { StyleComponent, DEFAULT_COLOR, type MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
9644
- export { Text3DStyleComponent, type Text3DStyle, DEFAULT_TEXT_STYLE } from '@mappedin/mappedin-js/geojson/src/components/styles/text-style';
9645
- export { ModelStyleComponnet, type ModelStyle } from '@mappedin/mappedin-js/geojson/src/components/styles/model-style';
9646
- export { DEFAULT_ROTATION, DEFAULT_SCALE } from '@mappedin/mappedin-js/geojson/src/components/styles/constants';
9647
- }
9648
-
9649
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
9650
- import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
9651
- import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
9652
- import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
9653
- import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
9654
- import type { FloorStack, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9655
- import { Facade, Coordinate, MapObject, Space, Floor, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9656
- import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
9657
- import { Label, Marker, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
9658
- import { Text3D as Text3DView, Model, Path, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
9659
- import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
9660
- import type { TGetState, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
9661
- import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
9662
- import { Exporter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter';
9663
- import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
9664
- import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
9665
- import { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
9666
- import { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
9667
- import { Models } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models';
9668
- import { Paths } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths';
9669
- import { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
9670
- import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
9671
- import { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
9672
- import { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
9673
- import Outdoor from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
9674
- import { type BBox } from 'geojson';
9675
- import { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
9676
- import { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
9677
- export class GeoJsonApi {
9678
- core: RendererCore;
9679
- mapObjects: GeojsonApiMapObject[];
9680
- id: string;
9681
- mapDataExternal: {
9682
- [key in string]: MapData;
9683
- };
9684
- mapData?: MapData;
9685
- currentMap: GeojsonApiMapObject;
9686
- hiddenOutdoorGeometries: [
9687
- BBox,
9688
- polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
9689
- layers: string[]
9690
- ][];
9691
- mapView: MapView;
9692
- Camera: Camera;
9693
- Labels: Labels;
9694
- Text3D: Text3D;
9695
- Markers: Markers;
9696
- Models: Models;
9697
- Paths: Paths;
9698
- Exporter: Exporter;
9699
- Navigation: Navigation;
9700
- Outdoor: Outdoor;
9701
- BlueDot: BlueDot;
9702
- Shapes: Shapes;
9703
- Style: Style;
9704
- Images: Images;
9705
- get DynamicFocus(): import("..").DynamicFocus;
9706
- get StackedMaps(): import("..").StackedMaps;
9707
- constructor(rendererCore: RendererCore, mapView: MapView);
9708
- updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Model | Door | Facade | Floor | WALLS | DOORS | Path | PathSegment | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
9709
- update: () => void;
9710
- getMapDataInternal(): MapDataInternal | undefined;
9711
- getMapData(): MapData | undefined;
9712
- addMap(mapData: MapData, options?: TShow3DMapOptions): Promise<MapData>;
9713
- setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
9714
- setFloorStack(floorStack: FloorStack | string): void;
9715
- updateWatermark(options: WatermarkUpdateOptions): void;
9716
- get currentFloorStack(): FloorStack;
9717
- get currentFloor(): Floor;
9718
- getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | Model | Path | PathSegment | Floor | Facade | string>(target: T): TGetState<T>;
9719
- setHoverColor(c: string): void;
9720
- getHoverColor(): string | undefined;
9721
- /**
9722
- * Create a coordinate from a screen coordinate
9723
- * @param x - The x coordinate of the screen
9724
- * @param y - The y coordinate of the screen
9725
- * @param floor - The floor to use for the coordinate
9726
- * @returns The coordinate
9727
- */
9728
- createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
9729
- getScreenCoordinateFromCoordinate(coordinate: Coordinate): {
10851
+ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
10852
+ import { QuadTree } from '@packages/internal/quad-tree';
10853
+ import '../../styles/collisions.scss';
10854
+ import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
10855
+ import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
10856
+ import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
10857
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10858
+ import type { TSerializedCollider, TSerializedColliderResponse } from '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor';
10859
+ import type { WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
10860
+ export type TMessageEvent = MessageEvent<{
10861
+ msgId: string;
10862
+ colliders: TSerializedColliderResponse[];
10863
+ debug: {
9730
10864
  x: number;
9731
10865
  y: number;
9732
- };
9733
- isInView(target: Space | MapObject | Label | Marker | string): boolean;
9734
- auto(): {
9735
- labels: Label[];
9736
- };
10866
+ w: number;
10867
+ h: number;
10868
+ }[];
10869
+ }>;
10870
+ export type TMessage = {
10871
+ msgId: string;
10872
+ totalWidth: number;
10873
+ totalHeight: number;
10874
+ watermarkWidth: number;
10875
+ watermarkHeight: number;
10876
+ watermarkPosition: WatermarkPosition;
10877
+ colliders: TSerializedCollider[];
10878
+ devicePixelRatio: number;
10879
+ };
10880
+ type TCollisionSystemEvent = {
10881
+ 'visibility-changed': undefined;
10882
+ };
10883
+ export type PackedBBox = [x: number, y: number, w: number, h: number, index: number];
10884
+ export type PackedBBoxes = PackedBBox[];
10885
+ export type PackedCollider = [
10886
+ bboxes: PackedBBoxes,
10887
+ enabled: 0 | 1,
10888
+ alwaysVisible: 0 | 1,
10889
+ x: number,
10890
+ y: number,
10891
+ shouldCollideWithScreenEdges?: 0 | 1,
10892
+ onlyExposeStrategyIndex?: number
10893
+ ];
10894
+ export type PackedMessage = [
10895
+ colliders: PackedCollider[],
10896
+ devicePixelRatio: number,
10897
+ totalHeight: number,
10898
+ totalWidth: number,
10899
+ watermarkWidth: number,
10900
+ watermarkHeight: number,
10901
+ watermarkPosition: WatermarkPosition
10902
+ ];
10903
+ export class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
10904
+ collidersDirty: boolean;
10905
+ packedMessage: PackedMessage;
10906
+ visibleCollidersQTree: QuadTree<{
10907
+ entityId: string | number;
10908
+ }>;
10909
+ interactiveCollidersQTree: QuadTree<{
10910
+ entityId: string | number;
10911
+ }>;
10912
+ coreState: RendererState;
10913
+ constructor(debugCanvas: HTMLCanvasElement, coreState: RendererState, worker?: Worker);
10914
+ postMessage: () => void;
10915
+ showCollisionBoxes: () => void;
10916
+ hideCollisionBoxes: () => void;
10917
+ currentMsgId: string;
10918
+ working: boolean;
10919
+ componentArray: (MarkerComponent | LabelComponent)[];
10920
+ update: (watermarkWidth: number, watermarkHeight: number, watermarkPosition?: WatermarkPosition, isPanning?: boolean) => void;
10921
+ resize(watermarkWidth: number, watermarkHeight: number, watermarkPosition: WatermarkPosition): void;
10922
+ /**
10923
+ * Resolve collisions
10924
+ */
10925
+ resolve: (e: MessageEvent<{
10926
+ msgId: string;
10927
+ colliders: TSerializedColliderResponse[];
10928
+ }>) => void;
10929
+ drawDebug: () => void;
10930
+ destroy: () => void;
10931
+ }
10932
+ /**
10933
+ * Sets the URL for the collision system worker script.
10934
+ *
10935
+ * This function allows specifying a custom URL for the collision system's web worker,
10936
+ * which is particularly useful in environments with strict Content Security Policy (CSP)
10937
+ * that don't allow blob: URLs or inline scripts.
10938
+ *
10939
+ * When provided, the collision system will load its worker from the specified URL
10940
+ * instead of creating an inline worker from a blob. This enables compatibility with
10941
+ * environments that have restrictive CSP settings.
10942
+ *
10943
+ * @param url - The absolute URL pointing to the collision worker script.
10944
+ * This should be a URL where the compiled version of the worker.ts file is hosted.
10945
+ *
10946
+ * @example
10947
+ * ```typescript
10948
+ * // Set a custom URL for the collision worker
10949
+ * import { setWorkerUrl } from '@mappedin/core-sdk';
10950
+ *
10951
+ * // Must be called before initializing any maps
10952
+ * setWorkerUrl('https://cdn.example.com/workers/collision-worker.js');
10953
+ * ```
10954
+ *
10955
+ * @remarks
10956
+ * - This function must be called before any map instances are created
10957
+ * - The worker file must be built and hosted separately as part of your deployment process
10958
+ * - Ideal for applications that need to comply with strict CSP requirements
10959
+ */
10960
+ export function setWorkerUrl(url: string): void;
10961
+ export {};
10962
+ }
10963
+
10964
+ declare module '@mappedin/mappedin-js/geojson/src/systems/exporter' {
10965
+ export { ExporterSystem, type GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter';
10966
+ }
10967
+
10968
+ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system' {
10969
+ import type { Map } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
10970
+ import '../../styles/html-controls.scss';
10971
+ /**
10972
+ * All possible control anchor positions.
10973
+ */
10974
+ export const ATTRIBUTION_POSITIONS: readonly ["top-left", "top-right", "bottom-left", "bottom-right"];
10975
+ export type AttributionPosition = (typeof ATTRIBUTION_POSITIONS)[number];
10976
+ export type AttributionControlOptions = {
10977
+ custom?: string[];
10978
+ position?: AttributionPosition;
10979
+ feedback?: boolean;
10980
+ };
10981
+ export class HTMLControlsSystem {
10982
+ controlContainerEl: HTMLDivElement;
10983
+ controlPositions: Record<AttributionPosition, HTMLDivElement>;
10984
+ compact: boolean | undefined;
10985
+ attribContainerEl?: HTMLDetailsElement;
10986
+ attribInnerEl?: HTMLDivElement;
10987
+ attribButtonEl?: HTMLElement;
10988
+ feedbackLinkEl?: HTMLAnchorElement;
10989
+ attribHTML: string;
10990
+ customAttributions: string[];
10991
+ constructor(container: HTMLElement);
10992
+ addAttributionControl(options?: AttributionControlOptions): void;
10993
+ toggleAttribution: (e: MouseEvent) => void;
10994
+ destroyAttributionControl(): void;
10995
+ resize(canvasWidth: number): void;
9737
10996
  /**
9738
- * @internal
10997
+ * This should fire when Maplibre data changes.
9739
10998
  */
9740
- get __core(): RendererCore;
9741
- clear(): void;
10999
+ updateData(map: Map): void;
9742
11000
  destroy(): void;
9743
11001
  }
9744
11002
  }
9745
11003
 
11004
+ declare module '@mappedin/mappedin-js/geojson/src/components/styles' {
11005
+ export { StyleComponent, DEFAULT_COLOR, type MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
11006
+ export { Text3DStyleComponent, type Text3DStyle, DEFAULT_TEXT_STYLE } from '@mappedin/mappedin-js/geojson/src/components/styles/text-style';
11007
+ export { ModelStyleComponnet, type ModelStyle } from '@mappedin/mappedin-js/geojson/src/components/styles/model-style';
11008
+ export { DEFAULT_ROTATION, DEFAULT_SCALE } from '@mappedin/mappedin-js/geojson/src/components/styles/constants';
11009
+ }
11010
+
9746
11011
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
9747
11012
  import type { ParsedMVF } from '@mappedin/mvf';
9748
11013
  import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
@@ -9754,12 +11019,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
9754
11019
  import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
9755
11020
  import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
9756
11021
  import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
9757
- import type { Path, Shape, Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
11022
+ import type { Path, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
9758
11023
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9759
11024
  import { Space, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9760
11025
  import { type GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
9761
11026
  import { FloorStackObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object';
9762
- import { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
9763
11027
  import type { Text3DState } from '@mappedin/core-sdk/src/components/text3d';
9764
11028
  export class GeojsonApiMapObject extends PubSub<{
9765
11029
  'floor-change': {
@@ -9795,7 +11059,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
9795
11059
  options: TShow3DMapOptions;
9796
11060
  styleMap: AggregatedStyleMap;
9797
11061
  StackedMaps: StackedMaps;
9798
- DynamicFocus: DynamicFocus;
9799
11062
  get currentFloorStack(): FloorStackObject;
9800
11063
  setFloorStack(floorStackId: string, reason?: TFloorChangeReason): void;
9801
11064
  get currentFloor(): FloorObject;
@@ -9818,7 +11081,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
9818
11081
  removeAll: () => void;
9819
11082
  };
9820
11083
  Markers: {
9821
- add: (coordinate: Coordinate, html: string, opts: TAddMarkerOptions) => EntityId<MarkerState> | undefined;
11084
+ add: (coordinate: Coordinate, html: string, opts: TAddMarkerOptions & {
11085
+ attachTo?: string;
11086
+ }) => EntityId<MarkerState>;
9822
11087
  remove: (id: string) => void;
9823
11088
  getContentEl: (id: string) => HTMLElement | undefined;
9824
11089
  removeAll: () => void;
@@ -9845,14 +11110,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
9845
11110
  labelOptions?: TAddLabelOptions;
9846
11111
  }) => void;
9847
11112
  add: (coordinate: Coordinate, text: string, opts?: AddLabelOptions & {
9848
- floorId?: string;
9849
- parentId?: string;
11113
+ attachTo?: string;
9850
11114
  verticalOffset?: number;
9851
11115
  }) => {
9852
11116
  id: string | number;
9853
11117
  };
9854
- remove: ({ label, entityId }: {
9855
- label: Label;
11118
+ remove: ({ entityId }: {
9856
11119
  entityId: string;
9857
11120
  }) => void;
9858
11121
  removeAll: () => void;
@@ -10309,7 +11572,44 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera' {
10309
11572
  * @param options Optional settings for the camera animation.
10310
11573
  */
10311
11574
  animateElevation(elevation: number, options?: TCameraAnimationOptions): Promise<void>;
11575
+ /**
11576
+ * @internal
11577
+ * @experimental
11578
+ * Force an update of the facades in view.
11579
+ */
11580
+ updateFacadesInView(): void;
11581
+ }
11582
+ }
11583
+
11584
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter' {
11585
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
11586
+ import type { GLTFExportOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
11587
+ /**
11588
+ * API to export the scene.
11589
+ *
11590
+ * @hidden
11591
+ */
11592
+ export class Exporter {
11593
+ #private;
11594
+ /**
11595
+ * @internal
11596
+ */
11597
+ get currentMap(): GeojsonApiMapObject | undefined;
11598
+ /**
11599
+ * @internal
11600
+ */
11601
+ constructor({ currentMapGetter }: {
11602
+ currentMapGetter: CurrentMapGetter;
11603
+ });
11604
+ /**
11605
+ * Exports the current scene as a GLTF file.
11606
+ *
11607
+ * @hidden
11608
+ */
11609
+ getCurrentSceneGLTF(userOptions: GLTFExportOptions): Promise<Blob>;
10312
11610
  }
11611
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
11612
+ export {};
10313
11613
  }
10314
11614
 
10315
11615
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels' {
@@ -10474,6 +11774,80 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
10474
11774
  export {};
10475
11775
  }
10476
11776
 
11777
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
11778
+ import type { IAnchorable, TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
11779
+ import { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
11780
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
11781
+ /**
11782
+ * Images can enhance the fidelity of an indoor map. They can be used to add custom branding, highlight important features, or provide additional information to users.
11783
+ * Images can be placed on any {@link Door}, {@link Space}, or {@link Coordinate} on the map and given a verticalOffset to control the height at which the image is displayed.
11784
+ *
11785
+ * This class is accessed using {@link MapView.Images}.
11786
+ *
11787
+ * JPEG and PNG images are supported. It's important to consider the size of all unique image files displayed on a map at one time.
11788
+ * Using many unique images may cause instability on mobile devices with limited GPU memory. The Mappedin SDK will cache and reuse images that have the same URL, resulting in reduced memory usage.
11789
+ *
11790
+ * The following calculations illustrates how much memory is used for a given image:
11791
+ *
11792
+ * Formula: `width * height * 4 bytes/pixel = memory used`
11793
+ *
11794
+ * 512 x 512 Pixel Image: `512px * 512px * 4 bytes/pixel = 1MB`
11795
+ *
11796
+ * 4096 x 4096 Pixel Image: `4096px * 4096px * 4 bytes/pixel = 64MB`
11797
+ *
11798
+ * Refer to the [Images Guide](https://developer.mappedin.com/web-sdk/images-textures) for more information and interactive examples.
11799
+ */
11800
+ export class Images {
11801
+ #private;
11802
+ /**
11803
+ * @internal
11804
+ */
11805
+ get currentMap(): GeojsonApiMapObject | undefined;
11806
+ /**
11807
+ * @internal
11808
+ */
11809
+ constructor({ currentMapGetter }: {
11810
+ currentMapGetter: CurrentMapGetter;
11811
+ });
11812
+ /**
11813
+ * @internal
11814
+ */
11815
+ getById(id: string): {
11816
+ image: Image;
11817
+ entityId: string;
11818
+ } | undefined;
11819
+ /**
11820
+ * Adds an image to the map.
11821
+ *
11822
+ * @param target The target object ({@link IAnchorable}) for the image.
11823
+ * @param url The URL of the image.
11824
+ * @param options Optional additional options for the {@link Image}.
11825
+ * @returns {Image | undefined} The created {@link Image}, or undefined if creation failed.
11826
+ * @example
11827
+ * // Add an interactive {@link Image} to the map with custom HTML content.
11828
+ * mapView.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
11829
+ */
11830
+ add(target: IAnchorable, url: string, options: TAddImageOptions): Image;
11831
+ /**
11832
+ * Removes a image from the map.
11833
+ *
11834
+ * @param image {Image} The {@link Image} which should be removed.
11835
+ * @example
11836
+ * mapView.Images.remove(image);
11837
+ */
11838
+ remove(image: Image): void;
11839
+ /**
11840
+ * Remove all the images from the map.
11841
+ *
11842
+ * @example
11843
+ * mapView.Images.removeAll();
11844
+ */
11845
+ removeAll(): Image[];
11846
+ }
11847
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
11848
+ export {};
11849
+ }
11850
+
10477
11851
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models' {
10478
11852
  import type { TAddModelOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
10479
11853
  import { Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
@@ -10571,48 +11945,137 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths' {
10571
11945
  export class Paths {
10572
11946
  #private;
10573
11947
  /**
10574
- * @internal
11948
+ * @internal
11949
+ */
11950
+ get currentMap(): GeojsonApiMapObject | undefined;
11951
+ /**
11952
+ * @internal
11953
+ */
11954
+ constructor({ currentMapGetter }: {
11955
+ currentMapGetter: CurrentMapGetter;
11956
+ });
11957
+ /**
11958
+ * @internal
11959
+ */
11960
+ getById(id: string): {
11961
+ path: Path;
11962
+ entityIds: string[];
11963
+ } | undefined;
11964
+ /**
11965
+ * Adds a path ({@link Path}) to the map.
11966
+ * @param coordinate Array of coordinates ({@link Coordinate}) to form the path.
11967
+ * @param options Optional additional option
11968
+ * @example
11969
+ * // Add a red path to the map
11970
+ * mapView.Paths.add(coordinate, { color: '#ff0000' });
11971
+ */
11972
+ add(coordinate: Coordinate[], options?: TAddPathOptions): Path;
11973
+ /**
11974
+ * Removes a specific path ({@link Path}) from the map.
11975
+ * @param path The path to be removed.
11976
+ * @example
11977
+ * mapView.Paths.remove(path);
11978
+ */
11979
+ remove(path: Path): void;
11980
+ /**
11981
+ * Removes all paths ({@link Path}) from the map.
11982
+ *
11983
+ * @example
11984
+ * mapView.Paths.removeAll();
11985
+ */
11986
+ removeAll(): Path[];
11987
+ }
11988
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
11989
+ export {};
11990
+ }
11991
+
11992
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style' {
11993
+ import type { StyleCollection } from '@mappedin/mvf';
11994
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
11995
+ export class Style {
11996
+ #private;
11997
+ /**
11998
+ * @internal
11999
+ */
12000
+ get currentMap(): GeojsonApiMapObject | undefined;
12001
+ /**
12002
+ * @internal
12003
+ */
12004
+ constructor({ currentMapGetter }: {
12005
+ currentMapGetter: CurrentMapGetter;
12006
+ });
12007
+ setFromStyleCollection(styleCollection: StyleCollection): void;
12008
+ }
12009
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
12010
+ export {};
12011
+ }
12012
+
12013
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
12014
+ import { type RendererCore } from '@mappedin/core-sdk';
12015
+ import type { BBox } from 'geojson';
12016
+ export type HiddenOutdoorGeometry = [
12017
+ BBox,
12018
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
12019
+ layers: string[]
12020
+ ];
12021
+ /**
12022
+ * The outdoor map shown around the Mappedin indoor map can be manipulated to show or hide additional information. It can be used to add GeoJSON based geometry, images, deck.gl layers and more.
12023
+ *
12024
+ * The outdoor map is accessed using {@link MapView.Outdoor.map}, which returns a maplibregl.Map object.
12025
+ * [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) is a TypeScript library that uses WebGL to render interactive maps from vector tiles in a browser. The Mappedin SDK makes use of it to display the outdoor map.
12026
+ *
12027
+ * By providing access to the MapLibre map used to draw the outdoor map, the Mappedin SDK enables developers to draw on and manipulate the outdoor map.
12028
+ * Developers can use most capabilities of MapLibre GL JS with key exceptions being Interactivity and Camera, which are not available.
12029
+ *
12030
+ * User touch and click events are handled by Mappedin JS and are not propagated to the outdoor map layer. Camera movement is also handled by Mappedin JS and cannot be manipulated using MapLibre controls.
12031
+ *
12032
+ * Refer to the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map) for more information and interactive examples.
12033
+ */
12034
+ export default class Outdoor {
12035
+ #private;
12036
+ /**
12037
+ * @internal
12038
+ */
12039
+ constructor(core: RendererCore, hiddenOutdoorGeometry?: HiddenOutdoorGeometry[]);
12040
+ /**
12041
+ * Set the style of the outdoor map. Use one of [Mappedin's predefined styles](https://developer.mappedin.com/web-sdk/outdoor-map#styles) or link to a custom style.
12042
+ * @param style {any}
10575
12043
  */
10576
- get currentMap(): GeojsonApiMapObject | undefined;
12044
+ setStyle(style: any): void;
10577
12045
  /**
10578
- * @internal
12046
+ * Returns a Maplibre map for advanced usage.
12047
+ *
12048
+ * @returns {object} Maplibre map instance
12049
+ *
12050
+ * Limitations:
12051
+ * - Maplibre interaction events are not supported, use Mappedin JS interaction events.
12052
+ * - Maplibre markers and labels may overlap as they are not integrated with the Mappedin JS collision engine.
10579
12053
  */
10580
- constructor({ currentMapGetter }: {
10581
- currentMapGetter: CurrentMapGetter;
10582
- });
12054
+ get map(): import("@packages/internal/outdoor-context-v4").Map | undefined;
10583
12055
  /**
10584
- * @internal
12056
+ * Whether the outdoorView is enabled.
10585
12057
  */
10586
- getById(id: string): {
10587
- path: Path;
10588
- entityIds: string[];
10589
- } | undefined;
12058
+ get enabled(): boolean;
10590
12059
  /**
10591
- * Adds a path ({@link Path}) to the map.
10592
- * @param coordinate Array of coordinates ({@link Coordinate}) to form the path.
10593
- * @param options Optional additional option
10594
- * @example
10595
- * // Add a red path to the map
10596
- * mapView.Paths.add(coordinate, { color: '#ff0000' });
12060
+ * Whether the outdoorView is visible.
10597
12061
  */
10598
- add(coordinate: Coordinate[], options?: TAddPathOptions): Path;
12062
+ get visible(): boolean;
10599
12063
  /**
10600
- * Removes a specific path ({@link Path}) from the map.
10601
- * @param path The path to be removed.
10602
- * @example
10603
- * mapView.Paths.remove(path);
12064
+ * Show the outdoor map.
10604
12065
  */
10605
- remove(path: Path): void;
12066
+ show(): void;
10606
12067
  /**
10607
- * Removes all paths ({@link Path}) from the map.
10608
- *
10609
- * @example
10610
- * mapView.Paths.removeAll();
12068
+ * Hide the outdoor map.
12069
+ * @param excludedStyleLayerIds {string[]}
10611
12070
  */
10612
- removeAll(): Path[];
12071
+ hide(excludedStyleLayerIds?: string[]): void;
12072
+ /**
12073
+ * Set outdoor view opacity.
12074
+ * @param targetOpacity {number | 'initial'}
12075
+ * @param excludedStyleLayerIds {string[]}
12076
+ */
12077
+ setOpacity(targetOpacity: number | 'initial', excludedStyleLayerIds?: string[]): void;
10613
12078
  }
10614
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
10615
- export {};
10616
12079
  }
10617
12080
 
10618
12081
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
@@ -10710,6 +12173,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
10710
12173
  */
10711
12174
  animateArrowsOnPath?: boolean;
10712
12175
  };
12176
+ /**
12177
+ * Controls whether the path drawing is animated across floors.
12178
+ * @default true
12179
+ */
12180
+ animatePathDrawing?: boolean;
10713
12181
  /**
10714
12182
  * Options for the path.
10715
12183
  */
@@ -10860,214 +12328,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
10860
12328
  * @param directions The directions to be drawn.
10861
12329
  * @param options Optional additional options for the navigation.
10862
12330
  */
10863
- draw(directions: Directions | Directions[], options?: TNavigationOptions): Promise<unknown>;
10864
- /**
10865
- * Clears any drawn navigation paths or directions from the map.
10866
- */
10867
- clear(): void;
10868
- }
10869
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
10870
- export {};
10871
- }
10872
-
10873
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/exporter' {
10874
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
10875
- import type { GLTFExportOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
10876
- /**
10877
- * API to export the scene.
10878
- *
10879
- * @hidden
10880
- */
10881
- export class Exporter {
10882
- #private;
10883
- /**
10884
- * @internal
10885
- */
10886
- get currentMap(): GeojsonApiMapObject | undefined;
10887
- /**
10888
- * @internal
10889
- */
10890
- constructor({ currentMapGetter }: {
10891
- currentMapGetter: CurrentMapGetter;
10892
- });
10893
- /**
10894
- * Exports the current scene as a GLTF file.
10895
- *
10896
- * @hidden
10897
- */
10898
- getCurrentSceneGLTF(userOptions: GLTFExportOptions): Promise<Blob>;
10899
- }
10900
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
10901
- export {};
10902
- }
10903
-
10904
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style' {
10905
- import type { StyleCollection } from '@mappedin/mvf';
10906
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
10907
- export class Style {
10908
- #private;
10909
- /**
10910
- * @internal
10911
- */
10912
- get currentMap(): GeojsonApiMapObject | undefined;
10913
- /**
10914
- * @internal
10915
- */
10916
- constructor({ currentMapGetter }: {
10917
- currentMapGetter: CurrentMapGetter;
10918
- });
10919
- setFromStyleCollection(styleCollection: StyleCollection): void;
10920
- }
10921
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
10922
- export {};
10923
- }
10924
-
10925
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
10926
- import { type RendererCore } from '@mappedin/core-sdk';
10927
- import type { BBox } from 'geojson';
10928
- export type HiddenOutdoorGeometry = [
10929
- BBox,
10930
- polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
10931
- layers: string[]
10932
- ];
10933
- /**
10934
- * The outdoor map shown around the Mappedin indoor map can be manipulated to show or hide additional information. It can be used to add GeoJSON based geometry, images, deck.gl layers and more.
10935
- *
10936
- * The outdoor map is accessed using {@link MapView.Outdoor.map}, which returns a maplibregl.Map object.
10937
- * [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) is a TypeScript library that uses WebGL to render interactive maps from vector tiles in a browser. The Mappedin SDK makes use of it to display the outdoor map.
10938
- *
10939
- * By providing access to the MapLibre map used to draw the outdoor map, the Mappedin SDK enables developers to draw on and manipulate the outdoor map.
10940
- * Developers can use most capabilities of MapLibre GL JS with key exceptions being Interactivity and Camera, which are not available.
10941
- *
10942
- * User touch and click events are handled by Mappedin JS and are not propagated to the outdoor map layer. Camera movement is also handled by Mappedin JS and cannot be manipulated using MapLibre controls.
10943
- *
10944
- * Refer to the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map) for more information and interactive examples.
10945
- */
10946
- export default class Outdoor {
10947
- #private;
10948
- /**
10949
- * @internal
10950
- */
10951
- constructor(core: RendererCore, hiddenOutdoorGeometry?: HiddenOutdoorGeometry[]);
10952
- /**
10953
- * Set the style of the outdoor map. Use one of [Mappedin's predefined styles](https://developer.mappedin.com/web-sdk/outdoor-map#styles) or link to a custom style.
10954
- * @param style {any}
10955
- */
10956
- setStyle(style: any): void;
10957
- /**
10958
- * Returns a Maplibre map for advanced usage.
10959
- *
10960
- * @returns {object} Maplibre map instance
10961
- *
10962
- * Limitations:
10963
- * - Maplibre interaction events are not supported, use Mappedin JS interaction events.
10964
- * - Maplibre markers and labels may overlap as they are not integrated with the Mappedin JS collision engine.
10965
- */
10966
- get map(): import("@packages/internal/outdoor-context-v4").Map | undefined;
10967
- /**
10968
- * Whether the outdoorView is enabled.
10969
- */
10970
- get enabled(): boolean;
10971
- /**
10972
- * Whether the outdoorView is visible.
10973
- */
10974
- get visible(): boolean;
10975
- /**
10976
- * Show the outdoor map.
10977
- */
10978
- show(): void;
10979
- /**
10980
- * Hide the outdoor map.
10981
- * @param excludedStyleLayerIds {string[]}
10982
- */
10983
- hide(excludedStyleLayerIds?: string[]): void;
10984
- /**
10985
- * Set outdoor view opacity.
10986
- * @param targetOpacity {number | 'initial'}
10987
- * @param excludedStyleLayerIds {string[]}
10988
- */
10989
- setOpacity(targetOpacity: number | 'initial', excludedStyleLayerIds?: string[]): void;
10990
- }
10991
- }
10992
-
10993
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
10994
- import type { IAnchorable, TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
10995
- import { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
10996
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
10997
- /**
10998
- * Images can enhance the fidelity of an indoor map. They can be used to add custom branding, highlight important features, or provide additional information to users.
10999
- * Images can be placed on any {@link Door}, {@link Space}, or {@link Coordinate} on the map and given a verticalOffset to control the height at which the image is displayed.
11000
- *
11001
- * This class is accessed using {@link MapView.Images}.
11002
- *
11003
- * JPEG and PNG images are supported. It's important to consider the size of all unique image files displayed on a map at one time.
11004
- * Using many unique images may cause instability on mobile devices with limited GPU memory. The Mappedin SDK will cache and reuse images that have the same URL, resulting in reduced memory usage.
11005
- *
11006
- * The following calculations illustrates how much memory is used for a given image:
11007
- *
11008
- * Formula: `width * height * 4 bytes/pixel = memory used`
11009
- *
11010
- * 512 x 512 Pixel Image: `512px * 512px * 4 bytes/pixel = 1MB`
11011
- *
11012
- * 4096 x 4096 Pixel Image: `4096px * 4096px * 4 bytes/pixel = 64MB`
11013
- *
11014
- * Refer to the [Images Guide](https://developer.mappedin.com/web-sdk/images-textures) for more information and interactive examples.
11015
- */
11016
- export class Images {
11017
- #private;
11018
- /**
11019
- * @internal
11020
- */
11021
- get currentMap(): GeojsonApiMapObject | undefined;
11022
- /**
11023
- * @internal
11024
- */
11025
- constructor({ currentMapGetter }: {
11026
- currentMapGetter: CurrentMapGetter;
11027
- });
11028
- /**
11029
- * @internal
11030
- */
11031
- getById(id: string): {
11032
- image: Image;
11033
- entityId: string;
11034
- } | undefined;
11035
- /**
11036
- * Adds an image to the map.
11037
- *
11038
- * @param target The target object ({@link IAnchorable}) for the image.
11039
- * @param url The URL of the image.
11040
- * @param options Optional additional options for the {@link Image}.
11041
- * @returns {Image | undefined} The created {@link Image}, or undefined if creation failed.
11042
- * @example
11043
- * // Add an interactive {@link Image} to the map with custom HTML content.
11044
- * mapView.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
11045
- */
11046
- add(target: IAnchorable, url: string, options: TAddImageOptions): Image;
11047
- /**
11048
- * Removes a image from the map.
11049
- *
11050
- * @param image {Image} The {@link Image} which should be removed.
11051
- * @example
11052
- * mapView.Images.remove(image);
11053
- */
11054
- remove(image: Image): void;
11055
- /**
11056
- * Remove all the images from the map.
11057
- *
11058
- * @example
11059
- * mapView.Images.removeAll();
12331
+ draw(directions: Directions | Directions[], options?: TNavigationOptions): Promise<unknown>;
12332
+ /**
12333
+ * Clears any drawn navigation paths or directions from the map.
11060
12334
  */
11061
- removeAll(): Image[];
12335
+ clear(): void;
11062
12336
  }
11063
12337
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
11064
12338
  export {};
11065
12339
  }
11066
12340
 
11067
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus' {
11068
- export { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
11069
- }
11070
-
11071
12341
  declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
11072
12342
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
11073
12343
  import type { Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
@@ -11647,6 +12917,60 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
11647
12917
  export {};
11648
12918
  }
11649
12919
 
12920
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/tokens/access-token' {
12921
+ import { type TGetMapDataWithCredentialsOptions } from '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils';
12922
+ export const ACCESS_TOKEN_REFRESH_BUFFER_MINUTES = 60;
12923
+ export const ACCESS_TOKEN_REFRESH_BUFFER_MS: number;
12924
+ export const ACCESS_TOKEN_STORAGE_KEY = "accessTokens";
12925
+ type AccessToken = {
12926
+ accessToken: string;
12927
+ expiresTimestamp: number;
12928
+ };
12929
+ type TGetAccessTokenOptions = Pick<TGetMapDataWithCredentialsOptions, 'baseUri' | 'baseAuthUri' | 'key' | 'secret'>;
12930
+ /**
12931
+ * Get an access token from storage or fetch it from the API using API keys.
12932
+ */
12933
+ export function getAccessToken(userOptions: TGetAccessTokenOptions, enterprise?: boolean): Promise<AccessToken>;
12934
+ /**
12935
+ * Fetch an access token for enterprise.
12936
+ */
12937
+ export function fetchAccessTokenEnterprise(userOptions: TGetAccessTokenOptions, currentTimestamp: number): Promise<AccessToken>;
12938
+ export {};
12939
+ }
12940
+
12941
+ declare module '@mappedin/mappedin-js/packages/mvf-utils/tokens/sas-token' {
12942
+ export const SAS_TOKEN_REFRESH_BUFFER_MINUTES = 60;
12943
+ export const SAS_TOKEN_REFRESH_BUFFER_MS: number;
12944
+ export const SAS_TOKEN_STORAGE_KEY = "miSasTokens";
12945
+ type SasToken = {
12946
+ token: string;
12947
+ expires: number;
12948
+ };
12949
+ /**
12950
+ * Fetch the SAS Token either from sesion storage or from the API using the access token.
12951
+ * @param userOptions - The user options.
12952
+ * @returns The SAS Token.
12953
+ */
12954
+ export function getSasToken(userOptions: {
12955
+ mapId: string;
12956
+ baseUri?: string;
12957
+ }, accessToken: string): Promise<SasToken>;
12958
+ /**
12959
+ * Fetch the SAS Token for private images using the access token.
12960
+ * @param userOptions - The user options.
12961
+ * @param accessToken - The access token.
12962
+ * @returns The SAS Token.
12963
+ */
12964
+ export function fetchSasToken(userOptions: {
12965
+ mapId: string;
12966
+ baseUri?: string;
12967
+ }, accessToken: string): Promise<{
12968
+ token: string;
12969
+ expires: number;
12970
+ }>;
12971
+ export {};
12972
+ }
12973
+
11650
12974
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object' {
11651
12975
  export default abstract class BaseMetaData {
11652
12976
  /**
@@ -11662,7 +12986,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/detailed-
11662
12986
  import type LocationProfile from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-profile';
11663
12987
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
11664
12988
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
11665
- import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
12989
+ import ImageMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
11666
12990
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
11667
12991
  type PropertiesWithDetails = {
11668
12992
  id: string;
@@ -11691,11 +13015,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/detailed-
11691
13015
  */
11692
13016
  get description(): string;
11693
13017
  /**
11694
- * Gets the array of {@link Image}s associated with this map feature.
13018
+ * Gets the array of {@link ImageMetaData}s associated with this map feature.
11695
13019
  *
11696
- * @returns {Image[]} An array of Image objects, or an empty array if no images exist.
13020
+ * @returns {ImageMetaData[]} An array of Image objects, or an empty array if no images exist.
11697
13021
  */
11698
- get images(): Image[];
13022
+ get images(): ImageMetaData[];
11699
13023
  /**
11700
13024
  * Gets the array of {@link Hyperlink}s associated with this map feature.
11701
13025
  *
@@ -11747,93 +13071,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/opening-h
11747
13071
  }
11748
13072
  }
11749
13073
 
11750
- declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
11751
- import { QuadTree } from '@packages/internal/quad-tree';
11752
- import '../../styles/collisions.scss';
11753
- import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
11754
- import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
11755
- import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
11756
- import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
11757
- import type { TSerializedCollider, TSerializedColliderResponse } from '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor';
11758
- import type { WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
11759
- export type TMessageEvent = MessageEvent<{
11760
- msgId: string;
11761
- colliders: TSerializedColliderResponse[];
11762
- debug: {
11763
- x: number;
11764
- y: number;
11765
- w: number;
11766
- h: number;
11767
- }[];
11768
- }>;
11769
- export type TMessage = {
11770
- msgId: string;
11771
- totalWidth: number;
11772
- totalHeight: number;
11773
- watermarkWidth: number;
11774
- watermarkHeight: number;
11775
- watermarkPosition: WatermarkPosition;
11776
- colliders: TSerializedCollider[];
11777
- devicePixelRatio: number;
11778
- };
11779
- type TCollisionSystemEvent = {
11780
- 'visibility-changed': undefined;
11781
- };
11782
- export type PackedBBox = [x: number, y: number, w: number, h: number, index: number];
11783
- export type PackedBBoxes = PackedBBox[];
11784
- export type PackedCollider = [
11785
- bboxes: PackedBBoxes,
11786
- enabled: 0 | 1,
11787
- alwaysVisible: 0 | 1,
11788
- x: number,
11789
- y: number,
11790
- shouldCollideWithScreenEdges?: 0 | 1,
11791
- onlyExposeStrategyIndex?: number
11792
- ];
11793
- export type PackedMessage = [
11794
- colliders: PackedCollider[],
11795
- devicePixelRatio: number,
11796
- totalHeight: number,
11797
- totalWidth: number,
11798
- watermarkWidth: number,
11799
- watermarkHeight: number,
11800
- watermarkPosition: WatermarkPosition
11801
- ];
11802
- export class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
11803
- collidersDirty: boolean;
11804
- packedMessage: PackedMessage;
11805
- visibleCollidersQTree: QuadTree<{
11806
- entityId: string | number;
11807
- }>;
11808
- interactiveCollidersQTree: QuadTree<{
11809
- entityId: string | number;
11810
- }>;
11811
- coreState: RendererState;
11812
- constructor(debugCanvas: HTMLCanvasElement, coreState: RendererState, worker?: Worker);
11813
- postMessage: () => void;
11814
- showCollisionBoxes: () => void;
11815
- hideCollisionBoxes: () => void;
11816
- currentMsgId: string;
11817
- working: boolean;
11818
- componentArray: (MarkerComponent | LabelComponent)[];
11819
- update: (watermarkWidth: number, watermarkHeight: number, watermarkPosition?: WatermarkPosition, isPanning?: boolean) => void;
11820
- resize(watermarkWidth: number, watermarkHeight: number, watermarkPosition: WatermarkPosition): void;
11821
- /**
11822
- * Resolve collisions
11823
- */
11824
- resolve: (e: MessageEvent<{
11825
- msgId: string;
11826
- colliders: TSerializedColliderResponse[];
11827
- }>) => void;
11828
- drawDebug: () => void;
11829
- destroy: () => void;
11830
- }
11831
- export {};
11832
- }
11833
-
11834
13074
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
11835
13075
  import { Object3D } from 'three';
11836
- import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
13076
+ import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2, Raycaster } from 'three';
11837
13077
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
11838
13078
  import type { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
11839
13079
  import type { ModelComponent } from '@mappedin/mappedin-js/geojson/src/components/model';
@@ -11846,43 +13086,52 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
11846
13086
  import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
11847
13087
  import type { Text3DComponent } from '@mappedin/mappedin-js/geojson/src/components/text3d';
11848
13088
  import type { ModelStyleComponnet, Text3DStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles';
13089
+ import type { OutlineComponent } from '@mappedin/mappedin-js/geojson/src/components/outline';
11849
13090
  export enum Geometry3DComponents {
11850
- Mesh = 0,
11851
- Style = 1,
11852
- Interaction = 2
13091
+ Mesh = 0,
13092
+ Style = 1,
13093
+ Interaction = 2,
13094
+ Outline = 3
11853
13095
  }
11854
13096
  type Geometry3DObjectTypes = 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image' | 'text3d';
11855
13097
  export class Geometry3DObject3D extends Object3D {
11856
- type: Geometry3DObjectTypes;
11857
- userData: {
11858
- entityId: string;
11859
- /**
11860
- * TODO: remove this when proper instancing is handled
11861
- */
11862
- isSingleModel?: boolean;
11863
13098
  type: Geometry3DObjectTypes;
11864
- };
13099
+ userData: {
13100
+ entityId: string;
13101
+ /**
13102
+ * TODO: remove this when proper instancing is handled
13103
+ */
13104
+ isSingleModel?: boolean;
13105
+ type: Geometry3DObjectTypes;
13106
+ };
13107
+ /**
13108
+ * Custom raycast implementation for model objects only.
13109
+ * This selectively enables recursive raycasting just for models, which have complex hierarchies,
13110
+ * while avoiding the performance cost of recursive raycasting for other object types.
13111
+ */
13112
+ raycast(raycaster: Raycaster, intersects: any[]): void;
11865
13113
  }
11866
13114
  export type PathMaterial = ShaderMaterial & {
11867
- uniforms: PathUniforms;
13115
+ uniforms: PathUniforms;
11868
13116
  };
11869
13117
  export type PathMesh = Mesh<TubeGeometry, PathMaterial, Object3DEventMap>;
11870
13118
  export class PatMeshContainer extends Geometry3DObject3D {
11871
- children: [PathMesh, PathMesh];
13119
+ children: [PathMesh, PathMesh];
11872
13120
  }
11873
13121
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | Text3DComponent | ImageComponent;
11874
13122
  type MappedComponentType<M> = M extends MeshComponent ? 'geometry' : M extends PathComponent ? 'path' : M extends ModelComponent ? 'model' : M extends CustomGeometryComponent ? 'custom-geometry' : M extends ImageComponent ? 'image' : M extends Text3DComponent ? 'text3d' : never;
11875
- export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent | ModelStyleComponnet = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>> {
11876
- id: string | number;
11877
- components: [M, S, I?];
11878
- get object3d(): M["mesh"];
11879
- get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
11880
- get type(): T;
11881
- entities2D: Map<string | number, Geometry2D>;
11882
- constructor(meshComponent: M, styleComponent: S);
11883
- addEntity(entity: Geometry2D): void;
11884
- removeEntity(entity: Geometry2D): void;
11885
- removeAllEntities(): void;
13123
+ export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent | ModelStyleComponnet = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>, O extends OutlineComponent | undefined = OutlineComponent | undefined> {
13124
+ id: string | number;
13125
+ components: [M, S, I?, O?];
13126
+ get object3d(): M["mesh"];
13127
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
13128
+ get type(): T;
13129
+ entities2D: Map<string | number, Geometry2D>;
13130
+ constructor(meshComponent: M, styleComponent: S);
13131
+ /** Attaching a 2D entity to the 3D entity so it will follow the style changes */
13132
+ attach(entity: Geometry2D): void;
13133
+ detach(entity: Geometry2D): void;
13134
+ removeAllEntities(): void;
11886
13135
  }
11887
13136
  export type TextGeometry3D = Geometry3D<Text3DComponent, Text3DStyleComponent, InteractionComponent, 'text3d'>;
11888
13137
  export type CustomGeometry3D = Geometry3D<CustomGeometryComponent, StyleComponent, InteractionComponent, 'custom-geometry'>;
@@ -11892,86 +13141,86 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
11892
13141
  export type MeshGeometry3D = Geometry3D<MeshComponent, StyleComponent, InteractionComponent, 'geometry'>;
11893
13142
  export type Geometry3DTypes = TextGeometry3D | CustomGeometry3D | PathGeometry3D | ImageGeometry3D | MeshGeometry3D | ModelGeometry3D;
11894
13143
  export interface PathUniforms {
11895
- vertexes: {
11896
- type: 'f';
11897
- value: number;
11898
- };
11899
- resolution: {
11900
- type: 'v2';
11901
- value: Vector2;
11902
- };
11903
- cameraParameters: {
11904
- type: 'v2';
11905
- value: Vector2;
11906
- };
11907
- complete: {
11908
- type: 'f';
11909
- value: number;
11910
- };
11911
- color: {
11912
- type: 'c';
11913
- value: Color;
11914
- };
11915
- pathLength: {
11916
- type: 'f';
11917
- value: number;
11918
- };
11919
- nearRadius: {
11920
- type: 'f';
11921
- value: number;
11922
- };
11923
- farRadius: {
11924
- type: 'f';
11925
- value: number;
11926
- };
11927
- nearZoom: {
11928
- type: 'f';
11929
- value: number;
11930
- };
11931
- farZoom: {
11932
- type: 'f';
11933
- value: number;
11934
- };
11935
- pulseColor: {
11936
- type: 'c';
11937
- value: Color;
11938
- };
11939
- pulse: {
11940
- type: 'f';
11941
- value: number;
11942
- };
11943
- pulseLength: {
11944
- type: 'f';
11945
- value: number;
11946
- };
11947
- pathIsVertical: {
11948
- type: 'b';
11949
- value: boolean;
11950
- };
11951
- arrowAnimationTimer: {
11952
- type: 'f';
11953
- value: number;
11954
- };
11955
- arrowTexture: {
11956
- type: 't';
11957
- value: Texture;
11958
- };
11959
- displayArrowsOnPath: {
11960
- type: 'b';
11961
- value: boolean;
11962
- };
11963
- flattenFactor: {
11964
- type: 'f';
11965
- value: number;
11966
- };
11967
- showPulse: {
11968
- type: 'b';
11969
- value: boolean;
11970
- };
11971
- opacityMultiplier: {
11972
- type: 'f';
11973
- value: number;
11974
- };
13144
+ vertexes: {
13145
+ type: 'f';
13146
+ value: number;
13147
+ };
13148
+ resolution: {
13149
+ type: 'v2';
13150
+ value: Vector2;
13151
+ };
13152
+ cameraParameters: {
13153
+ type: 'v2';
13154
+ value: Vector2;
13155
+ };
13156
+ complete: {
13157
+ type: 'f';
13158
+ value: number;
13159
+ };
13160
+ color: {
13161
+ type: 'c';
13162
+ value: Color;
13163
+ };
13164
+ pathLength: {
13165
+ type: 'f';
13166
+ value: number;
13167
+ };
13168
+ nearRadius: {
13169
+ type: 'f';
13170
+ value: number;
13171
+ };
13172
+ farRadius: {
13173
+ type: 'f';
13174
+ value: number;
13175
+ };
13176
+ nearZoom: {
13177
+ type: 'f';
13178
+ value: number;
13179
+ };
13180
+ farZoom: {
13181
+ type: 'f';
13182
+ value: number;
13183
+ };
13184
+ pulseColor: {
13185
+ type: 'c';
13186
+ value: Color;
13187
+ };
13188
+ pulse: {
13189
+ type: 'f';
13190
+ value: number;
13191
+ };
13192
+ pulseLength: {
13193
+ type: 'f';
13194
+ value: number;
13195
+ };
13196
+ pathIsVertical: {
13197
+ type: 'b';
13198
+ value: boolean;
13199
+ };
13200
+ arrowAnimationTimer: {
13201
+ type: 'f';
13202
+ value: number;
13203
+ };
13204
+ arrowTexture: {
13205
+ type: 't';
13206
+ value: Texture;
13207
+ };
13208
+ displayArrowsOnPath: {
13209
+ type: 'b';
13210
+ value: boolean;
13211
+ };
13212
+ flattenFactor: {
13213
+ type: 'f';
13214
+ value: number;
13215
+ };
13216
+ showPulse: {
13217
+ type: 'b';
13218
+ value: boolean;
13219
+ };
13220
+ opacityMultiplier: {
13221
+ type: 'f';
13222
+ value: number;
13223
+ };
11975
13224
  }
11976
13225
  export {};
11977
13226
  }
@@ -11984,27 +13233,29 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
11984
13233
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
11985
13234
  import { type GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
11986
13235
  export enum Geometry2DComponents {
11987
- UI = 0,
11988
- Interaction = 1
13236
+ UI = 0,
13237
+ Interaction = 1
11989
13238
  }
11990
13239
  export class Geometry2DObject3D extends Object3D {
11991
13240
  }
11992
13241
  export class Geometry2D {
11993
- id: string | number;
11994
- get type(): 'label' | 'marker';
11995
- get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
11996
- verticalOffset: number;
11997
- /**
11998
- * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
11999
- */
12000
- positionDirty: boolean;
12001
- occluderId?: number;
12002
- object3d: Geometry2DObject3D;
12003
- components: [MarkerComponent | LabelComponent, InteractionComponent?];
12004
- disposed: boolean;
12005
- constructor(ui: MarkerComponent | LabelComponent, position: Vector3, verticalOffset?: number);
12006
- get position(): Vector3;
12007
- setAltitude(z: number): void;
13242
+ id: string | number;
13243
+ get type(): 'label' | 'marker';
13244
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
13245
+ /** The geometry3D that this 2D entity is attached to */
13246
+ get attachedTo(): string | number | undefined;
13247
+ verticalOffset: number;
13248
+ /**
13249
+ * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
13250
+ */
13251
+ positionDirty: boolean;
13252
+ occluderId?: number;
13253
+ object3d: Geometry2DObject3D;
13254
+ components: [MarkerComponent | LabelComponent, InteractionComponent?];
13255
+ disposed: boolean;
13256
+ constructor(ui: MarkerComponent | LabelComponent, position: Vector3, verticalOffset?: number);
13257
+ get position(): Vector3;
13258
+ setAltitude(z: number): void;
12008
13259
  }
12009
13260
  }
12010
13261
 
@@ -12029,13 +13280,17 @@ declare module '@mappedin/mappedin-js/geojson/src/services/text3d/text3d' {
12029
13280
  import { BatchedText, Text } from 'troika-three-text';
12030
13281
  import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
12031
13282
  import type { Text3DComponent } from '@mappedin/mappedin-js/geojson/src/components/text3d';
13283
+ import { syncText } from '@mappedin/mappedin-js/geojson/src/services/text3d/utils';
13284
+ export function configureTroikaTextBuilder({ useWorker }: {
13285
+ useWorker: boolean;
13286
+ }): void;
12032
13287
  export function createTroikaTextPoint(entityId: string | number, text3DComponent: Text3DComponent, styleComponent: Text3DStyleComponent, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): Promise<{
12033
13288
  text: Text;
12034
13289
  }>;
12035
13290
  export function createTroikaTextArea(entityId: string | number, text3DComponent: Text3DComponent, styleComponent: Text3DStyleComponent, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): Promise<{
12036
13291
  text: Text;
12037
13292
  } | undefined>;
12038
- export { BatchedText, Text };
13293
+ export { BatchedText, Text, syncText };
12039
13294
  /**
12040
13295
  * Promise caches the base64 font string. Then shared across all needed
12041
13296
  */
@@ -12053,11 +13308,21 @@ declare module '@mappedin/mappedin-js/geojson/src/services/text3d/text3d' {
12053
13308
  export type ModuleType = {
12054
13309
  createTroikaTextPoint: typeof createTroikaTextPoint;
12055
13310
  createTroikaTextArea: typeof createTroikaTextArea;
13311
+ configureTroikaTextBuilder: typeof configureTroikaTextBuilder;
12056
13312
  preloadFont: typeof preloadFont;
13313
+ syncText: typeof syncText;
12057
13314
  BatchedText: typeof BatchedText;
12058
13315
  };
12059
13316
  }
12060
13317
 
13318
+ declare module '@mappedin/mappedin-js/geojson/src/components/focusable' {
13319
+ import type { Mesh } from 'three';
13320
+ export class FocusableComponent {
13321
+ focusMesh?: Mesh;
13322
+ dirty: boolean;
13323
+ }
13324
+ }
13325
+
12061
13326
  declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-style' {
12062
13327
  import { type Shading } from '@mappedin/mappedin-js/geojson/src/types';
12063
13328
  type GeometryGroupStyle = {
@@ -12441,6 +13706,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-opti
12441
13706
  import { PubSub } from '@packages/internal/common';
12442
13707
  import type { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
12443
13708
  import type { ModelStyle } from '@mappedin/mappedin-js/geojson/src/components/styles';
13709
+ import { OutlineComponent } from '@mappedin/mappedin-js/geojson/src/components/outline';
12444
13710
  export class MeshCreationAndOptimizationSystem extends PubSub<{
12445
13711
  'model-loaded': void;
12446
13712
  'geometry-2d-added': void;
@@ -12450,7 +13716,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-opti
12450
13716
  loader?: GLTFLoader;
12451
13717
  constructor(state: RendererState, convertTo3DMapPosition: any);
12452
13718
  getGLTFLoader(): Promise<GLTFLoader>;
12453
- createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D<MeshComponent, StyleComponent, import("../../components/interaction").InteractionComponent, "geometry">;
13719
+ createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D<MeshComponent, StyleComponent, import("../../components/interaction").InteractionComponent, "geometry", OutlineComponent | undefined>;
12454
13720
  createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: Partial<ModelStyle>): ModelGeometry3D;
12455
13721
  populateEntityMesh(entity: Geometry3D, geometry: BufferGeometry): void;
12456
13722
  populateModelGroup(entities: Set<string | number>, url: string, tree: GeometryGroupObject3D): Promise<Geometry3DObject3D>;
@@ -12808,7 +14074,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/dom-resize/system' {
12808
14074
  observers: Map<string | number, ResizeObserver>;
12809
14075
  constructor(state: RendererState, domTree: Entity2DHTMLDivElementContainer);
12810
14076
  setupObserver(): void;
12811
- updateDimensions: (mutations: any) => void;
14077
+ updateDimensions: (mutations: ResizeObserverEntry[]) => void;
12812
14078
  update(): void;
12813
14079
  destroy(): void;
12814
14080
  }
@@ -12850,9 +14116,9 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/
12850
14116
  export class OutlineInterpolationSystem {
12851
14117
  #private;
12852
14118
  /**
12853
- * Set to true when we need to update the outline color of all entities, regardless of zoom level.
14119
+ * Set to true when we need to update the outline opacity of all entities, regardless of zoom level.
12854
14120
  */
12855
- dirty: boolean;
14121
+ outlineOpacitiesDirty: boolean;
12856
14122
  get geometries3DDirty(): boolean;
12857
14123
  set geometries3DDirty(value: boolean);
12858
14124
  constructor(rendererState: RendererState);
@@ -12861,7 +14127,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/
12861
14127
  * @param zoomLevel - The current zoom level.
12862
14128
  * @param isCameraZoomDirty - Whether the zoom level has changed since the last update. If this is true, the system will update if zoomLevel falls between range.
12863
14129
  */
12864
- update(zoomLevel: number, isCameraZoomDirty?: boolean): void;
14130
+ update(zoomLevel: number, isCameraZoomDirty?: boolean): null | undefined;
14131
+ destroy(): void;
12865
14132
  }
12866
14133
  }
12867
14134
 
@@ -12905,6 +14172,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
12905
14172
  resize(): void;
12906
14173
  update: (cameraIsMoving?: boolean, cameraStoppedMovingTime?: number) => void;
12907
14174
  updateRaf(): void;
14175
+ raycast(): void;
12908
14176
  showRaycasters(): void;
12909
14177
  hideRaycasters(): void;
12910
14178
  destroy(): void;
@@ -12912,14 +14180,16 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
12912
14180
  }
12913
14181
 
12914
14182
  declare module '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system' {
12915
- import type { Map } from '@packages/internal/outdoor-context-v4';
14183
+ import type { LegacyFilterSpecification, Map } from '@packages/internal/outdoor-context-v4';
12916
14184
  import type { Position } from '@mappedin/mappedin-js/geojson/src/renderer';
12917
14185
  import { type BBox } from 'geojson';
12918
14186
  export class OutdoorLayers {
14187
+ #private;
12919
14188
  dirty: boolean;
12920
14189
  hideLayersUnderPoint(point: Position, layers: string[]): void;
12921
14190
  hideLayersIntersectingPolygons(bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]): void;
12922
14191
  constructor(map?: Map);
14192
+ expr: LegacyFilterSpecification[];
12923
14193
  destroy(): void;
12924
14194
  }
12925
14195
  }
@@ -13003,7 +14273,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
13003
14273
  topColor?: string;
13004
14274
  texture?: string;
13005
14275
  topTexture?: string;
13006
- outline: boolean;
13007
14276
  showImage: boolean;
13008
14277
  flipImageToFaceCamera: boolean;
13009
14278
  url?: string;
@@ -13027,7 +14296,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
13027
14296
  altitude: number;
13028
14297
  join: LineStyle['join'];
13029
14298
  cap: LineStyle['cap'];
13030
- outline: boolean;
13031
14299
  showImage: boolean;
13032
14300
  flipImageToFaceCamera: boolean;
13033
14301
  url?: string;
@@ -13152,6 +14420,35 @@ declare module '@mappedin/mappedin-js/geojson/src/entities' {
13152
14420
  export type { PathMesh, PatMeshContainer, PathMaterial, Geometry3DTypes, ImageGeometry3D, TextGeometry3D, ModelGeometry3D, CustomGeometry3D, MeshGeometry3D, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
13153
14421
  }
13154
14422
 
14423
+ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
14424
+ import { Rectangle } from '@packages/internal/quad-tree';
14425
+ export type TSerializedCollider = {
14426
+ rank: number;
14427
+ enabledAndVisible: boolean;
14428
+ x: number;
14429
+ y: number;
14430
+ bboxes: {
14431
+ index: number;
14432
+ boundingBox: [number, number, number, number];
14433
+ boundingRect?: Rectangle;
14434
+ }[];
14435
+ shouldCollideWithScreenEdges?: boolean;
14436
+ lockedToStrategyIndex?: number;
14437
+ visible?: boolean;
14438
+ };
14439
+ export type TSerializedColliderResponse = [number, 1 | 0, Rectangle?];
14440
+ export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, watermarkPosition: any, msgId?: string): {
14441
+ msgId: string;
14442
+ colliders: TSerializedColliderResponse[];
14443
+ debug: {
14444
+ x: number;
14445
+ y: number;
14446
+ w: number;
14447
+ h: number;
14448
+ }[];
14449
+ };
14450
+ }
14451
+
13155
14452
  declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
13156
14453
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
13157
14454
  export type GLTFExportOptions = {
@@ -13424,12 +14721,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
13424
14721
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
13425
14722
  class Layer {
13426
14723
  containerId: string;
13427
- labelIds: Set<string>;
13428
14724
  layers: Map<string, string>;
13429
14725
  renderer: RendererCore;
13430
14726
  constructor(renderer: RendererCore, containerId: string, layers?: Map<any, any>);
13431
- show(): void;
13432
- hide(): void;
14727
+ get visible(): boolean;
14728
+ setVisible(visible: boolean): void;
13433
14729
  }
13434
14730
  export class FloorObject implements MVFFloor {
13435
14731
  #private;
@@ -13457,18 +14753,18 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
13457
14753
  }
13458
14754
 
13459
14755
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
13460
- import { Coordinate, type Floor, type MapObject, type Space, type Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
14756
+ import { Coordinate, MapObject, Space, type Floor, type Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
13461
14757
  import type { EntranceCollection, LineString, Polygon, Point, SpaceProperties, ObstructionProperties, StyleCollection, PolygonStyle, LineStringStyle, Feature, ObstructionCollection, PointStyle } from '@mappedin/mvf';
13462
14758
  import type { PolygonFeatureProperties } from '@packages/internal/mvf-utils';
13463
14759
  import type { BBox, FeatureCollection, MultiLineString } from 'geojson';
13464
- import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle, Position, GroupContainerState } from '@mappedin/core-sdk';
13465
- import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src';
13466
- import type { TDoorsState, TFloorState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
14760
+ import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle, Position, EntityId, PathState } from '@mappedin/core-sdk';
14761
+ import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model, MapData } from '@mappedin/mappedin-js/mappedin-js/src';
14762
+ import type { IAnchorable, TDoorsState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
13467
14763
  import type { Image, Path, Shape, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
13468
14764
  import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
13469
14765
  import type { Tween } from '@tweenjs/tween.js';
13470
14766
  import type { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
13471
- import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
14767
+ import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
13472
14768
  export function convertCoordinateToPosition(coord: Coordinate): Position;
13473
14769
  export function convertPositionToCoordinate(coord: Position): Coordinate;
13474
14770
  export const cutEntrancesFromLineStrings: (lineStrings: ObstructionCollection["features"], entranceCollection: EntranceCollection["features"]) => {
@@ -13480,7 +14776,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
13480
14776
  export function translateDoorsStateToGeojsonCore(state: Partial<TDoorsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
13481
14777
  export function translateWallsStateToGeojsonCore(state: Partial<TWallsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
13482
14778
  export function translateSpaceStateToGeojsonCore(state: Partial<TGeometryState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
13483
- export function translateFloorGeometryStateToGeojsonCore(state: TFloorState['geometry']): Partial<GroupContainerState>;
13484
14779
  export function differenceBetweenAngles(a: number, b: number): number;
13485
14780
  export function getRelativeBearing(relativeBearingAngle: number, threshold: number): TDirectionInstructionAction['bearing'];
13486
14781
  export function convertCollisionRankingTeirToNumber(tier: CollisionRankingTier): number;
@@ -13502,6 +14797,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
13502
14797
  export function expandBbox(bbox: BBox, bboxToExpand: BBox): number[];
13503
14798
  export function unique<T>(array: T[]): T[];
13504
14799
  export function getTargetFloorObject(coordinate: Coordinate, floorsById: Map<string, FloorObject>, defaultFloor: FloorObject): FloorObject;
14800
+ /** Gets the ID of a geometry that 2D entities can attach to */
14801
+ export function getAttachableGeometryId(target: IAnchorable): string | undefined;
14802
+ export function determineFloorVisibleBasedOnPath(path: EntityId<PathState> & {
14803
+ coordinates: Coordinate[];
14804
+ }, mapData: MapData, api: GeoJsonApi): boolean;
13505
14805
  }
13506
14806
 
13507
14807
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object' {
@@ -13529,110 +14829,59 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-ob
13529
14829
  }
13530
14830
  }
13531
14831
 
13532
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
13533
- import { type RendererCore } from '@mappedin/core-sdk';
13534
- import { PubSub } from '@packages/internal/common';
13535
- import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
13536
- import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
13537
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
13538
- /**
13539
- * @experimental
13540
- * @internal
13541
- */
13542
- export type TDynamicFocusEvents = {
13543
- 'focus-change': {
13544
- facades: string[];
13545
- spaces: string[];
13546
- };
13547
- };
13548
- /**
13549
- * @experimental
13550
- * @internal
13551
- */
13552
- export type TDynamicFocusOptions = {
13553
- /**
13554
- * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
13555
- * @default 17
13556
- */
13557
- minZoomLevel?: number;
14832
+ declare module '@mappedin/mappedin-js/geojson/src/components/outline' {
14833
+ import type { BufferAttribute, BufferGeometry } from 'three';
14834
+ type Outline = {
14835
+ color: string;
14836
+ dirty: boolean;
14837
+ visible: boolean;
14838
+ edgeColors?: BufferAttribute;
14839
+ ranges?: {
14840
+ start: number;
14841
+ count: number;
14842
+ };
14843
+ geometry?: BufferGeometry;
14844
+ currentOpacity: number;
14845
+ currentColor: [number, number, number];
14846
+ topFaceVerticesIndices?: number[];
13558
14847
  };
13559
- /**
13560
- * @experimental
13561
- * @internal
13562
- */
13563
- export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
13564
- #private;
13565
- /** @internal */
13566
- constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
13567
- currentMapGetter: CurrentMapGetter;
13568
- });
13569
- get focusedFacades(): import("../../map-data-objects").Facade[];
13570
- /**
13571
- * @experimental
13572
- * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
13573
- */
13574
- enable(options?: TDynamicFocusOptions): void;
13575
- /**
13576
- * @experimental
13577
- * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
13578
- */
13579
- disable(): void;
13580
- /**
13581
- * @experimental
13582
- * Returns the enabled state of Dynamic Focus.
13583
- */
13584
- get enabled(): boolean;
13585
- /**
13586
- * @experimental
13587
- * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
13588
- * See {@link resetDefaultFloorForStack} to reset the default floor.
13589
- * @param floorStack - The floor stack to set the default floor for.
13590
- * @param floor - The floor to set as the default floor.
13591
- */
13592
- setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
13593
- /**
13594
- * @experimental
13595
- * Resets the default floor for a floor stack to it's initial value.
13596
- * @param floorStack - The floor stack to reset the default floor for.
13597
- */
13598
- resetDefaultFloorForStack(floorStack: FloorStack): void;
14848
+ export class OutlineComponent implements Outline {
14849
+ color: string;
14850
+ dirty: boolean;
14851
+ visible: boolean;
14852
+ edgeColors?: BufferAttribute;
14853
+ geometry?: BufferGeometry;
14854
+ ranges?: {
14855
+ start: number;
14856
+ count: number;
14857
+ };
14858
+ topFaceVerticesIndices?: number[];
14859
+ get currentOpacity(): number;
14860
+ get currentColor(): [number, number, number];
14861
+ constructor(color: string);
13599
14862
  }
13600
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
13601
14863
  export {};
13602
14864
  }
13603
14865
 
13604
- declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
13605
- import { Rectangle } from '@packages/internal/quad-tree';
13606
- export type TSerializedCollider = {
13607
- rank: number;
13608
- enabledAndVisible: boolean;
13609
- x: number;
13610
- y: number;
13611
- bboxes: {
13612
- index: number;
13613
- boundingBox: [number, number, number, number];
13614
- boundingRect?: Rectangle;
13615
- }[];
13616
- shouldCollideWithScreenEdges?: boolean;
13617
- lockedToStrategyIndex?: number;
13618
- visible?: boolean;
13619
- };
13620
- export type TSerializedColliderResponse = [number, 1 | 0, Rectangle?];
13621
- export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, watermarkPosition: any, msgId?: string): {
13622
- msgId: string;
13623
- colliders: TSerializedColliderResponse[];
13624
- debug: {
13625
- x: number;
13626
- y: number;
13627
- w: number;
13628
- h: number;
13629
- }[];
13630
- };
14866
+ declare module '@mappedin/mappedin-js/geojson/src/services/text3d/utils' {
14867
+ import type { Text } from 'troika-three-text';
14868
+ /**
14869
+ * Load font file and kick off the font processing.
14870
+ * Promise gets resolved when preloadFont finishes.
14871
+ */
14872
+ export function preloadFont(fontUrl?: string): Promise<string>;
14873
+ /**
14874
+ * Fit text to area with a given max width and height, scaling the font size down if necessary.
14875
+ */
14876
+ export function fitTextToArea(text: Text, maxWidth: number, maxHeight: number, scaleStep: number): Promise<{
14877
+ size: [width: number, height: number];
14878
+ }>;
14879
+ export function syncText(text: Text): Promise<void>;
13631
14880
  }
13632
14881
 
13633
14882
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
13634
- import { PerspectiveCamera, Vector3, Object3D, Mesh, Intersection, Object3DEventMap } from 'three';
13635
- import { Raycaster, Vector2 } from 'three';
14883
+ import type { PerspectiveCamera, Vector3, Object3D, Intersection, Object3DEventMap } from 'three';
14884
+ import { Mesh, Raycaster, Vector2 } from 'three';
13636
14885
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
13637
14886
  import { QuadTree } from '@packages/internal/quad-tree';
13638
14887
  import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';