@mappedin/mappedin-js 6.0.1-beta.22 → 6.0.1-beta.24

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.
@@ -64,92 +64,6 @@ declare module '@mappedin/mappedin-js' {
64
64
  */
65
65
  quality?: 'low' | 'medium' | 'high' | 'ultra';
66
66
  };
67
- /**
68
- * Represents all the available ambient occlusion options.
69
- */
70
- type TAmbientOcclusionOptions = {
71
- /**
72
- * Enable ambient occlusion. Only works in single buffer mode and when device supports WebGL2.
73
- *
74
- * @default false
75
- */
76
- enabled?: boolean;
77
- /**
78
- * Change the quality of ambient occlusion in the scene. Greater quality means less noise, but worse performance.
79
- *
80
- * The quality modes are as follows:
81
-
82
- *Temporal stability refers to how consistent the AO is from frame to frame - it's important for a smooth experience.*
83
- | Quality Mode | AO Samples | Denoise Samples | Denoise Radius | Best For
84
- |:---:|:---:|:---:|:---:|:---:|
85
- | Performance (Less temporal stability, a bit noisy) | 8 | 4 | 12 | Mobile, Low-end iGPUs and laptops |
86
- | Low (Temporally stable, but low-frequency noise) | 16 | 4 | 12 | High-End Mobile, iGPUs, laptops |
87
- | Medium (Temporally stable and barely any noise) | 16 | 8 | 12 | High-End Mobile, laptops, desktops |
88
- | High (Significantly sharper AO, barely any noise) | 64 | 8 | 6 | Desktops, dedicated GPUs |
89
- | Ultra (Sharp AO, No visible noise whatsoever) | 64 | 16 | 6 | Desktops, dedicated GPUs|
90
-
91
- Generally, half-res mode at "Ultra" quality is slightly slower than full-res mode at "Performance" quality, but produces significantly better results.
92
-
93
- If you wish to make entirely custom quality setup, you can manually change `aoSamples`, `denoiseSamples` and `denoiseRadius`.
94
- *
95
- * @default 'medium'
96
- */
97
- quality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';
98
- samples?: number;
99
- /**
100
- * Controls the radius/size of the ambient occlusion in world units. Should be set to how far you want the occlusion to extend from a given object.
101
- * Set it too low, and AO becomes an edge detector. Too high, and the AO becomes "soft" and might not highlight the details you want.
102
- */
103
- radius?: number;
104
- denoiseSamples?: number;
105
- denoiseRadius?: number;
106
- /**
107
- * A purely artistic control for the intensity of the AO has the effect of darkening areas with more ambient occlusion.
108
- * Useful to make the effect more pronounced. An intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,
109
- * whereas one of 5 produces heavily prominent ambient occlusion.
110
- */
111
- intensity?: number;
112
- denoiseIterations?: number;
113
- renderMode?: number;
114
- /**
115
- * The color of the ambient occlusion. By default, it is black, but it can be changed to any color to offer a crude approximation of global illumination.
116
- * Recommended in scenes where bounced light has a uniform "color", for instance a scene that is predominantly lit by a blue sky.
117
- * The color is expected to be in the sRGB color space, and is automatically converted to linear space for you. Keep the color pretty dark for sensible results.
118
- *
119
- * Color formats:\
120
- * RGB String: `rgb(255, 0, 0)` or `rgb(100%, 0%, 0%)`\
121
- * HSL String: `hsl(0, 100%, 50%)`\
122
- * X11 color name - all 140 color names are supported. Note the lack of CamelCase in the name: `skyblue`
123
- */
124
- color?: string;
125
- /**
126
- * Should be automatically set to the correct value. If you are getting washed out colors, try setting `gammaCorrection` to false, and if you are getting dark colors, try setting it to true.
127
- */
128
- gammaCorrection?: boolean;
129
- logarithmicDepthBuffer?: boolean;
130
- /**
131
- * When screenSpaceRadius is set to true, the `aoRadius` parameter represents the size of the ambient occlusion effect in pixels (recommended to be set between 16 and 64).
132
- * The `distanceFalloff` parameter becomes a ratio, representing the percent of the screen space radius at which the AO should fade away - it should be set to 0.2 in most cases,
133
- * but it accepts any value between 0 and 1 (technically even higher than 1, though that is not recommended).
134
- */
135
- screenSpaceRadius?: boolean;
136
- /**
137
- * Use half-resolution" mode for performance-critical applications. This will cause the AO to be calculated at half the resolution of the screen, and then upscaled to the full resolution.
138
- * This is a great way to get a performance boost (generally 2x-4x) at the cost of some quality (the AO will lack fine details and temporal stability will be slightly reduced).
139
- * @default 'full'
140
- */
141
- resolution?: 'half' | 'full';
142
- /**
143
- * The half `aoResolution` mode uses depth-aware upscaling by default.
144
- * The AO effect looks bad without depth-aware upscaling, so it is not recommended to disable it.
145
- * However, if performance is truly that critical, you can do so by setting `depthAwareUpsampling` to false.
146
- */
147
- depthAwareUpsampling?: boolean;
148
- /**
149
- * It is recommended to not change this value, otherwise rendering issues may occur.
150
- */
151
- autoRenderBeauty?: boolean;
152
- };
153
67
  /**
154
68
  * @interface
155
69
  * Options for the watermark.
@@ -290,6 +204,15 @@ declare module '@mappedin/mappedin-js' {
290
204
  */
291
205
  wallTopColor?: string;
292
206
  };
207
+ /**
208
+ * @experimental
209
+ * @internal
210
+ */
211
+ multiFloorView?: {
212
+ enabled?: boolean;
213
+ floorHeight?: number;
214
+ updateCameraElevationOnFloorChange?: boolean;
215
+ };
293
216
  };
294
217
  /**
295
218
  * @internal
@@ -362,19 +285,24 @@ declare module '@mappedin/mappedin-js' {
362
285
  * @experimental
363
286
  */
364
287
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
365
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
366
288
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
289
+ /**
290
+ * @internal
291
+ * @deprecated Use {@link show3dMap} instead.
292
+ */
293
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
367
294
  export { parseMVF, unzipMVF, enableTestMode };
368
- export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
295
+ export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
369
296
  export type * from 'geojson';
370
297
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/mappedin-js/mappedin-js/src/types';
371
298
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
372
299
  export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
373
300
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
374
301
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
375
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
302
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
376
303
  export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
377
304
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
305
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
378
306
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
379
307
  }
380
308
 
@@ -382,13 +310,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
382
310
  import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
383
311
  import { PubSub } from '@packages/internal/common';
384
312
  import type { TSearchOptions } from '@packages/internal/mvf-utils';
385
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
313
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node, Facade, Area } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
386
314
  import type EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
387
315
  import type EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
388
316
  import type EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
389
317
  import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
390
318
  import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
391
319
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
320
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
392
321
  /**
393
322
  * A WeakMap to associate {@link MapData} instances with their internal representation.
394
323
  * We need a way to get the internal data object from the API
@@ -426,6 +355,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
426
355
  * console.log(suggestions);
427
356
  */
428
357
  Search: Search;
358
+ Query: Query;
429
359
  /**
430
360
  * Constructs a new instance of {@link MapData}.
431
361
  *
@@ -504,6 +434,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
504
434
  * const floorStacks = mapData.getByType('floor-stack');
505
435
  */
506
436
  getByType(type: 'floor-stack'): FloorStack[];
437
+ /**
438
+ * @returns The facades ({@link Facade}) within the map.
439
+ * @example
440
+ * const facades = mapData.getByType('facade');
441
+ */
442
+ getByType(type: 'facade'): Facade[];
507
443
  /**
508
444
  * @returns The connections ({@link Connection}) on the map.
509
445
  * @example
@@ -528,6 +464,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
528
464
  * const annotations = mapData.getByType('annotation');
529
465
  */
530
466
  getByType(type: 'annotation'): Annotation[];
467
+ /**
468
+ * @returns The areas ({@link Area}) on the map.
469
+ * @example
470
+ * const areas = mapData.getByType('area');
471
+ */
472
+ getByType(type: 'area'): Area[];
531
473
  /**
532
474
  * @returns The nodes ({@link Node}) on the map.
533
475
  * @example
@@ -561,7 +503,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
561
503
  * @example
562
504
  * const space = mapData.getById('space', 'space-id');
563
505
  */
564
- getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
506
+ getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'facade' ? Facade | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'area' ? Area | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
565
507
  getById(type: string, id: string): object | undefined;
566
508
  /**
567
509
  * Changes the language of the map data.
@@ -611,7 +553,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
611
553
  * @param to The destination point.
612
554
  * @returns The distance between the start and destination points in meters.
613
555
  */
614
- getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
556
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area): number;
615
557
  /**
616
558
  * Creates a backup of the map data including language packs.
617
559
  * @internal
@@ -779,6 +721,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
779
721
 
780
722
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
781
723
  import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
724
+ import Area from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area';
782
725
  import Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
783
726
  import Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
784
727
  import Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
@@ -790,8 +733,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
790
733
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
791
734
  import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
792
735
  import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
736
+ import Facade from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade';
793
737
  import type { MapDataRecords } from '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation';
794
- import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language } from '@mappedin/mvf';
738
+ import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language, AreaCollection } from '@mappedin/mvf';
795
739
  import { AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
796
740
  import EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
797
741
  import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
@@ -803,6 +747,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
803
747
  import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
804
748
  import { type Directions, DirectionsInternal } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
805
749
  import { type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src';
750
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
806
751
  /**
807
752
  * Internal class representing detailed map data.
808
753
  *
@@ -816,6 +761,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
816
761
  }> {
817
762
  #private;
818
763
  Analytics: AnalyticsInternal;
764
+ Query: Query;
819
765
  /**
820
766
  * Represents the parsed Mappedin Venue Format (MVF) data.
821
767
  */
@@ -844,11 +790,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
844
790
  spacesById: MapDataRecords['spacesById'];
845
791
  floorsById: MapDataRecords['floorsById'];
846
792
  floorStacksById: MapDataRecords['floorStacksById'];
793
+ facadesById: MapDataRecords['facadesById'];
794
+ facadesBySpaceId: MapDataRecords['facadesBySpaceId'];
847
795
  connectionsById: MapDataRecords['connectionsById'];
848
796
  objectsById: MapDataRecords['objectsById'];
849
797
  doorsById: MapDataRecords['doorsById'];
850
798
  pointsOfInterestById: MapDataRecords['poisById'];
851
799
  annotationsById: MapDataRecords['annotationsById'];
800
+ areasById: MapDataRecords['areasById'];
852
801
  locationsById: MapDataRecords['locationsById'];
853
802
  categoriesById: MapDataRecords['categoriesById'];
854
803
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
@@ -863,6 +812,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
863
812
  mvfSpacesById: MapDataRecords['mvfSpacesById'];
864
813
  mvfFloorsById: MapDataRecords['mvfFloorsById'];
865
814
  mvfFloorStacksById: MapDataRecords['mvfFloorStacksById'];
815
+ mvfAreasById: MapDataRecords['mvfAreasById'];
816
+ mvfNodesByFloorId: MapDataRecords['mvfNodesByFloorId'];
817
+ mvfSpacesByFloorId: MapDataRecords['mvfSpacesByFloorId'];
818
+ mvfPoisByFloorId: MapDataRecords['mvfPoisByFloorId'];
819
+ mvfEntrancesByFloorId: MapDataRecords['mvfEntrancesByFloorId'];
820
+ mvfAnnotationsByFloorId: MapDataRecords['mvfAnnotationsByFloorId'];
866
821
  localePacksUrls: LocalePackUrls;
867
822
  currentLanguage?: Language;
868
823
  /**
@@ -916,6 +871,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
916
871
  */
917
872
  get floors(): Floor[];
918
873
  get floorStacks(): FloorStack[];
874
+ get facades(): Facade[];
919
875
  /**
920
876
  * Retrieves all doors in the map.
921
877
  *
@@ -936,6 +892,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
936
892
  * @returns {Annotation[]} An array of Annotation objects.
937
893
  */
938
894
  get annotations(): Annotation[];
895
+ get areas(): Area[];
939
896
  /**
940
897
  * Retrieves all nodes in the map.
941
898
  *
@@ -946,6 +903,21 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
946
903
  get categories(): EnterpriseCategory[];
947
904
  get mvfFloors(): MVFFloor[];
948
905
  get mvfFloorStacks(): MVFFloorStack[];
906
+ getByType(type: string): object[];
907
+ getByType(type: 'space'): Space[];
908
+ getByType(type: 'area'): Area[];
909
+ getByType(type: 'door'): Door[];
910
+ getByType(type: 'floor'): Floor[];
911
+ getByType(type: 'floor-stack'): FloorStack[];
912
+ getByType(type: 'connection'): Connection[];
913
+ getByType(type: 'object'): MapObject[];
914
+ getByType(type: 'point-of-interest'): PointOfInterest[];
915
+ getByType(type: 'annotation'): Annotation[];
916
+ getByType(type: 'node'): Node[];
917
+ getByType(type: 'enterprise-location'): EnterpriseLocation[];
918
+ getByType(type: 'enterprise-category'): EnterpriseCategory[];
919
+ getByType(type: 'enterprise-venue'): EnterpriseVenue | undefined;
920
+ getByType(type: 'facade'): Facade[];
949
921
  /**
950
922
  * Retrieves an object by its type and ID.
951
923
  *
@@ -953,17 +925,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
953
925
  * @param id The ID of the object.
954
926
  * @returns {Space | Door | Floor | Connection | MapObject | undefined} The requested object, or undefined if not found.
955
927
  */
956
- getById(type: 'node', id: string): Node | undefined;
957
- getById(type: 'space', id: string): Space | undefined;
958
- getById(type: 'door', id: string): Door | undefined;
959
- getById(type: 'floor', id: string): Floor | undefined;
960
- getById(type: 'floor-stack', id: string): FloorStack | undefined;
961
- getById(type: 'connection', id: string): Connection | undefined;
962
- getById(type: 'object', id: string): MapObject | undefined;
963
- getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
964
- getById(type: 'annotation', id: string): Annotation | undefined;
965
- getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
966
- getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
928
+ getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : T extends 'area' ? Area | undefined : T extends 'facade' ? Facade | undefined : undefined;
929
+ getById(type: string, id: string): object | undefined;
967
930
  getMapDataById(id: string): Places | undefined;
968
931
  /**
969
932
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
@@ -980,6 +943,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
980
943
  getMVFFeatureById(type: 'connection', id: string): MVFConnection | undefined;
981
944
  getMVFFeatureById(type: 'entrance', id: string): EntranceCollection['features'][number] | undefined;
982
945
  getMVFFeatureById(type: 'annotation', id: string): AnnotationCollection['features'][number] | undefined;
946
+ getMVFFeatureById(type: 'area', id: string): AreaCollection['features'][number] | undefined;
983
947
  getMVFFeatureById(type: string, id: string): object | undefined;
984
948
  getMVFFeatureByNodeId(type: 'connection', id: string): MVFConnection | undefined;
985
949
  /**
@@ -996,7 +960,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
996
960
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions & {
997
961
  multiDestination?: true;
998
962
  }) => Directions | Directions[] | undefined;
999
- getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
963
+ getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation | Area): number;
1000
964
  toJSONBundle({ downloadLanguagePacks, }?: {
1001
965
  downloadLanguagePacks?: boolean;
1002
966
  }): Promise<THydrateMapDataBundle>;
@@ -1010,7 +974,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1010
974
  */
1011
975
  destroy(): void;
1012
976
  }
1013
- export { Node, MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
977
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1014
978
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
1015
979
  export type { Places };
1016
980
  }
@@ -1090,9 +1054,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1090
1054
  */
1091
1055
  Outdoor: Outdoor;
1092
1056
  /**
1093
- * Controls for the stacked maps.
1057
+ * Controls for Stacked Maps.
1094
1058
  */
1095
1059
  get StackedMaps(): StackedMaps;
1060
+ /**
1061
+ * @internal
1062
+ * @experimental
1063
+ */
1064
+ get DynamicFocus(): import("./api-geojson/dynamic-focus").DynamicFocus;
1096
1065
  /**
1097
1066
  * @internal
1098
1067
  */
@@ -1411,7 +1380,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
1411
1380
 
1412
1381
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1413
1382
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1414
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1383
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1415
1384
  import type { Label, Marker, Model, Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1416
1385
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1417
1386
  import type { InsetPaddingOption, Position } from '@mappedin/core-sdk';
@@ -1779,7 +1748,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1779
1748
  /**
1780
1749
  * A map element that can be focused on by the camera.
1781
1750
  */
1782
- export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node | EnterpriseLocation
1751
+ export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation | Facade
1783
1752
  /**
1784
1753
  * @experimental
1785
1754
  */
@@ -1814,7 +1783,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1814
1783
  /**
1815
1784
  * Defines the target for navigation operations.
1816
1785
  */
1817
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node;
1786
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
1818
1787
  /**
1819
1788
  * Defines the special zone for navigation operations.
1820
1789
  */
@@ -2054,6 +2023,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2054
2023
  *
2055
2024
  * | Value | Description |
2056
2025
  * |--------|-----------------------------------------------------------------------------------------------------------------------------------------|
2026
+ * | low | Colliders with this ranking have a low visibility priority and will be hidden in favor of higher-ranked colliders in crowded areas. |
2057
2027
  * | medium | Colliders with this ranking have a standard visibility priority and may be hidden in favor of higher-ranked colliders in crowded areas. |
2058
2028
  * | high | These colliders are given higher visibility priority than 'medium' priority. |
2059
2029
  * | always-visible | Colliders with this ranking will not be hidden, ensuring their constant visibility regardless of crowding. |
@@ -2678,7 +2648,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2678
2648
  import { type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
2679
2649
  import type { Directions, GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
2680
2650
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
2681
- import type { FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2651
+ import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2682
2652
  import { Path, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
2683
2653
  import type { RendererCore } from '@mappedin/core-sdk';
2684
2654
  /**
@@ -2873,6 +2843,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
2873
2843
  * The current list of floor stacks along the navigation paths.
2874
2844
  */
2875
2845
  get floorStacks(): FloorStack[];
2846
+ /**
2847
+ * The current list of floors along the navigation paths.
2848
+ */
2849
+ get floors(): Floor[];
2876
2850
  /**
2877
2851
  * Sets the active path by index.
2878
2852
  */
@@ -2924,6 +2898,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search' {
2924
2898
  export { Search } from '@mappedin/mappedin-js/mappedin-js/src/search/external';
2925
2899
  }
2926
2900
 
2901
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query' {
2902
+ export { Query } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
2903
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
2904
+ }
2905
+
2927
2906
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
2928
2907
  export { Analytics, AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2929
2908
  export type { AnalyticsUpdateOptions, AnalyticState, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
@@ -3194,6 +3173,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location'
3194
3173
  mvfData: MVFEnterpriseLocation;
3195
3174
  categoryIds: string[];
3196
3175
  locationInstances?: EnterpriseLocation[];
3176
+ parentId?: string;
3197
3177
  });
3198
3178
  get categories(): EnterpriseCategory[];
3199
3179
  get coordinates(): Coordinate[];
@@ -3227,7 +3207,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
3227
3207
  * It can be accessed using the {@link MapData.getByType()} method as shown below.
3228
3208
  *
3229
3209
  * ```typescript
3230
- * const venue = mapData.getByType('venue');
3210
+ * const venue = mapData.getByType('enterprise-venue');
3231
3211
  * ```
3232
3212
  *
3233
3213
  * Refer to the [EnterpriseVenue Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-venue) for more information.
@@ -3483,92 +3463,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3483
3463
  */
3484
3464
  quality?: 'low' | 'medium' | 'high' | 'ultra';
3485
3465
  };
3486
- /**
3487
- * Represents all the available ambient occlusion options.
3488
- */
3489
- type TAmbientOcclusionOptions = {
3490
- /**
3491
- * Enable ambient occlusion. Only works in single buffer mode and when device supports WebGL2.
3492
- *
3493
- * @default false
3494
- */
3495
- enabled?: boolean;
3496
- /**
3497
- * Change the quality of ambient occlusion in the scene. Greater quality means less noise, but worse performance.
3498
- *
3499
- * The quality modes are as follows:
3500
-
3501
- *Temporal stability refers to how consistent the AO is from frame to frame - it's important for a smooth experience.*
3502
- | Quality Mode | AO Samples | Denoise Samples | Denoise Radius | Best For
3503
- |:---:|:---:|:---:|:---:|:---:|
3504
- | Performance (Less temporal stability, a bit noisy) | 8 | 4 | 12 | Mobile, Low-end iGPUs and laptops |
3505
- | Low (Temporally stable, but low-frequency noise) | 16 | 4 | 12 | High-End Mobile, iGPUs, laptops |
3506
- | Medium (Temporally stable and barely any noise) | 16 | 8 | 12 | High-End Mobile, laptops, desktops |
3507
- | High (Significantly sharper AO, barely any noise) | 64 | 8 | 6 | Desktops, dedicated GPUs |
3508
- | Ultra (Sharp AO, No visible noise whatsoever) | 64 | 16 | 6 | Desktops, dedicated GPUs|
3509
-
3510
- Generally, half-res mode at "Ultra" quality is slightly slower than full-res mode at "Performance" quality, but produces significantly better results.
3511
-
3512
- If you wish to make entirely custom quality setup, you can manually change `aoSamples`, `denoiseSamples` and `denoiseRadius`.
3513
- *
3514
- * @default 'medium'
3515
- */
3516
- quality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';
3517
- samples?: number;
3518
- /**
3519
- * Controls the radius/size of the ambient occlusion in world units. Should be set to how far you want the occlusion to extend from a given object.
3520
- * Set it too low, and AO becomes an edge detector. Too high, and the AO becomes "soft" and might not highlight the details you want.
3521
- */
3522
- radius?: number;
3523
- denoiseSamples?: number;
3524
- denoiseRadius?: number;
3525
- /**
3526
- * A purely artistic control for the intensity of the AO has the effect of darkening areas with more ambient occlusion.
3527
- * Useful to make the effect more pronounced. An intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,
3528
- * whereas one of 5 produces heavily prominent ambient occlusion.
3529
- */
3530
- intensity?: number;
3531
- denoiseIterations?: number;
3532
- renderMode?: number;
3533
- /**
3534
- * The color of the ambient occlusion. By default, it is black, but it can be changed to any color to offer a crude approximation of global illumination.
3535
- * Recommended in scenes where bounced light has a uniform "color", for instance a scene that is predominantly lit by a blue sky.
3536
- * The color is expected to be in the sRGB color space, and is automatically converted to linear space for you. Keep the color pretty dark for sensible results.
3537
- *
3538
- * Color formats:\
3539
- * RGB String: `rgb(255, 0, 0)` or `rgb(100%, 0%, 0%)`\
3540
- * HSL String: `hsl(0, 100%, 50%)`\
3541
- * X11 color name - all 140 color names are supported. Note the lack of CamelCase in the name: `skyblue`
3542
- */
3543
- color?: string;
3544
- /**
3545
- * Should be automatically set to the correct value. If you are getting washed out colors, try setting `gammaCorrection` to false, and if you are getting dark colors, try setting it to true.
3546
- */
3547
- gammaCorrection?: boolean;
3548
- logarithmicDepthBuffer?: boolean;
3549
- /**
3550
- * When screenSpaceRadius is set to true, the `aoRadius` parameter represents the size of the ambient occlusion effect in pixels (recommended to be set between 16 and 64).
3551
- * The `distanceFalloff` parameter becomes a ratio, representing the percent of the screen space radius at which the AO should fade away - it should be set to 0.2 in most cases,
3552
- * but it accepts any value between 0 and 1 (technically even higher than 1, though that is not recommended).
3553
- */
3554
- screenSpaceRadius?: boolean;
3555
- /**
3556
- * Use half-resolution" mode for performance-critical applications. This will cause the AO to be calculated at half the resolution of the screen, and then upscaled to the full resolution.
3557
- * This is a great way to get a performance boost (generally 2x-4x) at the cost of some quality (the AO will lack fine details and temporal stability will be slightly reduced).
3558
- * @default 'full'
3559
- */
3560
- resolution?: 'half' | 'full';
3561
- /**
3562
- * The half `aoResolution` mode uses depth-aware upscaling by default.
3563
- * The AO effect looks bad without depth-aware upscaling, so it is not recommended to disable it.
3564
- * However, if performance is truly that critical, you can do so by setting `depthAwareUpsampling` to false.
3565
- */
3566
- depthAwareUpsampling?: boolean;
3567
- /**
3568
- * It is recommended to not change this value, otherwise rendering issues may occur.
3569
- */
3570
- autoRenderBeauty?: boolean;
3571
- };
3572
3466
  /**
3573
3467
  * @interface
3574
3468
  * Options for the watermark.
@@ -3709,6 +3603,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3709
3603
  */
3710
3604
  wallTopColor?: string;
3711
3605
  };
3606
+ /**
3607
+ * @experimental
3608
+ * @internal
3609
+ */
3610
+ multiFloorView?: {
3611
+ enabled?: boolean;
3612
+ floorHeight?: number;
3613
+ updateCameraElevationOnFloorChange?: boolean;
3614
+ };
3712
3615
  };
3713
3616
  /**
3714
3617
  * @internal
@@ -3781,19 +3684,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3781
3684
  * @experimental
3782
3685
  */
3783
3686
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
3784
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3785
3687
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3688
+ /**
3689
+ * @internal
3690
+ * @deprecated Use {@link show3dMap} instead.
3691
+ */
3692
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3786
3693
  export { parseMVF, unzipMVF, enableTestMode };
3787
- export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
3694
+ export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
3788
3695
  export type * from 'geojson';
3789
3696
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/mappedin-js/mappedin-js/src/types';
3790
3697
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3791
3698
  export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3792
3699
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3793
3700
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3794
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3701
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3795
3702
  export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3796
3703
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3704
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
3797
3705
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3798
3706
  }
3799
3707
 
@@ -3884,6 +3792,93 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
3884
3792
  export default Node;
3885
3793
  }
3886
3794
 
3795
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area' {
3796
+ import type { AreaCollection } from '@mappedin/mvf';
3797
+ import { Coordinate, type MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3798
+ import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
3799
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
3800
+ /**
3801
+ * An Area represents some grouping of multiple pieces of geometry, not
3802
+ * necessarily bounded by walls or any other physical feature of the map.
3803
+ *
3804
+ * Areas are currently in a preview state, and may have changes to existing
3805
+ * functionality or new features added in the future.
3806
+ */
3807
+ class Area extends BaseMapData {
3808
+ #private;
3809
+ /**
3810
+ * @internal
3811
+ */
3812
+ static readonly __type = "area";
3813
+ /**
3814
+ * @internal
3815
+ */
3816
+ readonly __type = "area";
3817
+ /**
3818
+ * Checks if the provided instance is of type Area.
3819
+ *
3820
+ * @param instance The instance to check.
3821
+ * @returns {boolean} True if the instance is a Area, false otherwise.
3822
+ */
3823
+ static is(instance: object): instance is Area;
3824
+ /**
3825
+ * @internal
3826
+ */
3827
+ constructor(data: MapDataInternal, options: {
3828
+ floorId: string;
3829
+ mvfData: AreaCollection['features'][number];
3830
+ });
3831
+ /**
3832
+ * Gets the name of the area.
3833
+ *
3834
+ * @returns {string} The name of the area.
3835
+ */
3836
+ get name(): string;
3837
+ /**
3838
+ * Gets the external identifier of the area.
3839
+ *
3840
+ * @returns {string} The external ID of the area, or an empty string if no external ID exists.
3841
+ */
3842
+ get externalId(): string;
3843
+ /**
3844
+ * Gets the description of the area.
3845
+ *
3846
+ * @returns {string} The description of the area, or an empty string if no description exists.
3847
+ */
3848
+ get description(): string;
3849
+ /**
3850
+ * Gets the center {@link Coordinate} of the area.
3851
+ *
3852
+ * @returns {Coordinate} The area's center coordinate.
3853
+ */
3854
+ get center(): Coordinate;
3855
+ /**
3856
+ * Gets the {@link Floor} object associated with the area.
3857
+ *
3858
+ * @returns {Floor} The floor object.
3859
+ * @throws Will throw an error if the floor is not found.
3860
+ */
3861
+ get floor(): Floor;
3862
+ /**
3863
+ * Serializes the space data to JSON.
3864
+ *
3865
+ * @returns An object representing the space.
3866
+ */
3867
+ toJSON(): {
3868
+ id: string;
3869
+ name: string;
3870
+ floor: string;
3871
+ };
3872
+ /**
3873
+ * Cleans up resources used by the instance.
3874
+ *
3875
+ * @internal
3876
+ */
3877
+ destroy(): void;
3878
+ }
3879
+ export default Area;
3880
+ }
3881
+
3887
3882
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
3888
3883
  import type { EntranceCollection } from '@mappedin/mvf';
3889
3884
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
@@ -4829,7 +4824,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
4829
4824
 
4830
4825
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack' {
4831
4826
  import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
4832
- import type { MapDataInternal, Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4827
+ import type { MapDataInternal, Floor, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4833
4828
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4834
4829
  /**
4835
4830
  * A class representing floor stack data within the map.
@@ -4858,6 +4853,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
4858
4853
  */
4859
4854
  constructor(data: MapDataInternal, options: {
4860
4855
  mvfData: MVFFloorStack;
4856
+ facadeId?: string;
4861
4857
  });
4862
4858
  /**
4863
4859
  * Gets the type of FloorStack.
@@ -4878,7 +4874,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
4878
4874
  *
4879
4875
  * @returns {Floor[]} An array of Floor objects in this FloorStack.
4880
4876
  */
4881
- get floors(): Floor[];
4877
+ get floors(): [Floor, ...Floor[]];
4878
+ /**
4879
+ * Get the default floor for this floor stack
4880
+ */
4881
+ get defaultFloor(): Floor;
4882
+ /**
4883
+ * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
4884
+ */
4885
+ get facade(): Facade | undefined;
4882
4886
  /**
4883
4887
  * Serializes the FloorStack data to JSON.
4884
4888
  *
@@ -4900,20 +4904,58 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
4900
4904
  export default FloorStack;
4901
4905
  }
4902
4906
 
4907
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade' {
4908
+ import type { Space, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4909
+ import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4910
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4911
+ import type { Facade as MVFFacade } from '@mappedin/mvf';
4912
+ /**
4913
+ * A Facade is a collection of spaces that make up the exterior representation of a Floor Stack ({@link FloorStack}).
4914
+ */
4915
+ class Facade extends BaseMapData {
4916
+ #private;
4917
+ static readonly __type = "facade";
4918
+ readonly __type = "facade";
4919
+ /**
4920
+ * Checks if the provided instance is of type Floor.
4921
+ *
4922
+ * @param instance The instance to check.
4923
+ * @returns {boolean} True if the instance is a Floor, false otherwise.
4924
+ */
4925
+ static is(instance: object): instance is Facade;
4926
+ /** @internal */
4927
+ constructor(data: MapDataInternal, options: {
4928
+ mvfData: MVFFacade;
4929
+ floorStackId: string;
4930
+ });
4931
+ /**
4932
+ * Gets the floor stack that this Facade represents.
4933
+ */
4934
+ get floorStack(): import("./floor-stack").default;
4935
+ /**
4936
+ * Gets the collection of spaces that make up this Facade.
4937
+ */
4938
+ get spaces(): Space[];
4939
+ /**
4940
+ * Gets the center {@link Coordinate} of the Facade.
4941
+ */
4942
+ get center(): Coordinate;
4943
+ }
4944
+ export default Facade;
4945
+ }
4946
+
4903
4947
  declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4904
- import type { Feature, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, Point, SpaceCollection, SpaceProperties, Connection as MVFConnection, EntranceCollection, AnnotationCollection, ParsedMVF, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseVenue as MVFEnterpriseVenue } from '@mappedin/mvf';
4948
+ import type { AnnotationCollection, EntranceCollection, Feature, FeatureCollection, Connection as MVFConnection, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseVenue as MVFEnterpriseVenue, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, ParsedMVF, Point, SpaceCollection, SpaceProperties, AreaCollection, AreaId, EnterpriseLocationInstance } from '@mappedin/mvf';
4905
4949
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4906
- import { Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4907
- import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
4908
- import EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
4909
- import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
4910
- import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
4950
+ import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4911
4951
  export type MapDataRecords = {
4912
4952
  spacesById: Record<string, Space>;
4913
4953
  nodesById: Record<string, Node>;
4914
4954
  objectsById: Record<string, MapObject>;
4915
4955
  floorsById: Record<string, Floor>;
4916
4956
  floorStacksById: Record<string, FloorStack>;
4957
+ facadesById: Record<string, Facade>;
4958
+ facadesBySpaceId: Record<string, Facade>;
4917
4959
  connectionsById: Record<string, Connection>;
4918
4960
  doorsById: Record<string, Door>;
4919
4961
  doorsByNodeId: Record<string, Door>;
@@ -4922,6 +4964,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4922
4964
  locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
4923
4965
  categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
4924
4966
  locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
4967
+ areasById: Record<AreaId, Area>;
4925
4968
  venue: MVFEnterpriseVenue;
4926
4969
  spaceIdsByDestinationNodeId: Record<string, string[]>;
4927
4970
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
@@ -4939,9 +4982,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4939
4982
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
4940
4983
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
4941
4984
  mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
4985
+ mvfNodesByFloorId: {
4986
+ [floorId: string]: NodeCollection['features'][number][];
4987
+ };
4988
+ mvfSpacesByFloorId: {
4989
+ [floorId: string]: SpaceCollection['features'][number][];
4990
+ };
4991
+ mvfPoisByFloorId: {
4992
+ [floorId: string]: FeatureCollection<Point, SpaceProperties>['features'][number][];
4993
+ };
4994
+ mvfEntrancesByFloorId: {
4995
+ [floorId: string]: EntranceCollection['features'][number][];
4996
+ };
4997
+ mvfAnnotationsByFloorId: {
4998
+ [floorId: string]: AnnotationCollection['features'][number][];
4999
+ };
5000
+ mvfAreasById: Record<AreaId, AreaCollection['features'][number]>;
4942
5001
  };
4943
5002
  export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "mvfFloorsById">;
4944
- export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById">;
5003
+ export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById" | "facadesById" | "facadesBySpaceId">;
5004
+ export const processMVFAreas: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "areasById" | "mvfAreasById">;
4945
5005
  /**
4946
5006
  * @internal
4947
5007
  */
@@ -4951,6 +5011,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4951
5011
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
4952
5012
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
4953
5013
  locationsById: Record<string, EnterpriseLocation>;
5014
+ locationInstancesById: Record<string, EnterpriseLocationInstance>;
4954
5015
  categoriesById: Record<string, EnterpriseCategory>;
4955
5016
  venue: MVFEnterpriseVenue;
4956
5017
  };
@@ -4963,11 +5024,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4963
5024
  objectsById: Record<string, MapObject>;
4964
5025
  floorsById: Record<string, Floor>;
4965
5026
  floorStacksById: Record<string, FloorStack>;
5027
+ facadesById: Record<string, Facade>;
5028
+ facadesBySpaceId: Record<string, Facade>;
4966
5029
  connectionsById: Record<string, Connection>;
4967
5030
  doorsById: Record<string, Door>;
4968
5031
  doorsByNodeId: Record<string, Door>;
4969
5032
  poisById: Record<string, PointOfInterest>;
4970
5033
  annotationsById: Record<string, Annotation>;
5034
+ areasById: Record<string, Area>;
4971
5035
  spaceIdsByDestinationNodeId: Record<string, string[]>;
4972
5036
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
4973
5037
  obstructionIdByEntranceId: Record<string, string>;
@@ -4985,10 +5049,31 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
4985
5049
  geometry: Point;
4986
5050
  properties: import("@mappedin/mvf").AnnotationProperties;
4987
5051
  }>;
5052
+ mvfNodesByFloorId: {
5053
+ [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5054
+ };
5055
+ mvfSpacesByFloorId: {
5056
+ [floorId: string]: Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>[];
5057
+ };
5058
+ mvfPoisByFloorId: {
5059
+ [floorId: string]: Feature<Point, SpaceProperties>[];
5060
+ };
5061
+ mvfAreasById: Record<string, import("@mappedin/mvf").Area>;
5062
+ mvfEntrancesByFloorId: {
5063
+ [floorId: string]: Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>[];
5064
+ };
5065
+ mvfAnnotationsByFloorId: {
5066
+ [floorId: string]: {
5067
+ type: import("@mappedin/mvf").FeatureType;
5068
+ geometry: Point;
5069
+ properties: import("@mappedin/mvf").AnnotationProperties;
5070
+ }[];
5071
+ };
4988
5072
  };
4989
5073
  }
4990
5074
 
4991
5075
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
5076
+ import type Area from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area';
4992
5077
  import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
4993
5078
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
4994
5079
  import type Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
@@ -5004,7 +5089,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
5004
5089
  /**
5005
5090
  * Places are the main objects that can be searched for.
5006
5091
  */
5007
- export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation;
5092
+ export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
5008
5093
  export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
5009
5094
  export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
5010
5095
  export type LanguagePack = {
@@ -5119,6 +5204,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5119
5204
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
5120
5205
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
5121
5206
  import { z } from 'zod';
5207
+ import { type PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5122
5208
  /**
5123
5209
  * State reprsenting a Marker
5124
5210
  */
@@ -5228,6 +5314,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5228
5314
  options: Required<AddMarkerOptions>;
5229
5315
  projection: Vector2;
5230
5316
  enabled: boolean;
5317
+ offscreen: boolean;
5231
5318
  activeStrategyIndex: number;
5232
5319
  strategyIndex: number;
5233
5320
  activeBoundingBox: {
@@ -5245,7 +5332,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5245
5332
  };
5246
5333
  dirty: boolean;
5247
5334
  collisionDirty: boolean;
5248
- visibilityNeedsUpdate: boolean;
5335
+ visibilityNeedsUpdate: 'show' | 'hide' | false;
5249
5336
  constructor(contentHtml: string, options?: AddMarkerOptions);
5250
5337
  updateDimensions(width?: number, height?: number): void;
5251
5338
  visible: boolean;
@@ -5256,16 +5343,13 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5256
5343
  name: MarkerAnchor;
5257
5344
  getBoundingBox: () => number[];
5258
5345
  }[];
5259
- toJSON(): {
5346
+ toPackedMessage(lockToCurrentStrategy?: boolean): {
5260
5347
  x: number;
5261
5348
  y: number;
5262
5349
  enabled: boolean;
5263
- id: string | number;
5264
5350
  rank: number;
5265
- bboxes: {
5266
- index: number;
5267
- boundingBox: any;
5268
- }[];
5351
+ bboxes: PackedBBoxes;
5352
+ lockedToStrategyIndex: number;
5269
5353
  shouldCollideWithScreenEdges: boolean;
5270
5354
  };
5271
5355
  destroy(): void;
@@ -5489,6 +5573,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5489
5573
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
5490
5574
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src';
5491
5575
  import { z } from 'zod';
5576
+ import type { PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5492
5577
  export const addLabelOptionsSchema: z.ZodObject<{
5493
5578
  rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
5494
5579
  interactive: z.ZodOptional<z.ZodBoolean>;
@@ -5935,7 +6020,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5935
6020
  newStyle: TStyle;
5936
6021
  static testId: number;
5937
6022
  opacity: number;
5938
- visibilityNeedsUpdate: boolean;
6023
+ visibilityNeedsUpdate: 'show' | 'hide' | false;
5939
6024
  activeStrategyIndex: number;
5940
6025
  text: string;
5941
6026
  style: TStyle;
@@ -5945,6 +6030,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5945
6030
  options: LabelOptions;
5946
6031
  visible: boolean;
5947
6032
  enabled: boolean;
6033
+ offscreen: boolean;
5948
6034
  activeBoundingBox: {
5949
6035
  x: number;
5950
6036
  y: number;
@@ -5968,21 +6054,20 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5968
6054
  setEntity(): void;
5969
6055
  constructor(text: string, options: AddLabelOptions, state: RendererState);
5970
6056
  calculateMarkerSize(): void;
6057
+ get lowPriorityStrategyIndex(): 3 | -1;
5971
6058
  get strategies(): any[];
6059
+ animate: boolean;
5972
6060
  onStrategySelected: (strategyIndex: any) => void;
5973
6061
  updatePosition(): void;
5974
6062
  disable(): void;
5975
- toJSON(): {
6063
+ toPackedMessage(lockToCurrentStrategy?: boolean): {
5976
6064
  x: number;
5977
6065
  y: number;
5978
6066
  enabled: boolean;
5979
- id: string;
5980
6067
  rank: number;
5981
- bboxes: {
5982
- index: number;
5983
- boundingBox: any;
5984
- }[];
6068
+ bboxes: PackedBBoxes;
5985
6069
  shouldCollideWithScreenEdges: boolean;
6070
+ lockedToStrategyIndex: number;
5986
6071
  };
5987
6072
  destroy(): void;
5988
6073
  }
@@ -6107,6 +6192,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
6107
6192
  * altitude of the geometry group
6108
6193
  */
6109
6194
  altitude?: number;
6195
+ /**
6196
+ * height of the geometry group
6197
+ */
6198
+ height?: number;
6110
6199
  };
6111
6200
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
6112
6201
  export class GeometryGroupObject3D extends Object3D {
@@ -6142,7 +6231,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types/geometry' {
6142
6231
  }
6143
6232
 
6144
6233
  declare module '@mappedin/mappedin-js/geojson/src/types' {
6145
- import { Mesh, Object3D, InstancedMesh } from 'three';
6234
+ import { Mesh, Object3D, InstancedMesh, Camera } from 'three';
6146
6235
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
6147
6236
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
6148
6237
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
@@ -6156,6 +6245,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6156
6245
  import type { ShapeState } from '@mappedin/mappedin-js/geojson/src/components/custom';
6157
6246
  import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
6158
6247
  import type { Group as TweenGroup } from '@tweenjs/tween.js';
6248
+ import { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/style';
6159
6249
  /**
6160
6250
  * The state of an entity, which can be a geometry, geometry group, group container, path, model, label, or marker.
6161
6251
  */
@@ -6210,6 +6300,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6210
6300
  outline?: boolean;
6211
6301
  showImage?: boolean;
6212
6302
  flipImageToFaceCamera?: boolean;
6303
+ side?: MaterialSide;
6213
6304
  };
6214
6305
  export type Shading = {
6215
6306
  start?: number;
@@ -6228,6 +6319,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6228
6319
  join?: 'round' | 'bevel' | 'miter';
6229
6320
  shading?: Shading;
6230
6321
  outline?: boolean;
6322
+ side?: MaterialSide;
6231
6323
  };
6232
6324
  export type Layer = {
6233
6325
  id: string;
@@ -6409,10 +6501,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6409
6501
  */
6410
6502
  'user-interaction-end': undefined;
6411
6503
  /**
6412
- * Fired when a geometry is in focus, meaning it occupies the area closest to the center of the screen. This will only be true for one geometry at a time.
6504
+ * Fired when a geometry is in focus, meaning it occupies the area closest to the center of the screen. Is an array of geometry IDs sorted by most likely to be in focus.
6413
6505
  * Geometries can be added to the focus listener via `mapView.setState(.., { focusable: true })`.
6414
6506
  */
6415
- 'geometry-in-focus': string | number | null;
6507
+ 'geometry-in-focus': string[];
6416
6508
  /**
6417
6509
  * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
6418
6510
  */
@@ -6443,6 +6535,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6443
6535
  canvasHeight: number;
6444
6536
  /** Global group for all tweens */
6445
6537
  tweenGroup: TweenGroup;
6538
+ cameraObject: Camera;
6446
6539
  };
6447
6540
  }
6448
6541
 
@@ -7508,6 +7601,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
7508
7601
  export function cyrb53(str: string, seed?: number): number;
7509
7602
  export const linearEase: (t: number) => number;
7510
7603
  export const quadEaseIn: (t: number) => number;
7604
+ export const easeIn: (x: number) => number;
7511
7605
  export const quadEaseOut: (t: number) => number;
7512
7606
  export function interpolate(value: number, inputMin: number, inputMax: number, outputMin: number, outputMax: number, easeFunc?: (t: number) => number): number;
7513
7607
  export function interpolateMulti(value: number, inputRange: number[], outputRange: number[], easeFunc?: (t: number) => number): number;
@@ -7781,6 +7875,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7781
7875
  Shapes: Shapes;
7782
7876
  Style: Style;
7783
7877
  Images: Images;
7878
+ get DynamicFocus(): import("./dynamic-focus").DynamicFocus;
7784
7879
  get StackedMaps(): import("..").StackedMaps;
7785
7880
  constructor(rendererCore: RendererCore, mapView: MapView);
7786
7881
  updateState<T extends Space | MapObject | Label | Shape | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
@@ -7824,6 +7919,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7824
7919
  import type { Space, Door, PointOfInterest, MapObject, Node, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7825
7920
  import { type GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
7826
7921
  import { FloorStackObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object';
7922
+ import { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
7923
+ export const FLOOR_HEIGHT = 5;
7827
7924
  export class GeojsonApiMapObject extends PubSub<{
7828
7925
  'floor-change': {
7829
7926
  reason?: TFloorChangeReason;
@@ -7842,21 +7939,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7842
7939
  path: Path;
7843
7940
  };
7844
7941
  }> {
7942
+ #private;
7845
7943
  floorStacksById: Map<string, FloorStackObject>;
7846
7944
  floorsById: Map<string, FloorObject>;
7847
7945
  currentFloorId: string;
7848
7946
  currentFloorStackId: string;
7947
+ outdoorFloorStacks: Set<string>;
7849
7948
  id: string;
7850
7949
  renderer: RendererCore;
7851
7950
  api: GeoJsonApi;
7852
7951
  mvf: ParsedMVF;
7853
7952
  styleMap: AggregatedStyleMap;
7854
7953
  StackedMaps: StackedMaps;
7954
+ DynamicFocus: DynamicFocus;
7855
7955
  get currentFloorStack(): FloorStackObject;
7856
7956
  setFloorStack(floorStackId: string): void;
7857
7957
  get currentFloor(): FloorObject;
7858
7958
  /** @deprecated use `currentFloorStack.floorObjects` or `floorsById` instead */
7859
7959
  get floors(): FloorObject[];
7960
+ processFloorChange(floorId: string): void;
7860
7961
  setFloor(floorId: string, reason?: TFloorChangeReason): void;
7861
7962
  Models: {
7862
7963
  add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
@@ -7968,6 +8069,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
7968
8069
  * Refer to the [Markers Guide](https://developer.mappedin.com/web-sdk/markers) for more information and interactive examples.
7969
8070
  */
7970
8071
  export class Marker {
8072
+ #private;
7971
8073
  /**
7972
8074
  * The marker's id
7973
8075
  */
@@ -7976,7 +8078,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
7976
8078
  * @internal
7977
8079
  */
7978
8080
  static readonly __type = "Marker";
7979
- readonly target: Space | Door | Coordinate | Node;
8081
+ get target(): Coordinate | Space | Door | Node;
7980
8082
  /**
7981
8083
  * @internal
7982
8084
  */
@@ -7996,6 +8098,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
7996
8098
  * @internal
7997
8099
  */
7998
8100
  constructor(id: string, contentEl: HTMLElement, target: Space | Door | Coordinate | Node);
8101
+ /**
8102
+ * @internal
8103
+ */
8104
+ updateTarget(target: Space | Door | Coordinate | Node): void;
7999
8105
  }
8000
8106
  }
8001
8107
 
@@ -8605,7 +8711,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
8605
8711
  import { type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
8606
8712
  import type { Directions, GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
8607
8713
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
8608
- import type { FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8714
+ import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8609
8715
  import { Path, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8610
8716
  import type { RendererCore } from '@mappedin/core-sdk';
8611
8717
  /**
@@ -8800,6 +8906,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
8800
8906
  * The current list of floor stacks along the navigation paths.
8801
8907
  */
8802
8908
  get floorStacks(): FloorStack[];
8909
+ /**
8910
+ * The current list of floors along the navigation paths.
8911
+ */
8912
+ get floors(): Floor[];
8803
8913
  /**
8804
8914
  * Sets the active path by index.
8805
8915
  */
@@ -9018,7 +9128,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
9018
9128
 
9019
9129
  declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
9020
9130
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
9021
- import { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9131
+ import type { Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9132
+ import { EnterpriseLocation, EnterpriseCategory } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9022
9133
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
9023
9134
  import { z } from 'zod';
9024
9135
  export class InternalSearch {
@@ -9373,6 +9484,52 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search/external' {
9373
9484
  };
9374
9485
  }
9375
9486
 
9487
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
9488
+ import type { Annotation, Coordinate, Door, MapDataInternal, Node, PointOfInterest } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9489
+ /**
9490
+ * Query allows users to query for nodes, locations, categories, and other points of interest within the venue.
9491
+ */
9492
+ export class Query {
9493
+ #private;
9494
+ /**
9495
+ * @internal
9496
+ */
9497
+ constructor(mapDataInternal: MapDataInternal);
9498
+ /**
9499
+ * Find the nearest feature to the origin
9500
+ * @param origin - The origin object
9501
+ * @param options - The options for the query
9502
+ * @returns The nearest feature to the origin
9503
+ */
9504
+ nearest(origin: Coordinate | PointOfInterest | Door | Annotation | Node, options: TFindNearestOptions): TFindNearestResult | undefined;
9505
+ }
9506
+ export type TFindNearestResult = {
9507
+ distance: number;
9508
+ feature: TQueriables;
9509
+ }[];
9510
+ export type TFindNearestOptions = {
9511
+ /**
9512
+ * Limit query to a set of floors. Only applies if the origin has floor information. If it doesn't, it limits the query to all floor-stacks' default floors.
9513
+ *
9514
+ * @default 'same-floor'
9515
+ */
9516
+ limit?: 'same-floor'
9517
+ /**
9518
+ * Limit query to all floors at the same elevation as the origin
9519
+ */
9520
+ | 'same-elevation';
9521
+ /**
9522
+ * The radius to search for features within
9523
+ */
9524
+ radius?: number;
9525
+ /**
9526
+ * The types to query for
9527
+ */
9528
+ types: [TQueriables['__type'], ...TQueriables['__type'][]];
9529
+ };
9530
+ export type TQueriables = PointOfInterest | Door | Annotation | Node;
9531
+ }
9532
+
9376
9533
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
9377
9534
  /**
9378
9535
  * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
@@ -9584,6 +9741,90 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-obje
9584
9741
  }
9585
9742
  }
9586
9743
 
9744
+ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
9745
+ import { QuadTree } from '@packages/internal/quad-tree';
9746
+ import './style.scss';
9747
+ import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
9748
+ import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
9749
+ import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
9750
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
9751
+ import type { TSerializedCollider, TSerializedColliderResponse } from '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor';
9752
+ import type { WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
9753
+ export type TMessageEvent = MessageEvent<{
9754
+ msgId: string;
9755
+ colliders: TSerializedColliderResponse[];
9756
+ debug: {
9757
+ x: number;
9758
+ y: number;
9759
+ w: number;
9760
+ h: number;
9761
+ }[];
9762
+ }>;
9763
+ export type TMessage = {
9764
+ msgId: string;
9765
+ totalWidth: number;
9766
+ totalHeight: number;
9767
+ watermarkWidth: number;
9768
+ watermarkHeight: number;
9769
+ watermarkPosition: WatermarkPosition;
9770
+ colliders: TSerializedCollider[];
9771
+ devicePixelRatio: number;
9772
+ };
9773
+ type TCollisionSystemEvent = {
9774
+ 'visibility-changed': undefined;
9775
+ };
9776
+ export type PackedBBox = [x: number, y: number, w: number, h: number, index: number];
9777
+ export type PackedBBoxes = PackedBBox[];
9778
+ export type PackedCollider = [
9779
+ bboxes: PackedBBoxes,
9780
+ enabled: 0 | 1,
9781
+ alwaysVisible: 0 | 1,
9782
+ x: number,
9783
+ y: number,
9784
+ shouldCollideWithScreenEdges?: 0 | 1,
9785
+ onlyExposeStrategyIndex?: number
9786
+ ];
9787
+ export type PackedMessage = [
9788
+ colliders: PackedCollider[],
9789
+ devicePixelRatio: number,
9790
+ totalHeight: number,
9791
+ totalWidth: number,
9792
+ watermarkWidth: number,
9793
+ watermarkHeight: number,
9794
+ watermarkPosition: WatermarkPosition
9795
+ ];
9796
+ export class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
9797
+ collidersDirty: boolean;
9798
+ packedMessage: PackedMessage;
9799
+ visibleCollidersQTree: QuadTree<{
9800
+ entityId: string | number;
9801
+ }>;
9802
+ interactiveCollidersQTree: QuadTree<{
9803
+ entityId: string | number;
9804
+ }>;
9805
+ coreState: RendererState;
9806
+ constructor(debugCanvas: HTMLCanvasElement, coreState: RendererState, worker?: Worker);
9807
+ postMessage: () => void;
9808
+ showCollisionBoxes: () => void;
9809
+ hideCollisionBoxes: () => void;
9810
+ currentMsgId: string;
9811
+ working: boolean;
9812
+ componentArray: (MarkerComponent | LabelComponent)[];
9813
+ update: (watermarkWidth: number, watermarkHeight: number, watermarkPosition?: WatermarkPosition, useAllStrategies?: boolean) => void;
9814
+ resize(watermarkWidth: number, watermarkHeight: number, watermarkPosition: WatermarkPosition): void;
9815
+ /**
9816
+ * Resolve collisions
9817
+ */
9818
+ resolve: (e: MessageEvent<{
9819
+ msgId: string;
9820
+ colliders: TSerializedColliderResponse[];
9821
+ }>) => void;
9822
+ drawDebug: () => void;
9823
+ destroy: () => void;
9824
+ }
9825
+ export {};
9826
+ }
9827
+
9587
9828
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
9588
9829
  import { Object3D } from 'three';
9589
9830
  import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
@@ -9911,12 +10152,68 @@ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
9911
10152
  set visible(visible: boolean);
9912
10153
  position: Vector3;
9913
10154
  }
9914
- }
9915
-
9916
- declare module '@mappedin/mappedin-js/geojson/src/entities' {
9917
- export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
9918
- export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
9919
- export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
10155
+ }
10156
+
10157
+ declare module '@mappedin/mappedin-js/geojson/src/entities' {
10158
+ export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
10159
+ export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
10160
+ export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
10161
+ }
10162
+
10163
+ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
10164
+ import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
10165
+ export const DEFAULT_COLOR = "#ffffff";
10166
+ export const DEFAULT_HEIGHT = 0.1;
10167
+ /**
10168
+ * Determines how a material is rendered, back face, front face or both (default)
10169
+ */
10170
+ export type MaterialSide = 'back' | 'front' | 'double';
10171
+ type Style = {
10172
+ color: string;
10173
+ width: number;
10174
+ opacity: number;
10175
+ visible: boolean;
10176
+ height: number;
10177
+ altitude: number;
10178
+ join: LineStyle['join'];
10179
+ cap: LineStyle['cap'];
10180
+ topColor?: string;
10181
+ texture?: string;
10182
+ topTexture?: string;
10183
+ outline: boolean;
10184
+ showImage: boolean;
10185
+ showTextLabel: boolean;
10186
+ flipImageToFaceCamera: boolean;
10187
+ flipTextToFaceCamera: boolean;
10188
+ url?: string;
10189
+ side?: MaterialSide;
10190
+ };
10191
+ export class StyleComponent implements Style {
10192
+ initialColor: string;
10193
+ color: string;
10194
+ topColor?: string;
10195
+ topTexture?: string;
10196
+ texture?: string;
10197
+ hoverColor?: string;
10198
+ dirty: boolean;
10199
+ visible: boolean;
10200
+ opacity: number;
10201
+ width: number;
10202
+ height: number;
10203
+ initialHeight: number;
10204
+ altitude: number;
10205
+ join: LineStyle['join'];
10206
+ cap: LineStyle['cap'];
10207
+ outline: boolean;
10208
+ showImage: boolean;
10209
+ showTextLabel: boolean;
10210
+ flipImageToFaceCamera: boolean;
10211
+ flipTextToFaceCamera: boolean;
10212
+ url?: string;
10213
+ side: MaterialSide;
10214
+ constructor(style?: Partial<Style>);
10215
+ }
10216
+ export {};
9920
10217
  }
9921
10218
 
9922
10219
  declare module '@mappedin/mappedin-js/geojson/src/types/options' {
@@ -10047,82 +10344,6 @@ declare module '@mappedin/mappedin-js/packages/common/pubsub' {
10047
10344
  }
10048
10345
  }
10049
10346
 
10050
- declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
10051
- import { QuadTree } from '@packages/internal/quad-tree';
10052
- import './style.scss';
10053
- import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
10054
- import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
10055
- import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
10056
- import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10057
- import type { TSerializedCollider, TSerializedColliderResponse } from '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor';
10058
- import type { WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
10059
- export type TMessageEvent = MessageEvent<{
10060
- msgId: string;
10061
- colliders: TSerializedColliderResponse[];
10062
- debug: {
10063
- x: number;
10064
- y: number;
10065
- w: number;
10066
- h: number;
10067
- }[];
10068
- }>;
10069
- export type TMessage = {
10070
- msgId: string;
10071
- totalWidth: number;
10072
- totalHeight: number;
10073
- watermarkWidth: number;
10074
- watermarkHeight: number;
10075
- watermarkPosition: WatermarkPosition;
10076
- colliders: TSerializedCollider[];
10077
- devicePixelRatio: number;
10078
- };
10079
- type TCollisionSystemEvent = {
10080
- 'visibility-changed': undefined;
10081
- };
10082
- export type PackedBBox = [x: number, y: number, w: number, h: number];
10083
- export type PackedBBoxes = PackedBBox[];
10084
- export type PackedCollider = [bboxes: PackedBBoxes, enabled: 0 | 1, alwaysVisible: 0 | 1, x: number, y: number];
10085
- export type PackedMessage = [
10086
- colliders: PackedCollider[],
10087
- devicePixelRatio: number,
10088
- totalHeight: number,
10089
- totalWidth: number,
10090
- watermarkWidth: number,
10091
- watermarkHeight: number,
10092
- watermarkPosition: WatermarkPosition
10093
- ];
10094
- export class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
10095
- dirty: boolean;
10096
- packedMessage: PackedMessage;
10097
- visibleCollidersQTree: QuadTree<{
10098
- entityId: string | number;
10099
- }>;
10100
- interactiveCollidersQTree: QuadTree<{
10101
- entityId: string | number;
10102
- }>;
10103
- coreState: RendererState;
10104
- constructor(debugCanvas: HTMLCanvasElement, coreState: RendererState, worker?: Worker);
10105
- postMessage: () => void;
10106
- showCollisionBoxes: () => void;
10107
- hideCollisionBoxes: () => void;
10108
- currentMsgId: string;
10109
- working: boolean;
10110
- componentArray: (MarkerComponent | LabelComponent)[];
10111
- update: (watermarkWidth: number, watermarkHeight: number, watermarkPosition?: WatermarkPosition) => void;
10112
- resize(watermarkWidth: number, watermarkHeight: number, watermarkPosition: WatermarkPosition): void;
10113
- /**
10114
- * Resolve collisions
10115
- */
10116
- resolve: (e: MessageEvent<{
10117
- msgId: string;
10118
- colliders: TSerializedColliderResponse[];
10119
- }>) => void;
10120
- drawDebug: () => void;
10121
- destroy: () => void;
10122
- }
10123
- export {};
10124
- }
10125
-
10126
10347
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions' {
10127
10348
  export { InteractionSystem } from '@mappedin/mappedin-js/geojson/src/systems/interactions/system';
10128
10349
  }
@@ -10200,6 +10421,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-projection/system'
10200
10421
  declare module '@mappedin/mappedin-js/geojson/src/systems/2d-draw/system' {
10201
10422
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10202
10423
  import LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
10424
+ export const INACTIVE_MARKER_SIZE_NO_ICON = 3.5;
10203
10425
  enum TEXTALIGN {
10204
10426
  LEFT = "left",
10205
10427
  CENTER = "center",
@@ -10274,10 +10496,11 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-visibility/system'
10274
10496
  }> {
10275
10497
  state: RendererState;
10276
10498
  constructor(state: RendererState);
10277
- animating: Map<LabelComponent, number>;
10499
+ animating: Map<LabelComponent, [number, number]>;
10278
10500
  isAnimating: boolean;
10279
10501
  startTime: number;
10280
- duration: number;
10502
+ showDuration: number;
10503
+ hideDuration: number;
10281
10504
  update: () => void;
10282
10505
  playAnimations: () => void;
10283
10506
  _playAnimations(): void;
@@ -10320,6 +10543,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/dom-draw/system' {
10320
10543
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10321
10544
  export const ANIMATION_DURATION = 300;
10322
10545
  export class DOMDrawSystem {
10546
+ #private;
10323
10547
  state: RendererState;
10324
10548
  constructor(state: RendererState);
10325
10549
  update(isUserInteracting: boolean): void;
@@ -10579,16 +10803,19 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
10579
10803
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10580
10804
  import { type PerspectiveCamera } from 'three';
10581
10805
  export class GeometryInFocusSystem extends PubSub<{
10582
- 'geometry-in-focus': string | number | null;
10806
+ /**
10807
+ * Returns the list of entities that are likely in focus, sorted by the weight of the raycast.
10808
+ */
10809
+ 'geometry-in-focus': string[];
10583
10810
  }> {
10584
- #private;
10585
- cameraDirty: boolean;
10586
- focusablesDirty: boolean;
10587
- constructor(state: RendererState, camera: PerspectiveCamera);
10588
- resize(): void;
10589
- update: () => void;
10590
- updateRaf(): void;
10591
- destroy(): void;
10811
+ #private;
10812
+ cameraDirty: boolean;
10813
+ focusablesDirty: boolean;
10814
+ constructor(state: RendererState, camera: PerspectiveCamera);
10815
+ resize(): void;
10816
+ update: () => void;
10817
+ updateRaf(): void;
10818
+ destroy(): void;
10592
10819
  }
10593
10820
  }
10594
10821
 
@@ -10792,10 +11019,15 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
10792
11019
  }
10793
11020
 
10794
11021
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
10795
- import type { FloorProperties as MVFFloor, ParsedMVF } from '@mappedin/mvf';
11022
+ import type { Polygon, MultiPolygon, FloorProperties as MVFFloor, ParsedMVF, Feature } from '@mappedin/mvf';
10796
11023
  import type { RendererCore } from '@mappedin/core-sdk';
10797
11024
  import type { AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
10798
11025
  import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
11026
+ class Layer {
11027
+ containerId: string;
11028
+ layers: Map<string, string>;
11029
+ constructor(containerId: string, layers?: Map<any, any>);
11030
+ }
10799
11031
  export class FloorObject implements MVFFloor {
10800
11032
  id: string;
10801
11033
  name?: string;
@@ -10805,11 +11037,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
10805
11037
  metadata?: Partial<Record<string, unknown>> | undefined;
10806
11038
  shortName?: string | undefined;
10807
11039
  subtitle?: string | undefined;
10808
- layers: Map<string, string>;
11040
+ layers: Map<string, Layer>;
11041
+ footprint?: Feature<Polygon | MultiPolygon | null, MVFFloor>;
10809
11042
  floorStackId: string;
10810
- constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
11043
+ constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, multiFloorView: Required<TShow3DMapOptions['multiFloorView']>, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
10811
11044
  load: () => this;
11045
+ get visible(): boolean;
11046
+ setVisible(visible: boolean): void;
10812
11047
  }
11048
+ export {};
10813
11049
  }
10814
11050
 
10815
11051
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
@@ -10851,78 +11087,66 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
10851
11087
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
10852
11088
  export const getTargetID: <T extends Space | Shape | MapObject | Label | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
10853
11089
  export function tweenToPromise(tween: Tween): Promise<void>;
11090
+ export function unique<T>(array: T[]): T[];
10854
11091
  }
10855
11092
 
10856
11093
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object' {
10857
11094
  import type { RendererCore } from '@mappedin/core-sdk';
10858
- import type { FloorId, FloorStack as MVFFloorStack } from '@mappedin/mvf';
11095
+ import type { FloorId, FloorStack as MVFFloorStack, Facade as MVFFacade } from '@mappedin/mvf';
10859
11096
  import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
10860
- export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors'> {
11097
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor'> {
11098
+ #private;
10861
11099
  id: MVFFloorStack['id'];
10862
11100
  externalId: MVFFloorStack['externalId'];
10863
11101
  name: MVFFloorStack['name'];
10864
11102
  type: MVFFloorStack['type'];
10865
11103
  floorIds: FloorId[];
11104
+ defaultFloorId?: MVFFloorStack['defaultFloor'];
10866
11105
  /** Sorted floor objects by elevation */
10867
11106
  floorObjects: FloorObject[];
10868
11107
  floorObjectsByElevation: Map<number, FloorObject>;
10869
11108
  metadata?: MVFFloorStack['metadata'];
10870
11109
  footprint?: MVFFloorStack['footprint'];
10871
11110
  containerId: string;
10872
- constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore);
11111
+ facade?: MVFFacade;
11112
+ constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore, facade?: MVFFacade);
10873
11113
  get defaultFloor(): FloorObject;
10874
11114
  addFloor(floor: FloorObject): void;
11115
+ setFacadeVisible(visible: boolean): void;
10875
11116
  }
10876
11117
  }
10877
11118
 
10878
- declare module '@mappedin/mappedin-js/geojson/src/components/style' {
10879
- import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
10880
- export const DEFAULT_COLOR = "#ffffff";
10881
- export const DEFAULT_HEIGHT = 0.1;
10882
- type Style = {
10883
- color: string;
10884
- width: number;
10885
- opacity: number;
10886
- visible: boolean;
10887
- height: number;
10888
- altitude: number;
10889
- join: LineStyle['join'];
10890
- cap: LineStyle['cap'];
10891
- topColor?: string;
10892
- texture?: string;
10893
- topTexture?: string;
10894
- outline: boolean;
10895
- showImage: boolean;
10896
- showTextLabel: boolean;
10897
- flipImageToFaceCamera: boolean;
10898
- flipTextToFaceCamera: boolean;
10899
- url?: string;
11119
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus' {
11120
+ export { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
11121
+ }
11122
+
11123
+ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
11124
+ import { Rectangle } from '@packages/internal/quad-tree';
11125
+ export type TSerializedCollider = {
11126
+ rank: number;
11127
+ enabled: boolean;
11128
+ x: number;
11129
+ y: number;
11130
+ bboxes: {
11131
+ index: number;
11132
+ boundingBox: [number, number, number, number];
11133
+ boundingRect?: Rectangle;
11134
+ }[];
11135
+ shouldCollideWithScreenEdges?: boolean;
11136
+ lockedToStrategyIndex?: number;
11137
+ visible?: boolean;
11138
+ };
11139
+ export type TSerializedColliderResponse = [number, 1 | 0, Rectangle?];
11140
+ export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, watermarkPosition: any, msgId?: string): {
11141
+ msgId: string;
11142
+ colliders: TSerializedColliderResponse[];
11143
+ debug: {
11144
+ x: number;
11145
+ y: number;
11146
+ w: number;
11147
+ h: number;
11148
+ }[];
10900
11149
  };
10901
- export class StyleComponent implements Style {
10902
- initialColor: string;
10903
- color: string;
10904
- topColor?: string;
10905
- topTexture?: string;
10906
- texture?: string;
10907
- hoverColor?: string;
10908
- dirty: boolean;
10909
- visible: boolean;
10910
- opacity: number;
10911
- width: number;
10912
- height: number;
10913
- initialHeight: number;
10914
- altitude: number;
10915
- join: LineStyle['join'];
10916
- cap: LineStyle['cap'];
10917
- outline: boolean;
10918
- showImage: boolean;
10919
- showTextLabel: boolean;
10920
- flipImageToFaceCamera: boolean;
10921
- flipTextToFaceCamera: boolean;
10922
- url?: string;
10923
- constructor(style?: Partial<Style>);
10924
- }
10925
- export {};
10926
11150
  }
10927
11151
 
10928
11152
  declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
@@ -10940,7 +11164,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
10940
11164
  export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
10941
11165
  export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
10942
11166
  export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
10943
- export function updateHeight(entity: Geometry3D, update?: number): boolean;
11167
+ export function updateHeight(entity: Geometry3D | GeometryGroupObject3D, state: RendererState, update?: number): boolean;
10944
11168
  export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
10945
11169
  export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
10946
11170
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
@@ -10951,7 +11175,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
10951
11175
  export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
10952
11176
  export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
10953
11177
  export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
10954
- export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
11178
+ export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): boolean;
10955
11179
  export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
10956
11180
  export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
10957
11181
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
@@ -10961,33 +11185,6 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
10961
11185
  export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
10962
11186
  }
10963
11187
 
10964
- declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
10965
- import { Rectangle } from '@packages/internal/quad-tree';
10966
- export type TSerializedCollider = {
10967
- rank: number;
10968
- enabled: boolean;
10969
- x: number;
10970
- y: number;
10971
- bboxes: {
10972
- index: number;
10973
- boundingBox: [number, number, number, number];
10974
- boundingRect?: Rectangle;
10975
- }[];
10976
- shouldCollideWithScreenEdges?: boolean;
10977
- };
10978
- export type TSerializedColliderResponse = [number, boolean, Rectangle?];
10979
- export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, watermarkPosition: any, msgId?: string): {
10980
- msgId: string;
10981
- colliders: TSerializedColliderResponse[];
10982
- debug: {
10983
- x: number;
10984
- y: number;
10985
- w: number;
10986
- h: number;
10987
- }[];
10988
- };
10989
- }
10990
-
10991
11188
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
10992
11189
  import type { PerspectiveCamera, Vector3, Object3D, Mesh } from 'three';
10993
11190
  import { Raycaster } from 'three';
@@ -11039,7 +11236,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
11039
11236
  entityId: Geometry2D['id'];
11040
11237
  }>;
11041
11238
  _container: HTMLCanvasElement;
11042
- constructor(container: HTMLCanvasElement, coreState: RendererState, camera: PerspectiveCamera, cameraPlane: Mesh);
11239
+ constructor(container: HTMLCanvasElement, coreState: RendererState, camera: PerspectiveCamera, cameraPlane: Mesh, isUserInteracting: () => boolean);
11043
11240
  updateQuadtree(takeIT: QuadTree<{
11044
11241
  entityId: Geometry2D['id'];
11045
11242
  }>): void;
@@ -11119,6 +11316,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
11119
11316
  #private;
11120
11317
  dirty: boolean;
11121
11318
  zoomDirty: boolean;
11319
+ rotationDirty: boolean;
11122
11320
  /**
11123
11321
  * Factor that controls how fast zooming in and out happens in response to mouse wheel events
11124
11322
  *
@@ -19569,11 +19767,10 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator'
19569
19767
 
19570
19768
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/navigator' {
19571
19769
  import type { Position, Feature, MultiPolygon, Polygon } from 'geojson';
19572
- import type { NodeCollection, NodeFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
19770
+ import type { NodeCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
19573
19771
  import type { ObstructionCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/obstruction';
19574
19772
  import type { SpaceCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/space';
19575
19773
  import type { DirectionsCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/directions';
19576
- import type { CoordinateFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coordinate';
19577
19774
  /**
19578
19775
  * Options for simplifying directions in the Navigator class.
19579
19776
  */
@@ -19617,7 +19814,6 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
19617
19814
  geojsonCollection?: ObstructionCollection | SpaceCollection;
19618
19815
  groupBy?: string;
19619
19816
  });
19620
- findNearestNode: (feature: CoordinateFeature) => NodeFeature | null;
19621
19817
  /**
19622
19818
  * Calculates and returns a set of directions from origin nodes to destination nodes, including detailed properties.
19623
19819
  *
@@ -19766,6 +19962,77 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coord
19766
19962
  export type CoordinateFeature = Feature<Point, CoordinateProperties>;
19767
19963
  }
19768
19964
 
19965
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
19966
+ import { type RendererCore } from '@mappedin/core-sdk';
19967
+ import { PubSub } from '@packages/internal/common';
19968
+ import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
19969
+ import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
19970
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
19971
+ /**
19972
+ * @experimental
19973
+ * @internal
19974
+ */
19975
+ export type TDynamicFocusEvents = {
19976
+ 'focus-change': {
19977
+ facades: string[];
19978
+ spaces: string[];
19979
+ };
19980
+ };
19981
+ /**
19982
+ * @experimental
19983
+ * @internal
19984
+ */
19985
+ export type TDynamicFocusOptions = {
19986
+ /**
19987
+ * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
19988
+ * @default 17
19989
+ */
19990
+ minZoomLevel?: number;
19991
+ };
19992
+ /**
19993
+ * @experimental
19994
+ * @internal
19995
+ */
19996
+ export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
19997
+ #private;
19998
+ /** @internal */
19999
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
20000
+ currentMapGetter: CurrentMapGetter;
20001
+ });
20002
+ /**
20003
+ * @experimental
20004
+ * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
20005
+ */
20006
+ enable(options?: TDynamicFocusOptions): void;
20007
+ /**
20008
+ * @experimental
20009
+ * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
20010
+ */
20011
+ disable(): void;
20012
+ /**
20013
+ * @experimental
20014
+ * Returns the enabled state of Dynamic Focus.
20015
+ */
20016
+ get enabled(): boolean;
20017
+ /**
20018
+ * @experimental
20019
+ * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
20020
+ * See {@link resetDefaultFloorForStack} to reset the default floor.
20021
+ * @param floorStack - The floor stack to set the default floor for.
20022
+ * @param floor - The floor to set as the default floor.
20023
+ */
20024
+ setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
20025
+ /**
20026
+ * @experimental
20027
+ * Resets the default floor for a floor stack to it's initial value.
20028
+ * @param floorStack - The floor stack to reset the default floor for.
20029
+ */
20030
+ resetDefaultFloorForStack(floorStack: FloorStack): void;
20031
+ }
20032
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
20033
+ export {};
20034
+ }
20035
+
19769
20036
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
19770
20037
  export enum TapType {
19771
20038
  onefinger = 0,